• 大小: 9.08MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-23
  • 语言: Matlab
  • 标签: 动画制作  

资源简介

利用MATLAB编写的各种炫丽的图片切换动画效果,内附将图像动画存储为GIF文件的程序,包括完整m文件及图片文件,经过多次调试可直接运行。原理及代码详细解释可参考本人博文。

资源截图

代码片段和文件信息

%作品:图片切换动画效果
%作者:吴限 
%2018.3.14
function imageswitch()
%需显示的图片文件名预存
S=char(‘BingWallpaper-2016-09-27.jpg‘...
    ‘BingWallpaper-2016-10-07.jpg‘...
    ‘BingWallpaper-2016-10-13.jpg‘...
    ‘BingWallpaper-2016-10-14.jpg‘...
    ‘BingWallpaper-2016-12-26.jpg‘);
Imagename=cellstr(S);
%% 读入图片
I1=imread(Imagename{1});I2=imread(Imagename{2});
I3=imread(Imagename{3});I4=imread(Imagename{4});
I5=imread(Imagename{5});
%% 转换存储格式为double
I1=im2double(I1);I2=im2double(I2);I3=im2double(I3);
I4=im2double(I4);I5=im2double(I5);
%% 
[xyz]=size(I1);
Im=I1;
%% 创建图形窗口并设置图形对象初始属性
hFigure=figure(‘menubar‘‘none‘‘Numbertitle‘‘off‘‘position‘...
    [1000 1000 720 450]‘name‘‘图片切换动画效果‘);
movegui(hFigure‘center‘);
axes(‘Visible‘‘off‘‘units‘‘normalized‘‘position‘[0 0 1 1]);
% 显示图片
hIm=imshow(Im);

step=x/10;%渐变步长
Length=(y-x)/2;

while 1
    % 动画效果一
    for i=step:step:x
        % 改变图像数据
        Im(1:i1:Length:)=I2(x-i+1:x1:Length:);
        Im(x-i+1:xy-Length+1:y:)=I2(1:iy-Length+1:y:);

        Im(1:x/2Length+1:Length+i:)=I2(1:x/2y-Length-i+1:y-Length:);
        Im(x/2+1:xy-Length-i+1:y-Length:)=I2(x/2+1:xLength+1:Length+i:);
        
        set(hIm‘CData‘Im);%设置image对象CData属性为Im
        drawnow ;%重绘当前图形窗口
    end
   
     % 动画效果二
    Im=I2;
    for i=x:-step:step
        Im=I4;
        Im(x-i+1:x1:Length:)=I3(1:i1:Length:);
        Im(1:iy-Length+1:y:)=I3(x-i+1:xy-Length+1:y:);
        
        Im(x/2-i/2+1:x/2+i/2y/2-i/2+1:y/2+i/2:)=I3(x/2-i/2+1:x/2+i/2y/2-i/2+1:y/2+i/2:);
        set(hIm‘CData‘Im);%设置image对象CData属性为Im
        drawnow ;%重绘当前图形窗口
    end
    
    
    %动画效果三
    Im=I3;
    for i=x:-step:step
        Im=I1;
        Im(1:i1:Length:)=I4(x-i+1:x1:Length:);
        Im(x-i+1:xy-Length+1:y:)=I4(1:iy-Length+1:y:);
        
        Im(1:x/2Length+1:Length+i:)=I4(1:x/2y-Length-i+1:y-Length:);
        Im(x/2+1:xy-Length-i+1:y-Length:)=I4(x/2+1:xLength+1:Length+i:);
  
        set(hIm‘CData‘Im);%设置image对象CData属性为Im
        drawnow  ;%重绘当前图形窗口
    end
    
    %动画效果四
    Im=I4;
    for i=1:step:x
        Im(x-i+1:x1:Length:)=I5(1:i1:Length:);
        Im(1:iy-Length+1:y:)=I5(x-i+1:xy-Length+1:y:);
        
        Im(x/2-i/2+1:x/2+i/2y/2-i/2+1:y/2+i/2:)=I5(x/2-i/2+1:x/2+i/2y/2-i/2+1:y/2+i/2:);
        
        set(hIm‘CData‘Im);%设置image对象CData属性为Im
        drawnow ;%重绘当前图形窗口
    end
    
    Im=I5;
end
end


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     357261  2018-02-19 22:04  imageswitch\BingWallpaper-2016-09-27.jpg

     文件     338050  2018-02-19 22:04  imageswitch\BingWallpaper-2016-10-07.jpg

     文件     875950  2018-02-19 22:04  imageswitch\BingWallpaper-2016-10-13.jpg

     文件     782985  2018-02-19 22:04  imageswitch\BingWallpaper-2016-10-14.jpg

     文件    1070492  2018-02-19 22:04  imageswitch\BingWallpaper-2016-12-26.jpg

     文件       2655  2018-03-15 16:34  imageswitch\imageswitch.m

     文件        913  2018-03-15 16:36  imageswitch\imageswitch1.m

     文件       1080  2018-03-15 16:37  imageswitch\imageswitch2.m

     文件       1043  2018-03-15 16:37  imageswitch\imageswitch3.m

     文件       1459  2018-03-15 16:38  imageswitch\imageswitch4.m

     文件    6218856  2018-03-15 16:38  imageswitch\movefig.gif

     目录          0  2018-03-15 16:39  imageswitch

----------- ---------  ---------- -----  ----

              9650744                    12


评论

共有 条评论