我使用imageio
从我使用PIL创建的一组PNG生成GIF。这是我的代码(找到here):
import imageio
path = "./img/"
os.chdir(path)
filenames = sorted((fn for fn in os.listdir('.') if fn.endswith('.png')))
with imageio.get_writer('./img/movie.gif', mode='I') as writer:
for filename in filenames:
image = imageio.mimread(filename)
writer.append_data(image)
但是,我一直收到以下错误:
Traceback (most recent call last):
File "gifcreate.py", line 7, in <module>
image = imageio.mimread(filename)
File "/Users/felipe_campos/Documents/DECO/venv/lib/python2.7/site-packages/imageio/core/functions.py", line 261, in mimread
reader = read(uri, format, 'I', **kwargs)
File "/Users/felipe_campos/Documents/DECO/venv/lib/python2.7/site-packages/imageio/core/functions.py", line 108, in get_reader
'in mode %r' % mode)
ValueError: Could not find a format to read the specified file in mode 'I'
有没有人对我能做什么有任何想法?我尝试在虚拟环境之外运行它,但它一直告诉我ImportError: No module named imageio
(与scipy和其他一些模块一样),所以我不知道该怎么做。
编辑:
想出来,只需使用imread(filename)而不是mimread(filename),它运行正常。
答案 0 :(得分:1)
这看起来像是一个缺陷/错误。
for filename in filenames:
在这种情况下,filenames是一个str,它是一个可迭代的,python会愉快地迭代它。
为什么不尝试filenames = ['./img/', ]
,看看会发生什么。
(非常快速浏览一下imageio的文档,我不确定调用签名是否需要一个目录 - 我认为它正在寻找实际的文件名)
uri : {str, bytes, file}
The resource to load the images from. This can be a normal filename, a file in a zipfile, an http/ftp address, a file object, or the raw bytes.
如果您想要做的是对目录中的所有文件进行迭代,可以在python中查看os。