Imageio в python: сжатие gif

Есть ли способ сжать gif при создании imageio в python? Я делаю gif с около 200 изображениями, а окончательный файл - 30 МБ. Я бы предпочел, если это 5-10 МБ. В любом случае изображения монофонического цвета должны быть хорошо сжаты. Есть ли инструмент, который я могу использовать или указать его с помощью imageio?

Вот мой код, чтобы сделать gif:

import os
import imageio as io
import re
#############################################################
#key to sort the file_names in order
numbers = re.compile(r'(\d+)')
def numericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts
############################################################
file_names = sorted((fn for fn in os.listdir('.') if fn.startswith('surface')), key = numericalSort)

#gif writer
with io.get_writer('python_growth.gif', mode='I', duration=0.1) as writer:
    for filename in file_names:
        image = io.imread(filename)
        writer.append_data(image)

Ответ 1

Столкнувшись с той же проблемой, я создал оболочку для библиотеки gifsicle с именем pygifsicle, и ее можно использовать следующим образом:

from pygifsicle import optimize
optimize("path_to_my_gif.gif")

Как и любой другой пакет в pip, его можно установить, запустив:

pip install pygifsicle

Полный пример использования этой библиотеки доступен в документации imageio.

При установке pygifsicle вы также автоматически установите, если вы используете MacOS, библиотеку gifsicle с помощью Brew. Для других систем будет предоставлено пошаговое руководство, которое в основном просто просит установить библиотеку с помощью apt-get в Debian/Ubuntu (так как кажется хорошей идеей не запрашивать sudo в настройке пакета) :

sudo apt-get install gifsicle

Или в Windows вы можете установить один из доступных портов.