matlab制作GIF动图

做PPT需要放很多张类似的图,有时候把很多张图做成一个动图更合适,网上的在线合成的难免有logol或者收费什么的,就自己写一个吧,以后需要用了就打开复制粘贴,运行程序,完成了。

1、常用如下:

具体的代码如下:

clc;clear all;
close all;

fileName = 'E:\WorkFile\';
fileType = '*.png';
fileIndex = dir([fileName fileType]);                     % 获取文件的全部名称
len = length(fileIndex);                                     % 计算文件个数

% 建立循环读取
for m = 1:len
    midname = fileIndex(m);                                         % 找到每次读取的文件名
    everypic = [midname.folder '\'  midname.name];   % 拼接字符串,组成完整的文件名
    onedata = imread(everypic);                                  % 读取每个png文件
    [imind,map0] = rgb2ind(onedata,256);                 % 将rgb图像转存为索引图象
    if m == num
       imwrite(imind,map0,'mygif1-2.gif','GIF', 'Loopcount',inf,'DelayTime',0.1);   % 建立第一个图像
    else
       imwrite(imind,map0,'mygif1-2.gif','GIF','WriteMode','append','DelayTime',0.1);  % 将后续图像添加到前动图中
end

2、改变关键帧的速度

代码如下

clc;clear all;
close all;

fileName = 'E:\WorkFile\';
fileType = '*.png';
fileIndex = dir([fileName fileType]);                     % 获取文件的全部名称
len = length(fileIndex);                                     % 计算文件个数

% 建立循环读取
for m = 1:len
    midname = fileIndex(m);                                         % 找到每次读取的文件名
    everypic = [midname.folder '\'  midname.name];   % 拼接字符串,组成完整的文件名
    onedata = imread(everypic);                                  % 读取每个jpg文件
    [imind,map0] = rgb2ind(onedata,256);                 % 将rgb图像转存为索引图象
    if m == 1
        imwrite(imind,map0,'mygif1-2.gif','GIF', 'Loopcount',inf,'DelayTime',0.1);   % 建立第一幅图像
    else
        if m<46  || m>76
            imwrite(imind,map0,'mygif1-2.gif','GIF','WriteMode','append','DelayTime',0.1);  % 将后续图像添加到前动图中
        else
            imwrite(imind,map0,'mygif1-2.gif','GIF','WriteMode','append','DelayTime',1);  % 将后续图像添加到前动图中
        end
    end 
end


3、将多个图片拼接同步显示

代码如下

因为图片数据是放在同一个文件夹下的,所以读数据的时候奇偶数分开读取拼接。

clc;clear all;
close all;

fileName = 'E:\WorkFile\';
fileType = '*.png';
fileIndex = dir([fileName fileType]);                     % 获取文件的全部名称
len = length(fileIndex);                                     % 计算文件个数


p = 816;
q = 751+806;
onedata =ones(p,q,3)*255;

% 建立循环读取
for m = 1:2:len
    midname1 = fileIndex(m);                                         % 找到每次读取的文件名
    everypic1 = [midname1.folder '\'  midname1.name];   % 拼接字符串,组成完整的文件名
    onedata1 = imread(everypic1);                                  % 读取每个jpg文件的指定区域参数,根据csv内容自己做出调整
    midname2 = fileIndex(m+1);                                         % 找到每次读取的文件名
    everypic2 = [midname2.folder '\'  midname2.name];   % 拼接字符串,组成完整的文件名
    onedata2 = imread(everypic2);                                  % 读取每个jpg文件的指定区域参数,根据csv内容自己做出调整
    onedata(1:751,75:692+74,:) = onedata1;
    onedata(:,752:end,:) = onedata2;
    pic = uint8(onedata);
    [imind,map0] = rgb2ind(pic,256);                 % 将rgb图像转存为索引图象
    if m == 1
        imwrite(imind,map0,'mygif1-1.gif','GIF', 'Loopcount',inf,'DelayTime',0.3);   % 建立第一幅图像
    else
        imwrite(imind,map0,'mygif1-1.gif','GIF','WriteMode','append','DelayTime',0.3);  % 将后续图像添加到前动图中
    end 
end





  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MATLAB制作GIF动态图通常涉及到使用imwrite和imread函数以及pause或waitforbuttonpress等暂停命令来逐帧保存和显示图像。以下是一个简单的步骤指南: 1. **创建或读取图像序列**: - 使用`imread`读取单张图片,或者创建多张图片数组。 - 如果需要自动生成动画,可以用for循环或cell数组生成一系列图片。 ```matlab frames = {}; % 创建一个空cell数组存储帧 for i = 1:total_frames % 假设你有一个名为'frame_'与帧数相关的文件名列表 frame = imread('frame_' + num2str(i) + '.jpg'); % 替换为你的文件路径 frames{i} = frame; % 将帧添加到cell数组 end ``` 2. **保存每一帧**: - 使用`imwrite`保存每帧为临时文件,例如`.png`,因为MATLAB的内建功能不直接支持GIF格式。 ```matlab % 假定临时目录为'temp_dir' temp_dir = 'temp_dir'; if ~exist(temp_dir, 'dir') mkdir(temp_dir); end for i = 1:length(frames) filename = fullfile(temp_dir, ['frame' num2str(i) '.png']); imwrite(frames{i}, filename); end ``` 3. **合并为GIF**: - 使用系统调用或者外部工具(如ImageMagick)将PNG帧转换为GIFMATLAB不直接支持这个操作。 ```matlab % 假定系统路径下有convert工具 [status, result] = system(['convert -delay 10 ' temp_dir '/*.png ' temp_dir '/animation.gif']); % 延迟时间10毫秒,替换为实际延迟值 if status ~= 0 error('Error converting to GIF'); end ``` 4. **清理临时文件**: - 完成GIF制作后,如果需要,删除临时PNG文件。 ```matlab files_to_delete = fullfile(temp_dir, 'frame_*.png'); delete(files_to_delete); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值