PIL показывает все предыдущие кадры в GIF - PullRequest
3 голосов
/ 23 марта 2019
pillow version:5.4.1

Проблема в том, что я вижу все кадры в GIF.

Ожидание : в жизненном цикле gif, имеющего 5 кадров, каждый кадр должен быть виден в течение доли времени, а в конце gif должен быть виден только 5-й кадр.

Фактический : В моем случае в конце картинки я вижу все кадры 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 Ответ

5 голосов
/ 23 марта 2019

Я думаю, что «утилизация» установлена ​​неправильно. Попробуйте с:

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

enter image description here

...