Matlab: как сохранить анимированный сюжет в gif



Рассмотрим следующую функцию, которая рисует анимированный сюжет циклоида.



function animate1()
clear, clc

R = 1;
na = -pi/2;
t = 0:0.05:6;
v = 4;

for i = 1:length(t)
x0 = v*t(i);
y0 = R;
na = -v*t(i)/R;
fi = linspace(na,na+2*pi,100);
x = x0 + R*cos(fi);
y = y0 + R*sin(fi);

xc(i) = x0 + R*cos(na);
yc(i) = y0 + R*sin(na);

plot(x,y,'b',...
xc(i),yc(i),'*m',...
xc,yc,'r')
axis([-1 25 0 1.5])
axis equal
pause(0.01)
end


Можно ли модифицировать код таким образом, чтобы он выводил анимированный сюжет, например, в gif?



Заранее благодарю вас!

639   1  

1 ответ:

Да, imwrite поддерживает анимированные GIF-файлы. Как и для видео AVI, вы захватываете кадры через getframe последовательно. Затем передайте их в imwrite, хотя для GIF-файлов вы должны преобразовать их из RGB в 256-цветную карту. Вот так:

for i = 1:nFrames

    % draw stuff

    frame = getframe(gcf);
    img =  frame2im(frame);
    [img,cmap] = rgb2ind(img,256);
    if i == 1
        imwrite(img,cmap,'animation.gif','gif','LoopCount',Inf,'DelayTime',1);
    else
        imwrite(img,cmap,'animation.gif','gif','WriteMode','append','DelayTime',1);
    end
end

Посмотрите на openExample('matlab/WriteAnimatedGIFExample') и на doc imwrite для получения дополнительной информации.

Comments

    Ничего не найдено.