PIL在gif中显示所有先前的帧

时间:2019-03-23 12:48:24

标签: python python-imaging-library gif

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)

如果有人遇到相同的问题,请告诉我我做错了什么事

enter image description here

使用imageio的以下代码可以正常工作,但是我失去了透明度,而且比较PIL的速度很慢

images = []
for filename in names:
    images.append(imageio.imread(filename))
imageio.mimsave('anitest.gif', images,duration=0.3)

1 个答案:

答案 0 :(得分:4)

我认为“处置” 设置不正确。尝试:

images[0].save('anitest.gif',
               save_all=True,
               format='GIF',
               append_images=images[1:],
               duration=200,disposal=2,
               loop=0)

enter image description here