问题描述
我正试图从几个(在本例中只有5个)png文件创建一个gif图像。如果我在遍历图像的那一刻调试代码,则可以创建gif。否则执行似乎太快了。这是我的代码:
img,*imgs = [Image.open(f) for f in sorted(glob.glob(png_in))]
因此,我简化了列表理解,并添加了time.sleep(x)
并对其进行了测试:
ImageFile.LOAD_TruncATED_IMAGES = True
imgs = []
for f in sorted(glob.glob(png_in)):
i = Image.open(f)
time.sleep(1)
imgs.append(i)
然后,我不使用PIL模块,而是切换到imageio
模块:
images = []
png_list = sorted(glob.glob(png_in))
for filename in png_list:
print(f"fn: {filename}")
images.append(imageio.imread(filename))
time.sleep(1)
imageio.mimsave(gif_file,images)
有什么想法可能会出问题吗?例如,我收到的错误消息是:
unkNown element "blank"
i = Image.open(f)
解决方法
感谢Mark Setchell...。我发现的问题是在执行for循环时png并没有全部存在。我正在使用openscad创建png文件,在这里我需要实现time.sleep
。在调试模式下,因为速度较慢,openscad才有时间创建png的文件,因此您看不到此问题。