Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 10, 2013 06:03:21

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Как получить ответ есть ли анимация в gif-файле?


Пытался получить средствами 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

Офлайн

#2 Дек. 10, 2013 06:38:10

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Как получить ответ есть ли анимация в gif-файле?

Точно не скажу но, gif , содержит в себе несколько рисунков разных или одинаковых или один , если рисунки разные , то есть по пиксельно смотреть каждый, если изменения есть то анимация есть, если неизменно то нет.
по заголовку файла смотрел , различия идут после GIF89a, но дальше не разбирался…

Отредактировано sanodin (Дек. 10, 2013 06:38:46)

Офлайн

#3 Дек. 10, 2013 07:18:09

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Как получить ответ есть ли анимация в gif-файле?

Извиняюсь, тут я лажанулся, второй файл то же был с анимацией, собственно из этого тесты ломались.
Более правильный код:

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

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version