pillow version:5.4.1
问题是我可以看到 gif 中的所有帧。
期望:在具有 5 帧的 gif 的生命周期中,每个帧应该在一小部分时间内可见,并且在 gif 结束时只有第 5 帧应该是可见的。
实际:在我的例子中,在 gif 的末尾,我可以看到所有帧 1-2-3-4-5。
gif 动画中有 5 帧,所有帧都是 gif 格式(静态)我也尝试过使用 png 文件,但我得到了相同的结果。
我所有的框架都是透明背景。
from PIL import Image
frame_list = []
frame_list.append("object_1.gif")
frame_list.append("object_2.gif")
frame_list.append("object_3.gif")
frame_list.append("object_4.gif")
frame_list.append("object_5.gif")
images = []
for n in frame_list:
frame = Image.open(n)
images.append(frame)
images[0].save('anitest.gif',
save_all=True,
format='GIF',
append_images=images[1:],
duration=200,
loop=0)
如果有人遇到同样的问题,请告诉我我做错了什么?
下面的代码使用 imageio 它可以工作,但我正在失去透明度并且它的比较 PIL 非常慢
images = []
for filename in names:
images.append(imageio.imread(filename))
imageio.mimsave('anitest.gif', images,duration=0.3)
最佳答案
我认为“disposal” 设置不正确。尝试:
images[0].save('anitest.gif',
save_all=True,
format='GIF',
append_images=images[1:],
duration=200,disposal=2,
loop=0)
关于python - PIL 在 gif 中显示所有之前的帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55313887/