栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用Python调用ImageMagick将序列帧生成GIF

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Python调用ImageMagick将序列帧生成GIF

目标

使用Python来调用ImageMagick,将文件夹内所有的图片作为序列帧合并为一个GIF。


我事先使用Blender渲染了一组图片(操作很简单, 可见《尝试在blender中渲染一个最简单的动画》)

1. 使用ImageMagick将序列帧生成GIF

最基础的命令是比较简单的:

convert 第1帧图片 第2帧图片 ...第n帧图片 结果GIF

Animation Basics – IM v6 Examples 中有更详细的参数与范例,比如在GIF之前可以写上每帧的时间:

-set delay {time}

比如,对于以下命令:

convert D:TestBlenderAnim0001.png D:TestBlenderAnim0024.png D:TestBlenderAnim0048.png D:TestBlenderAnimanimation.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):  
    for file in 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”:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329233.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号