Подтвердить что ты не робот

Схват анимированного 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 не читает весь файл, но я не уверен?

Надеюсь, что я на правильной линии.

4b9b3361

Ответ 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)