Python ImageIO 中动画 Gif 的自定义帧持续时间

新手上路,请多包涵

我一直在玩弄 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 许可协议

阅读 1.2k
2 个回答

mimsave 不接受 4 个 位置 参数。第三个参数之外的任何内容都必须作为 关键字参数 提供。换句话说,你必须解压 kargs 像这样:

 imageio.mimsave(exportname, frames, 'GIF', **kargs)

原文由 Aran-Fey 发布,翻译遵循 CC BY-SA 3.0 许可协议

或者你可以这样称呼它:

 imageio.mimsave(exportname, frames, format='GIF', duration=5)

原文由 Gwen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题