0
我终于可以设法获得连锁效果。我给它制作了动画并想将动画保存到GIF
文件中。将生成的动画作为GIF文件保存在MATLAB中
但我在gif
文件中得到一个固定的图像。
该动画在MATLAB中运行良好,但我不知道为什么它不会被保存。
im = imread('peppers.png');
[m,n,~] = size(im);
n = linspace(-4 * pi,4 * pi,n);
m = linspace(-4 * pi,4 * pi,m);
[X,Y] = meshgrid(m,n);
d = (X .^ 2 + Y .^ 2) .^ .5;
d = d/max(d(:));
d = (d - .5) * 2 * pi;
j = 1;
figure(1);
for i = 0 : .2 : 2 * pi
Z = cos(2 * d + i) .* exp(-.01 .* d);
h = warp(X,Y,Z,im);
axis equal; axis off;
f = getframe;
[I,~] = frame2im(f);
[I,cm] = rgb2ind(I,256);
if j == 1
imwrite(I,cm,'B.gif','gif', 'Loopcount',inf);
else
imwrite(I,'B.gif','gif','WriteMode','append','DelayTime',1/24);
end
j = 0;
end
问题1我如何保存它(或什么是当前的代码问题)?
问题2如何以没有白色背景的方式保存它?
(例如用view([0 45])
和一点点变焦)
感谢,
编辑感谢@ Ayb4btu,我做了一些改进,
但是使用close all
放缓事情下来,有时甚至getframe
捕获我的桌面!
谢谢,至少它节省了动画,+1 – Rashid 2014-11-21 09:36:37
@Kamtal是的,必须有一个更好的方式来做到这一点,但我不能不使用'close all'工作。如果你想出一个更优雅的解决方案,而不是这个“关闭所有”黑客,我会很感兴趣。 – Ayb4btu 2014-11-21 10:04:01
我希望如此,你的回答虽然很棒。我认为问题出在'warp'上,因为我的代码和'plot'一起工作正常。 – Rashid 2014-11-21 10:07:04