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

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

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

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

Поделиться
Отправить
11 комментариев
Евгений Степанищев (bolknote.ru)

Зато, вопреки всякой логике, сжатая анимация иногда прилично гзипуется.

zg (zg.livejournal.com)

Комментарий для Евгения Степанищева:

а разве в анимированном гифе не каждый кадр пакуется отдельно?

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

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

Каждый отдельно. По сути, каждый кадр — отдельная картинка, правда, у него может не быть своей таблицы цветов.

zg (zg.livejournal.com)

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

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

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

Я ещё поэксперементирую. Только надо найти редактор гифов какой-то для Мака.

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

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

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

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

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

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

А вот просто сжатие ( http://bolknote.ru/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)

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

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

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

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

На самом деле, это всё ещё происходит из-за того, что «несжатый» ГИФ сам по себе не очень простой формат, он вносит избыточные коды, чтобы очищать таблицу распаковщика LZW.

twitter.com/thenameisbusy

Можно использовать convert из GraphicsMagick, его скорости чуть лучше чем у «оригинального» ImageMagick -​-​

http://www.graphicsmagick.org/benchmarks.html

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

Комментарий для twitter.com/thenameisbusy:

Спасибо, я знаю, но о скорости я думал в последнюю очередь, главное было попробовать как работает.

Популярное