Alen
Дек. 10, 2013 06:03:21
Пытался получить средствами PIL, но результаты таковы, что даже если анимации в gif файле нет функция возращает True.
from PIL import Image
def get_gif_animation(filename):
"""
>>> get_gif_animation('../fixtures/img/fixture_with_animation.gif')
True
>>> get_gif_animation('../fixtures/img/fixture_without_animation.gif')
False
"""
im = Image.open(filename)
try:
im.seek(1)
except ValueError:
return False
if im.tell():
return True
else:
return False
sanodin
Дек. 10, 2013 06:38:10
Точно не скажу но, gif , содержит в себе несколько рисунков разных или одинаковых или один , если рисунки разные , то есть по пиксельно смотреть каждый, если изменения есть то анимация есть, если неизменно то нет.
по заголовку файла смотрел , различия идут после GIF89a, но дальше не разбирался…
Alen
Дек. 10, 2013 07:18:09
Извиняюсь, тут я лажанулся, второй файл то же был с анимацией, собственно из этого тесты ломались.
Более правильный код:
def get_gif_animation(filename):
"""
>>> get_gif_animation('../fixtures/img/fixture_with_animation.gif')
True
>>> get_gif_animation('../fixtures/img/fixture_without_animation.gif')
False
"""
im = Image.open(filename)
duration = im.info['duration']
if duration:
return True
else:
return False