Конвертор в несжатый GIF

Сделал я конвертор из обычного ГИФа в несжатый формат сжатый gzip, выложил на ГитХабе. Основное (разбор ГИФа) написано на Пайтоне, утилита, которая всё запускает — на Шеле. Для работы требуются ImageMagick (предпочтительнее) или gifsicle, gitinter (из libungif) и интерпретатор Пайтона.

Кажется, эксперимент провалился, я ещё буду вертеть различные ГИФы, но вряд ли что-то получится. По сравнению с анимированными ГИФами, где не используется оптимизация (не убираюся из следующих кадров статические куски, не используется фокусы с прозрачностью и наложением) выигрыш бывает, но по сравнению с оптимизированными, ещё не видел, чтобы испытываемый формат выигрывал.

Из плюсов для себя: детально для себя разобрал формат GIF, освежил знания Пайтона (которые уже начинают тускнеть), Шела, поработал над интересной идеей.

Комментарии 11

Евгений Степанищев (bolknote.ru) автор № 1
Зато, вопреки всякой логике, сжатая анимация иногда прилично гзипуется.
zg (zg.livejournal.com) № 2
а разве в анимированном гифе не каждый кадр пакуется отдельно?
Евгений Степанищев (bolknote.ru) автор № 3
Каждый отдельно. По сути, каждый кадр — отдельная картинка, правда, у него может не быть своей таблицы цветов.
zg (zg.livejournal.com) № 4
ну есть же много гифов, где первый кадр большой, а последующие маленькие. у маленьких кадров будет большой оверхеад на заголовок, соответственно они будут сжиматься. это как один из вариантов.
другой вариант — много очень похожих кадров (что характерно для анимации) и сходные результаты сжатия.
Евгений Степанищев (bolknote.ru) автор № 5
Комментарий для zg.livejournal.com:

Я ещё поэксперементирую. Только надо найти редактор гифов какой-то для Мака.
Евгений Степанищев (bolknote.ru) автор № 6

Комментарий для zg.livejournal.com:

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

Попробовал два файла: большой кадр, маленькие кадры с бедной палитрой и большой кадр + маленький с большой палитрой (256), пока проигрыш.

Евгений Степанищев (bolknote.ru) автор № 7

Комментарий для zg.livejournal.com:

А вот просто сжатие ( /all/3713 ) даёт выигрыш:

-rw-r--r-- 1 bolk staff 102604 11 авг 17:00 anim.gif
-rw-r--r-- 1 bolk staff 102008 11 авг 17:03 anim.gif-def
-rw-r--r-- 1 bolk staff 135088 11 авг 17:02 anim.gif-gz
Евгений Степанищев (bolknote.ru) автор № 8

Комментарий для zg.livejournal.com:

много очень похожих кадров (что характерно для анимации) и сходные результаты сжатия.

Смотря чем они схожи. Если какие-то точки на тех же местах, то обычный оптимизатор GIF (тот же gifsicle) сделает их прозрачным, «просвечивающими» из прежнего кадра. По крайней мере, я бы так сделал.

Евгений Степанищев (bolknote.ru) автор № 9
На самом деле, это всё ещё происходит из-за того, что «несжатый» ГИФ сам по себе не очень простой формат, он вносит избыточные коды, чтобы очищать таблицу распаковщика LZW.
twitter.com/thenameisbusy № 10
Можно использовать convert из GraphicsMagick, его скорости чуть лучше чем у «оригинального» ImageMagick --

http://www.graphicsmagick.org/benchmarks.html
Евгений Степанищев (bolknote.ru) автор № 11
Спасибо, я знаю, но о скорости я думал в последнюю очередь, главное было попробовать как работает.