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 == 1
imwrite(A,map,filename,'gif','LoopCount',Inf,'DelayTime',0.1); % DelayTime表示写入的时间间隔
else
imwrite(A,map,filename,'gif','WriteMode','append','DelayTime',0.1);
end
end
简单示例:将红心保存为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 equal
axis([-3 3 -3 3 -4 1]);
shading interp
colormap([1 0 0])
light('Position',[2 1 2])
% 写入gif过程
CurrFrame = getframe; % 获取像素,否则无法显示动画
im = frame2im(CurrFrame); %
[A,map] = rgb2ind(im,256); % 将RGB图像转换为索引图像
if i == 1
imwrite(A,map,filename,'gif','LoopCount',Inf,'DelayTime',0.1); % DelayTime表示写入的时间间隔
else
imwrite(A,map,filename,'gif','WriteMode','append','DelayTime',0.1);
end
end
效果演示: