我一直在使用Python中的动态gif图像,其中的帧是由位于温室中的Raspberry Pi摄像头产生的。我成功地使用了推荐的imageio代码来创建简单的gif图像,该代码来自于Almar曾经回答的问题。
然而,我现在想减慢帧速率,查看了imageio文档,没有找到有关mimsave的任何参考资料,但我看到了mimwrite,它应该需要四个参数。我查看了其他gif文档,发现有一个duration参数。
目前,我的代码如下:
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对象的列表。为什么要这样做呢?
更新后显示完整答案:这是一个示例,展示了如何使用imageio创建动画gif,并使用kwargs更改帧持续时间。
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)
imageio.imsave(exportname, frames, format='GIF', fps=30)
- Ernest S Kirubakaran