如何在MATLAB中创建动画GIF图像?

2,467意见(过去30天)
我想知道是否有MATLAB功能在MATLAB中创建一个动画GIF。

公认的答案

MathWorks支万博1manbetx持团队
使用“imwrite”功能创建动画GIF。动画GIF包含一系列图像,所有图像都合并到一个文件中。在本例中,
1.为函数y = x ^ n绘制一系列绘图,以实现不同的n值
2.将它们捕捉为图像
3.将它们写入GIF文件
h =图;
手动紧张%这确保getframe()返回一致的大小
filename =.'testAnimated.gif';
为了n=1:0.5:5
%绘制曲线图为y = x。^ n
x = 0:0.01:1;
y = x。^ n;
绘图(x,y)
drawn
%捕获绘图作为图像
框架= getframe(h);
im=帧2im(帧);
[imind,cm] = RGB2IND(IM,256);
%写入gif文件
如果n==1
imwrite(imind,cm,filename,“gif”'loopcount',inf);
别的
imwrite(imind,cm,filename,“gif”“WriteMode”'附加');
结尾
结尾
有关创建动画GIF文件的更详细说明,请参阅“imwrite”函数参考页上的“写入动画GIF”示例:
10评论
史蒂文勋爵
史蒂文勋爵 于2020年10月13日
为什么在自行评估时它会返回一个孩子的照片?
你考了什么 rgb2ind 你什么时候叫的?你打电话了吗 图片 在没有输入的情况下,使用 getframe 框架2IM ,然后打电话 rgb2ind 结果?如果是这样,孩子的照片不会来自 rgb2ind 但是从 图片 。Steve Eddins解释了发生了什么 这篇文章在他的博客上
至于什么 rgb2ind 线正在做: getframe 返回结构数组。 IMWRITE. 我不知道该怎么接受 塑造 数组作为其第一(或前两个)输入。 框架2IM 将该结构数组转换为 IMWRITE. 可以接受,但是图像可能比图像文件格式有更多的颜色支持万博1manbetx rgb2ind 修改图像以使用最多256色的颜色贴图。正是该图像和颜色贴图对 IMWRITE. 写入文件。
如果每次绘制表面图的边界框相同,我会期待这一点工作。但是,如果表面图旋转或放大(使每个帧占用的屏幕上的区域将是不同的)这将是一个问题。它就像打印一个报告,其中第一页上的一个 纸纸 ,第二个是3x5索引卡,第三个是一份法律规模纸。这不会是一个非常稳定的报告堆栈。

登录评论。

更多答案(3)

乍得格林
乍得格林 2017年6月4日
或者,对于更简单的选项,使用 gif 函数用于文件交换。

沙尚克雷
沙尚克雷 2017年5月1日
编辑:乍得格林 于2018年10月17日
x = 0:0.01:1;
图(1)
filename =.'testnew51.gif';
为了n=1:0.5:5
y = x。^ n;
绘图(x,y)
drawn
框架= GetFrame(1);
im=帧2im(帧);
[imind,cm] = RGB2IND(IM,256);
如果n==1;
imwrite(imind,cm,filename,“gif”'loopcount',inf);
别的
imwrite(imind,cm,filename,“gif”“WriteMode”'附加');
结尾
结尾
1条评论
科尔曼·巴里
科尔曼·巴里 2019年6月15日
谢谢你写这篇非常有用的文章作为一个框架来修改

登录评论。


亚历克
亚历克 2013年12月19日
因此,`imwrite`现在似乎支持写入动画灰度GIF“在写入多帧万博1manbetxGIF图像时,X应该是一个4维M-X-N-X-1-X-P数组,其中P是要写入的帧数。”
但是,如果我尝试通过M-by-N-by-3-by-P传递它,它似乎将每个RGB颜色通道视为一个单独的灰度帧。现在有没有办法在帧上不使用for循环来编写彩色GIF动画?

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始打猎吧!