Matlab 制作gif动画

已有一系列时序图片的基础上,可借助matlab制作gif图片,虽然比不上专业绘图制作的精良,好在比较方便。

假定时序图片的命名为:dens000000.tiff,dens000500,dens0010000,……

% make gif
clc;clear;
close all;

% fileneme for gif
prefix = 'dens';
targetname = [ prefix '.gif' ];

% get information of the source file
file_info = dir( strcat( prefix, '*.tiff' ) );
file_num = length( file_info );
nameindex = zeros( 1, file_num );

for i = 1:file_num
    temp = strsplit( file_info(i).name, '.' );
    strformat = strcat( prefix, '%d' );
    temp = sscanf( temp{1,1}, strformat );
    nameindex(i) = temp;
end
nameindex = sort( nameindex );

% get the size of screen
set( 0, 'units', 'pixels' );
scnsize = get( 0, 'MonitorPosition' );

% get the size of figure
img = imread( file_info(1).name );

% creat figure
figure( 'units', 'pixels', 'WindowStyle', 'modal', 'color', 'w' )

% set the figure position at the center of screen
startx = floor( 0.5 * ( scnsize(3) - size(img,2) ) );
starty = floor( 0.5 * ( scnsize(4) - size(img,1) ) );
width = size( img, 2 );
high = size( img, 1 );
set( gcf, 'position', [ startx, starty, width, high ] );

% deal with the source file one by one
for i = 1:file_num  
    % read data
    strformat = strcat( prefix, '%06d.tiff');
    str = sprintf( strformat, nameindex(i) );
    img = imread( str );
    
    % open picture
    imshow( img, 'border', 'tight', 'initialmagnification', 'fit' )
    
    frame = getframe( gcf ); 
    im = frame2im( frame );
    [ I, map ] = rgb2ind( im, 1024 );
    
    % close current figure
    cla;
    
    % write file
    if i == 1
        imwrite( I, map, targetname, 'gif', 'Loopcount', inf, 'DelayTime', 0.05 );
    else
        imwrite( I, map, targetname, 'gif', 'WriteMode', 'append', 'DelayTime', 0.05 );
    end
end

% close figure
close all;

  

上一篇:LaTex论文排版 | (9) LaTex中的浮动体


下一篇:python-Matplotlib窗口大小,标题等