从png创建gif:遍历图像似乎太快了,只能在调试模式下使用

问题描述

我正试图从几个(在本例中只有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的文件,因此您看不到此问题。