MATLAB实现将图片转化为gif格式的动画
gif格式的动画实质上就是连续播放一系列的图片来实现的。所以将图片连接起来保存到gif格式的文件中即可实现。
通用格式:
%% 保存为GIF格式clear;clc;close all;t = 0:0.5:10; % 设置间隔filename = 'test.gif'; % 打开或者创建一个gif文件for i = 1:length(t)%%% 绘制图像或者读取图像%%% 写入gif过程CurrFrame = getframe; % 获取像素,否则无法显示动画im = frame2im(CurrFrame); [A,map] = rgb2ind(im,256); % 将RGB图像转换为索引图像if i == 1imwrite(A,map,filename,'gif','LoopCount',Inf,'DelayTime',0.1); % DelayTime表示写入的时间间隔elseimwrite(A,map,filename,'gif','WriteMode','append','DelayTime',0.1);endend
简单示例:将红心保存为gif格式的图像。
%% 将小红心保存为GIF格式clear;clc;close all;t = 0:0.5:10; % 设置间隔filename = 'test.gif'; % 打开或者创建一个gif文件for i = 1:length(t)% 动画效果c = (1+0.3*cos(2*t(i)));th=0: pi/50: pi;phi=0: pi/50:2* pi;[Th, Phi]=meshgrid(th, phi);X=0.9* abs(Th).* sin(Th).* cos(Phi)*c;Y=abs(Th).* sin(Th).* sin(Phi)*c;Z=abs(Th).* cos(Th)*c;surf(X,Y,Z)axis equalaxis([-3 3 -3 3 -4 1]);shading interpcolormap([1 0 0])light('Position',[2 1 2])% 写入gif过程CurrFrame = getframe; % 获取像素,否则无法显示动画im = frame2im(CurrFrame); % [A,map] = rgb2ind(im,256); % 将RGB图像转换为索引图像if i == 1imwrite(A,map,filename,'gif','LoopCount',Inf,'DelayTime',0.1); % DelayTime表示写入的时间间隔elseimwrite(A,map,filename,'gif','WriteMode','append','DelayTime',0.1);endend
效果演示: