Схват анимированного gif с помощью python script
Я играл с Pythonista на iOS для создания сценариев автоматизации.
У меня проблема, когда я пытаюсь захватить анимированный gif с удаленного URL-адреса. Я придумал следующий script.
import Image
from urllib import urlopen
from io import BytesIO
url = "http://someurl.com/funny.gif"
img = Image.open(BytesIO(urlopen(url).read()))
Я получаю изображение, но он только выглядит как первый кадр gif? Я предполагаю, что это связано с тем, что BytesIO не читает весь файл, но я не уверен?
Надеюсь, что я на правильной линии.
Ответы
Ответ 1
Ты почти там. Вы используете img.seek
для продвижения кадров. Так..
import Image
from urllib import urlopen
from io import BytesIO
url = 'http://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif'
img = Image.open(BytesIO(urlopen(url).read()))
# Start with first frame
img.seek(0)
#img.show()
# Advance by one
img.seek(img.tell() + 1)
#img.show()
Здесь сообщение SO показывает, как сохранить gif с помощью класса Image.
Ответ 2
В соответствии с Руководство по подушке:
Чтобы сохранить все фреймы, необходимо указать параметр save_all и установить значение True.
Итак, открытое изображение можно сохранить:
image.save('filename.gif', save_all=True)