Matlab制作GIF动态图

GIF动态图制作制作

/**使用这个程序只需将循环中的i=3374:3379改成自己的图像的编号即可,还有str=sprintf()中的图片的类型也要修改**/
clc
clear
close all
filename='D:\\matlab_program\\Mycode\\fish1.gif';          %输出路径+保存的文件名.gif
for i=3374:3379  
    str = sprintf('D:\\matlab_program\\Mycode\\%d.png',i); %图片绝对位置和类型,注意这里的图片类型不能是bmp格式
    img = imread(str);     %读取图像
    figure(i)
    imshow(img)
    set(gcf,'color','w');  %设置背景为白色
    set(gca,'units','pixels','Visible','off');
    frame = getframe(gcf); 
    im = frame2im(frame);     %将影片动画转换为编址图像,因为图像必须是index索引图像
    imshow(im);
    [I,map] = rgb2ind(im,20); %将真彩色图像转化为索引图像
    if i==3374;
        imwrite(I,map,filename,'gif','Loopcount',inf,'DelayTime',0.3);     %Loopcount只是在i==1的时候才有用
    else
        imwrite(I,map,filename,'gif','WriteMode','append','DelayTime',0.3);%DelayTime:帧与帧之间的时间间隔
    end
end
close all

               ====一条快乐的分割线====


  • 代码帮助

    set(gca,'units','pixels','Visible','off');
     /**
     Units:有效值为pixels/normalized/inches /centimeters/points/characters
     决定各种位置属性的度量单位,相对于窗口左下角为基准。当设置为Pixels时,以像素为单位;
     当设置为normalized时,以坐标为单位,屏幕的左下角为[0,0],右上角为[1.0,1.0]。
     Visible:决定坐标轴是否可见
     **/
    [X,map] = rgb2ind(RGB,n) 
    /**
    使用最小方差量化和抖动将RGB图像转换为索引图像X。map最多包含n个颜色。
    **/
    • MATLAB getframe用法
    F = getframe(H,Rect) 
    • H:图像句柄
    • Rect:一个四元素向量,Rect=[a b c d],其中a表示截取区域到图像左端的像素数,b表示截取区域到图像底端的像素数,c表示截取区域水平像素数,d表示截取区域垂直向像素数。
    • F:是一个结构体,包含两个元素:cdata和colormap
      1. cdata:Rect中参数选择的区域的数据,一个三维数组,其中第三维的长度是3,即截取到的是区域中RGB的值。
      2. colormap:调色板数据

效果图对比

  • [X,map] = rgb2ind(RGB,n) %n=256时 由于图像是以16位存储的,n最大等于65536。


          
  • [X,map] = rgb2ind(RGB,n) %n=20时,可以看到n=20时,图片明显的模糊了很多       

  • [X,map] = rgb2ind(RGB,n) %n=0时,可以看到n=0时,图片丢失了更多的信息
             


             

猜你喜欢

转载自blog.csdn.net/qq_30622831/article/details/80433872