资源简介
利用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
评论
共有 条评论