Создание gif файла на python

Добрый день, уважаемые читатели. Недавно я столкнулся с проблемой создания файла с расширением gif, используя программный интерфейс, реализован на python. В этой статье мы обсудим небольшой пример, с помощью которого мы создадим интересную «гифку».

Подпишись на группу Вконтакте и Телеграм-канал. Там еще больше полезного контента для программистов.
А на YouTube-канале ты найдешь обучающие видео по программированию. Подписывайся!

PIL для обработки изображений

Для решения нашей проблемы было решено использовать очень популярный пакет — PIL (Python Image Library).

Сама задумка крайне примитивна — создать «гифку», основываясь на одной фотографии, применяя к ней гауссово размытие различного «радиуса». Для начала импортируем те немногочисленные инструменты, которые нам понадобятся.

from PIL import Image
from PIL import ImageFilter

Теперь загрузим изображение. Я выбрал красивое изображение змеи (красивое оно по моему скромному мнению, не более).

Загрузим изображение, использовав метод Image.load.

original_image = Image.open('snake.jpg')

Также нам нужно создать список, где мы будем хранить «заблюренные» фотографии.

images = list() 

Теперь реализуем цикл, который будет применять фильтрацию к изображению и добавлять его в наш список. Чтобы применить фильтр, мы воспользуемся методом filter, куда в качестве аргумента передаем экземпляр класса GaussianBlur.

for radius in range(0, 20):
    blured_image = original_image.filter(ImageFilter.GaussianBlur(radius=radius))
    images.append(blured_image)

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

images.extend(reversed(images))

А далее нам остается лишь сохранить изображение, передав туда следующие параметры:

  • имя файла
  • список фотографий, которые также нужно сохранить (append_images)
  • кол-во повторений (loop)
  • длительность (duration)

В нашем случае команда сохранения выглядит следующим образом:

original_image.save('snake_blur.gif',
                      append_images=images,
                      loop=3,
                      duration=100,
                      save_all=True)

В результате мы получаем файл с расширением .gif, который вы с легкостью сможете открыть в том же Google Chrome. Увы, здесь я не смогу её продемонстрировать :(

Заключение

В этой совсем небольшой статье мы затронули вопрос создания gif, используя язык программирования python. Также мы научились использовать гауссово размытие и совмещать обе операции в одну.

Советую вам прочитать статью «Поговорим о странностях питона», где я подался в некую программную философию, обсуждая некоторые странности, которые я заметил при работе с Python.

А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов.