用MATLAB将照片合成视频或者GIF图片、以及Photoshop制作GIF图片
用MATLAB将照片合成视频或者GIF图片、以及Photoshop制作GIF图片
一、用MATLAB将照片合成视频(我使用的MATLAB是2015版本的)
(1)、你需要合成视频的图片。
所有照片放在一个文件夹里面。因为是使用Matlab的dir函数读取照片,所以读取时,你要先设置好文件名:图片名称按照“001、002、003...”排列。否则图片显示顺序就会出错。
如果图片是用matlab在循环里使用saveas(gca,[Path,num2str(i)],'jpg');自动保存的图片源的话。注意这里的文件名称是以变量i保存。也就是在保存图片时如果不足十位或者百位不会在前面的自动补零。此时就需要你自己重命名,当然几百张,几千张照片让你一个个重命名未免太惨。
可以使用软件改名字或者保存图片的时候就设置好前置的0,也就是说如果你的图片总数有4位数,那么1000以前的数一定要补零,补足4位。
1)使用matlab的话,就是用数字转为字符串就行
2) 可以使用软件,小巧好用:http://pan.baidu.com/s/1hsiWhTy 密码:f794。下载就直接可以使用。
使用软件的时候会提醒下载新的版本,选择否,设置好之后执行修改之后会提醒更新,这时候点确定就行。
(2)、Matlab代码:
%制作视频
clear clc;close all;
tic;
srcDic = uigetdir('D:\MATLAB_WORKSPACE\Work_SAVE\picture\');%这里的地址就是你的图片所放的地址.
cd(srcDic);
allnames = struct2cell(dir('*.jpg'));
[k,len]=size(allnames);
aviobj = VideoWriter('我的第一个视频.avi');%设置视频名字.
%可以设置视频格式,mp4比较推荐,因为目前苹果系统只支持mp4。
%aviobj = VideoWriter('我的第一个视频.mp4','MPEG-4');%设置视频名字.
aviobj.FrameRate = 10;%这里设置你想要生成的视频的帧数.
open(aviobj)
for i = 1:len
name = allnames{1,i};
frame = imread(name);
writeVideo(aviobj,frame);
end
close(aviobj)
toc;
(3)、Matlab运行之后生成的AVI格式的视频就存放在你的图片保存的文件夹里面。
/*********************************************************************************************/
二、用MATLAB制作GIF图片(我使用的MATLAB是2015版本的)
(1)、你需要需要合成视频的图片。
这里的要求和上面制作视频的要求一样,这里就不赘述了。
(2)、Matlab代码:
clear clc; close all;
tic;
Path='G:\图片源\图片 - 副本\';%这里要注意这个路径要先添加在Matlab的工作路径下,不然会出错。
%参数调整
filename= 'my_gif.gif'; %你的gif文件的名字
t1=0.5; t=0.5;%t1:第一张图暂停的时间,t其他时间间隔,用来控制播放速度,单位秒
ext = {'\*.jpeg', '\*.jpg', '\*.png', '\*.pgm', '\*.tig', '\*.bmp'}; d = [ ];
for i = 1:length(ext)
d =[d; dir( [Path,ext{i}] ) ]; % cd:当前路径
end
str = {d.name};
if ~isempty(str)
[Selection,ok] = listdlg('ListString',str,'name','Choose pictures','PromptString',...
'Please choose pictures','SelectionMode','Multiple', 'ListSize',[400,200]);
else
error('No picture find , add filename extension or change path.')
end
set(0,'defaultfigurecolor','w');
for i = 1:length(Selection)
figure(i)
imshow((imread(str{Selection(i)})),'InitialMagnification','fit')% Or : d(Selection(i)).name == str{Selection}
title(str(Selection(i)));
frame=getframe(i);
im=frame2im(frame);%制作gif文件,图像必须是index索引图像
[I,map]=rgb2ind(im,256);
k=i-0;
if k==1
imwrite(I,map,filename,'gif','Loopcount',inf,...
'DelayTime',t1);%loopcount只是在i==1的时候才有用
else
imwrite(I,map,filename,'gif','WriteMode','append',...
'DelayTime',t);%DelaylayTime用于设置gif文件的播放快慢
end
end
toc;
(3)、这样产生的gif图片保存在你的Matlab的默认工作路径下,也就是你打开Matlab软件时,它默认的那个路径。不过图片你需要使用ie游览器打开才能动,或者用其他软件,比如PPT放映时。
/*********************************************************************************************/
三、Photoshop制作GIF图片。(我使用的Photoshop是Photoshop CS6)
如果你说你没有Matlab怎么办,没事!咱用Photoshop,使用Photoshop,你想把图片P成什么样,就能弄成什么样,不像Matlab那么冰冷。
咱一步一步来:
第一步:把你想合成的几张照片在Photoshop里打开(我用谢耳朵演示)
第二步:把几张照片拖到一个文件下
方便GIF图片显示顺序,可以利用图层名字,不容易弄混。
第三步:窗口-时间轴-创建时间轴
第四步:转换为帧动画之后复制出五帧,然后设置帧(因为我只有五张图片,你有几张图片就弄多少帧)
那个秒数就是每张图片显示的时间,可以自己设置,我设置的1秒。然后对每帧动画的图层进行调整,按空格键就可以预览。
第五步:不要直接保存,要储存为Web所用格式,循环设置为永久,可以播放看一下效果。之后就存储,然后保存,注意保存时图片名不要有中文不然会出错。
(3)、看一下效果:(我后来把显示时间改成0.5秒,看着好玩一点)
总的来说,Photoshop做GIF图片比Matlab要精细,适合数量少的,合成的GIF数量少,如果要求数量多,就只能使用Matlab循环不断生成不断生成。