接下来简单介绍下程序,
就不具体解释其原理了,
主要就是想弄个有趣的,
给新年来个特殊的仪式。
整个实现流程分为以下三个步骤:
【1】找素材
这个就不需要教了吧,上网找自己需要的素材图片,最好用同样格式的图片,方便后续的批量处理,如果图片多了,可以对等下的代码做一定修改,弄成对应格式的批量处理。
【2】重命名
网上找的图片很显然名字都比较乱,如下所示:
为了方便图片处理和合成,于是对图片重新命名,程序如下:
files=dir('.\素材\*.png');%获取素材路径下png格式的图片
for i=1:numel(files)%对全部图片重命名
old_name=files(i).name;%获取原名
Image=imread(['.\素材\' old_name]);%导入图片数据
new_name=strcat(num2str(i),'.jpg');%生成新名
imwrite(Image,['.\' new_name],'jpg');%重新写入并生成新图
end
运行完脚本后,就会在程序的当前路径下看到有序的图片,且后缀名原为.png的也修改成了jpg的格式。
【3】修改图片信息并合成GIF动图
图片素材整理好了,就可以开始动图的制作了,不过查看图片信息,可以看到图片的分辨率不一致
如果直接合成的话,将会导致图片丢失要表达的信息,所以在合成之前还需要做分辨率修改的操作,为了方便,就直接与合成程序写在了一起,程序如下:
files=dir('.\*.jpg');%当前路径
number=numel(files);%获取jpg文件的数量
for i=1:number
str=strcat(num2str(i),'.jpg') ;%获取文件名
Image=imread(str);%读取图片
[X,map]=rgb2ind(Image,256);%获取图片信息
[X2, newmap] = imresize(X,map,'OutputSize',[500 500]);%修改图片分辨率,新分辨率为500x500,图片如果长宽比例相差太多,会变形
if(i==1)
imwrite(X2,newmap,'新年快乐.gif','delaytime',0.5,'loopcount',inf);%写入第一幅
else
imwrite(X2,newmap,'新年快乐.gif','delaytime',0.5,'writemode','append');%往动图中添加图片
end
end
运行完成后,在文件夹内可以看到,gif生成了,效果如下
想要这整套运行程序,在后台回复关键字自行获取:
关键字:【新年快乐】