目标
使用Python来调用ImageMagick,将文件夹内所有的图片作为序列帧合并为一个GIF。
我事先使用Blender渲染了一组图片(操作很简单, 可见《尝试在blender中渲染一个最简单的动画》)
1. 使用ImageMagick将序列帧生成GIF
最基础的命令是比较简单的:
convert 第1帧图片 第2帧图片 ...第n帧图片 结果GIF
Animation Basics – IM v6 Examples 中有更详细的参数与范例,比如在GIF之前可以写上每帧的时间:
-set delay {time}
比如,对于以下命令:
convert D:\Test\BlenderAnim\0001.png D:\Test\BlenderAnim\0024.png D:\Test\BlenderAnim\0048.png D:\Test\BlenderAnim\animation.gif
将会把三张png合成一张GIF:
2. 使用Python调用ImageMagick将序列帧生成GIF
毕竟,当图片较多时,直接手动将所有图片都输入cmd是比较费时的。因此可以通过一些脚本比如python,去找到一个文件夹内的所有的图片,并将其作为参数来调用ImageMagick。
比如Python脚本文件
D:/Test/GenGIF.py
内容如下:
import os
# 序列帧所在的文件夹:
folder ="D:/Test/BlenderAnim"# 输出文件
output ="D:/Test/animation.gif"# 拼出将要运行的命令字符串:
cmd =""# exe名字:
cmd +="convert"# 遍历文件夹所有文件,将文件名写到command中for root, dirs, files in os.walk(folder):forfilein files:
cmd +=" "+ root +"/"+file# 帧时间(24帧每秒):
cmd +=" -set delay 1x24"# 输出文件:
cmd +=" "+ output
# 运行命令
os.system(cmd)
然后,在cmd中运行脚本:
python D:/Test/GenGIF.py
即可将 “D:/Test/BlenderAnim” 中的图片合为一个 “D:/Test/animation.gif”:
版权归原作者 YakSue 所有, 如有侵权,请联系我们删除。