2011-02-18

Сказ о худобе изобразительного толка или забег оптимизаторов PNG

by Pack Yuuyake
Приливом из GReader'а выбросило заметку «Инструменты для минимизации размера изображений» из блога “Insight IT”. О программах для уменьшения размера png-файлов краем уха слышал, но относился к ним скептически, наивно полагая, что там нечего больше уменьшать. Так как в статье упоминаются целых четыре представителя семейства «оптимизаторов изображений», решил сравнить их эффективность.


Установка
Пакеты для optipng, pngcrush, advpng находятся в репозитории Ubuntu, далеко ходить не надо:
sudo aptitude install optipng pngcrush advancecomp
pngout пришлось скачивать со страницы проекта. Компиляции удалось избежать, в архиве заботливо упаковали бинарники для разных архитектур. В тестах использовал pngout-static.

Метод сравнения
Время работы утилит никак не учитывалось. Файлы обрабатывал, что называется, на максимальных настройках с наиболее агрессивными параметрами.
optipng -o7 foo.png
pngcrush -rem alla -brute -reduce foo.png foo.png.temp
pngout foo.png
advpng -z4 foo.png

Основным и единственным критерием стал уровень сжатия файла после оптимизации. Всего обработал 14 файлов (снимки экрана, иконки, мелкие пиктограммы). Попугаи начислялись следующим образом: после обработки в зависимости от эффективности программа получала в карму от четырёх (за первое место) до одного балла. Далее, путём сложных математических преобразований с участием ∑ определил победителя забега оптимизаторов png. Таблицу с результатами разместил в GDocs, дабы не грузить всех техническими подробностями.



Сухой остаток
По предварительным и постварительным данным удалось выявить победителя. Лучше всего с представленным зоопарком картинок справились advpng и pngout (набрали по 38 баллов). Перечисленные программы чаще всего демонстрировали наилучшие показатели (5 и 6 первых результатов соответственно).
Итак, коль надумаете облегчить графику, выбирайте титулованные инструменты ;-)

UPD: Для повседневных задач существует GUI под названием Trimage. По сути программа незаметно дёргает за верёвочки optipng, advpng и jpegoptim в зависимости от типа файла (png, jpeg).


Ссылки по теме:

8 комментариев: ответить

18.02.2011, 17:32   Pilot34 комментирует...

А их же можно все вместе запускать поочереди?) Png, это ж беспотерьное сжатие..

18.02.2011, 17:47   Dr.AKULAvich комментирует...

@Pilot34
Запустить поочередно никто не мешает, но результат будет таким же, как и после наиболее эффективного алгоритма. Смысла нет.

18.02.2011, 18:53   timyr-lan комментирует...

А параметры компрессии во всех случаях указывались максимальные?

18.02.2011, 22:36   Dr.AKULAvich комментирует...

@timyr-lan
Да, для каждого скакуна максимальные уровни выставлены.

19.02.2011, 2:32   Leolik комментирует...

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

20.02.2011, 5:02   virens комментирует...

Акулович, хомячки негодуют ;-) Тому есть несколько причин:

1. Паркуа бы собственно не па внедрить табличку (классную, кстати) в сам пост? ГугельДокс могёт такое? А то ходить по ссылкам лениво и вообще не комильфо. Общественность требует внедрёж :-)

2. Общественности так же лениво читать маны и выцеживать оттуда настройки. Хочется увидеть в посте те параметры, которые ты использовал для тестов. Замечание в сторону: когда будешь писать диплом\статьи\конференции, там точно такое же правило - пиши в максимальных подробностях, как ты получил свои результаты. А то меня уже бесит читать всяких узкоглазых, которые в статьях приводят левые результаты без описаний того, как получено.

3. может, авторы этих проектов расколятся, какие алгоритмы они использовали? Ссылки на статьи добавят посту крутизны и солидности.

25.03.2011, 7:49   хомячки комментирует...

В принципе, суть раскрыта, понятно, чем надо пользоваться.
А табличку нужно внедрить =)

25.03.2011, 11:39   Dr.AKULAvich комментирует...

@Leolik
Всегда пожалуйста. Буду рад, если сей скромный труд поможет определиться с выбором.

@virens
> Общественность требует внедрёж :-)
Придётся поддаться под напором общественности :-) Я не хотел встраивать таблицу по одной единственной причине — она не вмещается по горизонтали, посему потребует изрядной прокрутки.

> Общественности так же лениво читать маны и выцеживать оттуда настройки.
Настройки вставил в пост. Спасибо за замечание, моё упущение, виноват.

> Ссылки на статьи добавят посту крутизны и солидности.
К сожалению, чего-то конкретного найти не удалось. Только на странице optipng попался список статей по мотивам.

@хомячки
Done :-)

Отправить комментарий