我一直在玩弄 Python 中的动画 gif,帧将由位于温室中的 Raspberry Pi 相机生成。我已经使用 Almar 对上一个问题的回答中 推荐的 imageio 代码成功创建了简单的 gif。
但是,我现在正试图减慢帧持续时间,但查看 了 imageio 的文档,找不到 mimsave 的任何参考,但确实看到 了 mimwrite ,它应该有四个参数。我查看了 额外的 gif 文档,可以看到有一个持续时间参数。
目前,我的代码如下所示:
exportname = "output.gif"
kargs = { 'duration': 5 }
imageio.mimsave(exportname, frames, 'GIF', kargs)
我收到以下错误:
Traceback (most recent call last):
File "makegif.py", line 23, in <module>
imageio.mimsave(exportname, frames, 'GIF', kargs)
TypeError: mimwrite() takes at most 3 arguments (4 given)
其中 frames 是 imageio.imread 对象的列表。为什么是这样?
已更新以显示完整答案:这是一个示例,展示了如何使用 kwargs 更改帧持续时间来使用 imageio 创建动画 gif。
import imageio
import os
import sys
if len(sys.argv) < 2:
print("Not enough args - add the full path")
indir = sys.argv[1]
frames = []
# Load each file into a list
for root, dirs, filenames in os.walk(indir):
for filename in filenames:
if filename.endswith(".jpg"):
print(filename)
frames.append(imageio.imread(indir + "/" + filename))
# Save them as frames into a gif
exportname = "output.gif"
kargs = { 'duration': 5 }
imageio.mimsave(exportname, frames, 'GIF', **kargs)
原文由 Byte Insight 发布,翻译遵循 CC BY-SA 4.0 许可协议
mimsave
不接受 4 个 位置 参数。第三个参数之外的任何内容都必须作为 关键字参数 提供。换句话说,你必须解压kargs
像这样: