Уменьшение размеров файлов png - pngout

pngout

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

Автор утилиты написал собственный упаковщик DEFLATE, который работает медленее, чем аналоги, но жмет данные на 5-10% лучше. Соответственно, в результате обработки файлов PNGOUT их размер уменьшается на 5-10%, хотя, бывали случаи, когда для некоторых файлов размер после обработки уменьшался до 5-10% от первоначального (не знаю, в чем эти файлы были сохранены, видимо, столь высокая степень компрессии была достигнута удалением лишних пакетов данных). Утилита PNGOUT консольная, выполняется из командной строки и обрабатывает один файл за запуск. Также, автором PNGOUT написан вариант программы с GUI - PNGOUTWin, которая умеет обрабатывать файлы в пакетном режиме и за нее уже автор просит некоторого количества зеленых денег. Кроме того, существует еще бесплатная оболочка с аналогичным функционалом требующая .NET для своей работы.

На мой взгляд, при автоматизированной сборке/оптимизации контента все же удобнее пользоваться консолью и командными файлами, для чего я написал небольшой python-скрипт, позволяющий обрабатывать сразу все файлы начиная с некоторой директории (работа скрипта проверялась в Linux и в Windows).

Синтаксис вызова команды следующий:

В Linux:

pngout-dir.py <source directory> [<output directory>]

В Windows:

python pngout-dir.py <source directory> [<output directory>]

Где обязательный параметр source directory определяет путь к каталогу, все файлы которого будут сжаты. Второй параметр output directory необязателен, и если он указан, то определяет директорию, куда будут сохранены оптимизированные файлы.

Т.е., команда

pngout-dir.py some_dir

пройдется по всем файлам и вложенным каталогам директориии some_dir,оптимизирует их (если сможет) и перезапишет.

Команда

pngout-dir.py some_dir out_dir

пройдется по всем файлам и вложенным каталогам директориии some_dir, и запишет их оптимизированный вариант в каталог out_dir. Если в some_dir содержались вложенные поддиректории с png-файлами, то вся их структура будет воспроизведена.

Скрипт можно скачать по ссылке ниже. Утилиту PNGOUT для Windows можно скачать тут, её порт для Linux - тут. Среда Python живёт здесь.


Файлы:

Downloadpngout-dir.py
Рейтинг: 
0
Голосов еще нет