做PPT需要放很多张类似的图,有时候把很多张图做成一个动图更合适,网上的在线合成的难免有logol或者收费什么的,就自己写一个吧,以后需要用了就打开复制粘贴,运行程序,完成了。
具体的代码如下:
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
代码如下
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
代码如下
因为图片数据是放在同一个文件夹下的,所以读数据的时候奇偶数分开读取拼接。
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