Pngcrush — это специализированная программа для оптимизации PNG-файлов через командную строку. Она не пытается улучшить картинку визуально, не применяет художественные фильтры и не меняет изображение ради эффектного результата. Ее задача уже и точнее: уменьшить размер PNG-файла за счет подбора более удачных параметров сжатия, работы с IDAT-данными и управления служебными PNG-блоками. Pngcrush запускается из консоли Windows, UNIX или Linux и работает как CLI-инструмент: пользователь вводит команду, указывает входной PNG, выходной PNG и набор параметров.

Программа особенно полезна там, где важны сжатие PNG без потерь, контроль метаданных, пакетная обработка изображений, подготовка графики для сайта, оптимизация интерфейсных иконок, уменьшение веса PNG-ассетов и проверяемый результат без визуальной деградации. В отличие от онлайн-компрессоров, Pngcrush не строится вокруг веб-интерфейса: его сильная сторона — точные параметры, повторяемость команд и удобство включения в скрипты.

Что делает Pngcrush

Главная функция Pngcrush — уменьшение размера PNG-файла за счет повторного сжатия IDAT-потока. В PNG именно IDAT содержит сжатые данные изображения, поэтому программа перебирает разные PNG-фильтры и уровни zlib-сжатия, сравнивает результат и сохраняет вариант с меньшим размером. Все штатные методы фильтрации и сжатия, которые Pngcrush использует для оптимизации IDAT, являются lossless: изображение не теряет качество из-за самого пересжатия.

Практически Pngcrush выполняет несколько типов задач:

  • оптимизирует PNG-файл без изменения видимого изображения;

  • подбирает более выгодный метод фильтрации строк PNG;

  • пересжимает IDAT-данные;

  • удаляет лишние ancillary chunks, то есть вспомогательные PNG-блоки;

  • добавляет или заменяет отдельные служебные блоки, например gAMA, tRNS, iCCP, tEXt, iTXt, zTXt;

  • может выполнять lossless-уменьшение глубины цвета или типа цвета через -reduce;

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

Pngcrush не является универсальным конвертером изображений. Это именно оптимизатор PNG-файлов. Он не предназначен для художественной обработки, ретуши, масштабирования с интерполяцией, цветокоррекции как в редакторе или пакетного ресайза в стиле ImageMagick. Его сфера — PNG compression, PNG optimization, IDAT recompression, chunk manipulation и подготовка файлов к более компактному хранению.

Скачать Pngcrush

Оценка 9.7 Рекомендуем
  • Ретушь фото
  • Русский интерфейс
  • Просто для новичков
Скачать бесплатно на Windows
Лучшая альтернатива
Pngcrush
Оценка 8.5
  • Только командная строка
  • Не для ретуши фото
  • Только PNG-сжатие
Скачать Pngcrush
Загрузка начнётся после нажатия

Интерфейс программы

Интерфейс Pngcrush — командная строка. У программы нет окон с панелью инструментов, кнопками Open, Save, Optimize или областью предпросмотра. Основные элементы интерфейса — это команда pngcrush, параметры, имена файлов и текстовый вывод в консоли. Это делает программу менее удобной для новичка, но более предсказуемой для разработчика, верстальщика, администратора сборки, специалиста по оптимизации сайта или пользователя, который обрабатывает много PNG-файлов регулярно.

Базовая форма команды выглядит так:

pngcrush [options] infile.png outfile.png

Для пакетной обработки используется форма с выходной директорией:

pngcrush -d output_dir *.png

Для создания файлов с новым расширением используется форма:

pngcrush -e .crushed.png *.png

Эти варианты отражают реальную модель работы Pngcrush: один файл — один выходной файл, много файлов — выходная папка или новое расширение. Параметры -d и -e специально предназначены для сценариев, где нужно не вручную переименовывать каждый PNG, а обработать группу файлов одной командой.

Как Pngcrush уменьшает размер PNG

PNG-файл хранит изображение не как простой набор пикселей в открытом виде. Данные изображения проходят фильтрацию по строкам, затем сжимаются. Pngcrush использует это устройство формата: он пробует разные способы фильтрации и параметры сжатия, измеряет размер получившегося IDAT-потока и выбирает лучший вариант.

Важный момент: выигрыш зависит от конкретной картинки. На одних PNG результат может быть заметным, на других — минимальным. Лучше всего Pngcrush проявляет себя на файлах, которые были сохранены неоптимально: скриншоты, иконки, UI-графика, изображения с большими однотонными областями, PNG с лишними метаданными, ассеты, экспортированные редактором без тщательной настройки сжатия.

Типичная логика работы такая:

  1. Pngcrush читает входной PNG.

  2. Анализирует его критические и вспомогательные блоки.

  3. Пробует несколько методов пересжатия IDAT.

  4. Сравнивает размеры вариантов.

  5. Записывает выходной PNG, если новый вариант подходит по условиям.

  6. Показывает статистику: длину критических данных, лучший метод, процент уменьшения и время работы.

В выводе программы обычно видны строки вроде Recompressing IDAT chunks, Total length of data found in critical chunks, Critical chunk length, Best pngcrush method, filesize reduction. Именно по ним удобно понимать, что программа сделала с файлом и насколько успешным оказалось сжатие.

Базовая оптимизация одного PNG-файла

Самый простой сценарий — передать входной и выходной файл:

pngcrush input.png output.png

Эта команда запускает оптимизацию с настройками по умолчанию. Pngcrush читает input.png, создает output.png и применяет свои стандартные методы пересжатия. Даже без дополнительных параметров программа может уменьшить размер файла, потому что она пересохраняет PNG с другими параметрами IDAT-сжатия.

Такой вариант подходит для безопасной первичной проверки. Пользователь сохраняет оригинал нетронутым и получает отдельный файл для сравнения. После обработки можно проверить:

ls -lh input.png output.png

На Windows аналогичный смысл дает просмотр размера файла в проводнике или команда:

dir input.png output.png

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

Оптимизация с максимальным перебором методов

Для более агрессивной lossless-оптимизации используется параметр -brute:

pngcrush -brute input.png output.png

-brute включает перебор большого набора сочетаний фильтров и параметров сжатия. Этот режим работает медленнее, но способен найти меньший IDAT-поток, чем обычный запуск. Он ресурсоемкий, потому что программа пробует много filter/compression methods.

Практический смысл -brute простой: его стоит применять не ко всем временным изображениям подряд, а к финальным PNG-файлам, которые попадут в сайт, приложение, игру, архив ресурсов или дистрибутив. Для тысячи больших PNG такой режим может занять много времени, зато для набора иконок, логотипов, UI-элементов и готовых ассетов он дает более аккуратный результат.

Команда с -brute особенно уместна для:

  • финальных PNG-иконок;

  • ассетов веб-интерфейса;

  • графики мобильного приложения;

  • небольших изображений с прозрачностью;

  • скриншотов документации;

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

Удаление лишних вспомогательных блоков

PNG-файл может содержать не только данные изображения, но и дополнительные блоки: текстовые комментарии, сведения о гамме, цветовые профили, физическое разрешение, время создания и другие служебные данные. Pngcrush умеет удалять такие блоки через -rem.

Пример удаления текстовых блоков:

pngcrush -rem text input.png output.png

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

pngcrush -rem alla input.png output.png

Пример удаления более широкого набора вспомогательных данных:

pngcrush -rem allb input.png output.png

Параметр -rem требует аккуратности. Вспомогательные блоки не всегда мусор. Например, tRNS связан с прозрачностью, gAMA влияет на интерпретацию яркости, iCCP хранит цветовой профиль, pHYs может описывать физическое разрешение. Если PNG используется как веб-иконка, декоративная графика или технический ассет, удаление лишних метаданных часто оправдано. Если файл нужен для печати, цветокоррекции, архива или точного воспроизведения в разных средах, удалять блоки нужно осторожно.

Lossless-уменьшение глубины цвета через -reduce

Параметр -reduce включает попытку уменьшить тип цвета или битовую глубину без потери информации изображения:

pngcrush -reduce input.png output.png

Например, если PNG сохранен с избыточной глубиной цвета, но фактически не использует весь диапазон, Pngcrush может записать более компактное представление. Это не то же самое, что lossy-квантование. -reduce ориентирован на безопасное уменьшение там, где данные позволяют представить изображение проще.

Часто используемая команда для практической оптимизации выглядит так:

pngcrush -brute -rem alla -reduce input.png output.png

В этой связке:

  • -brute ищет более удачный метод сжатия;

  • -rem alla удаляет известные вспомогательные блоки, кроме критически важных для прозрачности;

  • -reduce пытается уменьшить цветовой тип или битовую глубину без потери изображения.

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

Перезапись исходного файла

Для обработки с заменой исходного PNG используется -ow:

pngcrush -ow image.png

-ow означает overwrite: Pngcrush записывает результат поверх исходного файла. Этот режим удобен для автоматизации, но его нельзя считать безопасным первым шагом. Перед массовым использованием -ow лучше протестировать команду на копии папки или сначала выводить оптимизированные файлы в отдельную директорию.

Более осторожный вариант:

mkdir optimizedpngcrush -d optimized *.png

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

Пакетная обработка PNG-файлов

Pngcrush хорошо подходит для пакетной обработки. Его можно запускать по маске:

pngcrush -d optimized *.png

Так обрабатываются все PNG в текущей директории, а результат попадает в папку optimized. Для вложенных папок обычно используют shell-скрипт, find, for или систему сборки.

Пример для Linux/macOS:

mkdir -p optimizedfor file in *.png; do  pngcrush "$file" "optimized/$file"done

Пример с более плотной оптимизацией:

mkdir -p optimizedfor file in *.png; do  pngcrush -brute -rem alla -reduce "$file" "optimized/$file"done

Пример для Windows CMD:

mkdir optimizedfor %f in (*.png) do pngcrush "%f" "optimized\%f"

В скриптах Pngcrush удобен тем, что его вывод можно анализировать, перенаправлять в лог, использовать в CI/CD и запускать одинаково для набора ресурсов. Это сильное отличие от графических оптимизаторов: результат не зависит от того, какие галочки случайно нажал пользователь в интерфейсе.

Автоматизация Pngcrush через macOS Automator

Pngcrush можно встроить в пользовательский workflow. На macOS типовой способ — создать Quick Action в Automator, добавить действие Run Shell Script, передать входные изображения как аргументы и выполнить команду Pngcrush для каждого PNG. В Automator используются конкретные элементы интерфейса: тип документа Quick Action, кнопка Choose, действие Run Shell Script, настройка Workflow receives current image files in Finder.app, параметр Pass input: as arguments, после чего действие можно сохранить как PNG Crush.

Настройка Run Shell Script в Automator для workflow PNG Crush

Пример shell-логики внутри Automator:

for f in "$@"do  filename=$(basename "$f")  ext="${filename##*.}"  if echo "$ext" | grep -i png; then    pngcrush "$f" "$f.crushed_"    mv "$f.crushed_" "$f"  fidone

Такой workflow превращает консольный Pngcrush в пункт контекстного меню Finder. Пользователь выбирает PNG-файл или группу PNG-файлов, открывает контекстное меню, переходит в Services и запускает PNG Crush. Это не меняет природу программы: внутри всё равно работает CLI-команда, но запуск становится удобнее для повседневной обработки отдельных изображений.

Пункт PNG Crush в меню Services на macOS

Основные параметры Pngcrush

Параметр Что делает Когда использовать
-brute Перебирает расширенный набор методов фильтрации и сжатия Для финальной оптимизации PNG, когда важен минимальный размер
-rem chunkname Удаляет указанный вспомогательный PNG-блок Для удаления комментариев, служебных данных и лишних chunks
-rem alla Удаляет известные ancillary chunks, кроме tRNS Для веб-графики, где прозрачность нужно сохранить
-rem allb Удаляет все, кроме tRNS и gAMA Когда нужно сильнее чистить файл, но оставить прозрачность и гамму
-reduce Делает lossless-уменьшение color type или bit depth Для PNG с избыточной глубиной цвета
-d dir Записывает выходные файлы в указанную папку Для пакетной обработки без замены исходников
-e ext Задает новое расширение выходных файлов Для массового создания копий с новым именованием
-ow Перезаписывает исходный файл Для автоматизации после проверки команды
-q Уменьшает объем вывода Для скриптов и тихой пакетной обработки
-s Подавляет вывод, включая предупреждения Для полностью тихого режима, когда лог не нужен
-v Показывает более подробную информацию Для диагностики и анализа PNG
-n Не пишет выходной файл Для тестов, анализа и проверки скорости декодирования
-fix Пытается исправить фатальные условия вроде плохих CRC Для проблемных PNG, которые нужно попытаться прочитать
-force Записывает выходной файл даже если он больше Для случаев, когда важны изменения chunks, а не только размер
-res dpi Записывает pHYs с разрешением в dpi Для файлов, где нужно указать физическое разрешение
-text Добавляет tEXt chunk Для записи текстового комментария
-itxt Добавляет iTXt chunk Для UTF-8-текста и интернационализированных подписей
-ztxt Добавляет сжатый zTXt chunk Для текстовых данных, которые лучше хранить сжатыми
-srgb Задает rendering intent для sRGB Для управления цветовым назначением
-oldtimestamp Сохраняет исходное время изменения файла Для архивов и сборок, где важны timestamps
-newtimestamp Обновляет время изменения файла Для обычного пересохранения результата

Многие параметры Pngcrush относятся не к визуальному редактированию, а к структуре PNG-файла. Это принципиальное отличие от графических редакторов: программа работает с тем, как PNG хранит изображение и служебные данные, а не с тем, как пользователь рисует или меняет картинку.

Работа с цветовым типом и битовой глубиной

Pngcrush умеет управлять color type через -c и bit depth через -bit_depth. PNG поддерживает несколько типов цвета: grayscale, truecolor, indexed color, grayscale with alpha, truecolor with alpha. Выбор подходящего типа влияет на размер, потому что разные изображения требуют разного способа хранения данных. Например, простая черно-белая графика может храниться компактнее как grayscale, а полноцветное изображение с альфой требует truecolor with alpha.

Пример принудительного преобразования к grayscale без alpha:

pngcrush -c 0 input.png output.png

Пример указания truecolor без alpha:

pngcrush -c 2 input.png output.png

Такие команды нужно применять только тогда, когда пользователь понимает, что делает. Если у изображения есть значимая прозрачность, удаление alpha channel изменит его смысл. Если цветная иконка принудительно переводится в grayscale, это уже не просто оптимизация размера, а изменение изображения. Для безопасной автоматической оптимизации чаще используют -reduce, потому что он рассчитан на lossless-сокращение, когда данные действительно позволяют это сделать.

Работа с gamma, sRGB и цветовыми профилями

Pngcrush умеет добавлять и заменять служебные цветовые блоки. Например, -g добавляет gAMA, если такого блока нет, а -replace_gamma принудительно заменяет gamma-значение. Параметр -srgb задает rendering intent для sRGB chunk. Такие функции нужны не каждому пользователю, но они важны для тех, кто работает с PNG как с форматом, а не просто как с картинкой.

Пример записи разрешения:

pngcrush -res 300 input.png output.png

Пример добавления текстового комментария:

pngcrush -text b "Comment" "Optimized with pngcrush" input.png output.png

Пример добавления сжатого текстового блока:

pngcrush -ztxt b "Comment" "Compressed text metadata" input.png output.png

Для веб-оптимизации чаще делают обратное: не добавляют метаданные, а удаляют лишние. Но наличие таких параметров показывает, что Pngcrush — не просто сжималка PNG, а инструмент для точечной работы с внутренней структурой PNG-файла.

Как читать вывод Pngcrush

После запуска Pngcrush выводит техническую информацию о процессе. Самые важные строки:

Recompressing IDAT chunks in input.png to output.pngTotal length of data found in critical chunks = ...Critical chunk length, method ...Best pngcrush method = ...filesize reductionCPU time decode, encode, other, total

Recompressing IDAT chunks означает, что программа пересжимает данные изображения. Total length of data found in critical chunks показывает объем критических данных. Строки Critical chunk length, method отображают проверяемые методы. Best pngcrush method показывает метод, который дал лучший результат. filesize reduction показывает процент уменьшения размера файла. В подробном режиме через -v информации становится больше.

Пример команды для диагностики:

pngcrush -n -v image.png

-n не записывает выходной файл, а -v показывает подробности. Это полезно, если нужно изучить PNG, посмотреть структуру и оценить, есть ли смысл в дальнейшей оптимизации.

Практические сценарии использования

Оптимизация PNG для сайта

Для сайта обычно важны малый вес файла, сохранение прозрачности и отсутствие лишних метаданных. Подходит команда:

pngcrush -brute -rem alla -reduce input.png output.png

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

Обработка папки с ассетами

Для проекта с множеством PNG лучше не перезаписывать исходники сразу:

mkdir optimizedpngcrush -d optimized *.png

После проверки результата файлы из optimized можно использовать в сборке. Этот сценарий удобен для фронтенд-проектов, тем оформления, мобильных приложений и игровых ресурсов.

Подготовка PNG к хранению в репозитории

Для репозитория важно, чтобы изображения были компактными, а команда — воспроизводимой:

pngcrush -brute -rem alla -reduce source.png source.optimized.png

После проверки можно зафиксировать оптимизированный файл в Git. Плюс такого подхода — понятная история: видно, какой файл был обработан и какой командой.

Проверка без записи результата

Если нужно понять, как Pngcrush будет вести себя с файлом, но не создавать выходной PNG:

pngcrush -n -v image.png

Это полезно для диагностики проблемных изображений, проверки структуры PNG и анализа того, какие chunks присутствуют внутри файла.

Перезапись после проверки

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

pngcrush -ow -brute -rem alla -reduce image.png

Такой режим удобен в автоматизации, но он должен применяться осознанно. Если исходные PNG нужны как архивные оригиналы, лучше не использовать -ow в рабочей папке.

Где Pngcrush особенно силен

Pngcrush хорошо подходит для ситуаций, где важна предсказуемая lossless-оптимизация:

  • PNG-иконки;

  • элементы пользовательского интерфейса;

  • изображения с прозрачностью;

  • графика для сайтов;

  • ассеты приложений;

  • скриншоты с большими однотонными областями;

  • PNG, сохраненные графическим редактором с лишними chunks;

  • изображения, которые нужно обрабатывать в скриптах;

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

Особенно ценна способность Pngcrush не только пересжимать IDAT, но и управлять служебными блоками. Многие PNG-файлы становятся тяжелее из-за комментариев, профилей, временных меток, физических размеров, цветовой информации и прочих данных, которые не всегда нужны в веб-графике. Pngcrush позволяет не гадать, а явно указать, что оставить и что удалить.

Где Pngcrush не лучший выбор

Pngcrush не стоит воспринимать как универсальный способ сделать PNG максимально маленьким любой ценой. Он не является lossy-компрессором и не заменяет pngquant, если допустима потеря части цветовой информации ради сильного уменьшения размера. Он не заменяет графический интерфейс ImageOptim, если пользователю нужно просто перетащить файлы мышью. Он не является современным многопоточным оптимизатором уровня Oxipng, если главный критерий — скорость на больших наборах PNG.

Pngcrush также может быть невыгоден для уже хорошо оптимизированных PNG. Если файл уже обработан сильным оптимизатором, повторный запуск может дать нулевой или очень небольшой выигрыш. Это нормально: программа не ломает изображение ради красивого процента.

Плюсы и минусы Pngcrush

Плюсы Минусы
Оптимизация PNG без потери качества Нет графического интерфейса
Подробный контроль параметров Требуется понимание командной строки
Работа с IDAT, PNG-фильтрами и zlib-сжатием -brute может быть медленным
Удаление и добавление chunks Не всегда дает большой выигрыш на уже оптимизированных PNG
Подходит для скриптов и автоматизации Параметры вроде -rem, -c, -g требуют осторожности
Есть пакетная обработка через -d и -e Не является lossy-компрессором
Можно использовать в build pipeline Не предназначен для редактирования изображения как графический редактор 

Сравнение с аналогами

OptiPNG

OptiPNG близок к Pngcrush по идеологии: это PNG optimizer, который пересжимает изображения без потери информации. Он также работает с идеей поиска более компактного представления PNG и ориентирован на lossless-результат. OptiPNG часто используют как более прямой оптимизатор: запустил с уровнем оптимизации — получил файл.

Разница в том, что Pngcrush сильнее воспринимается как инструмент для точечной работы с chunks и ручной настройки поведения. OptiPNG чаще используют как простой оптимизатор без глубокого вмешательства в структуру PNG. Pngcrush удобнее там, где нужно явно удалить tEXt, сохранить или изменить gAMA, управлять pHYs, добавить iTXt или контролировать детали вывода.

Критерий Pngcrush OptiPNG
Тип работы CLI-оптимизатор PNG CLI-оптимизатор PNG
Потери качества Нет при обычной IDAT-оптимизации Нет
Управление chunks Очень развитое Есть, но фокус больше на оптимизации
Удобство для простого запуска Среднее Выше
Гибкость для PNG-структуры Высокая Средняя/высокая
Подходит для скриптов Да Да

Oxipng

Oxipng — современный lossless PNG/APNG optimizer, написанный на Rust. Он многопоточный, быстрый и хорошо подходит для массовой обработки PNG. Его типовая команда вроде oxipng -o 4 --strip safe --alpha *.png выглядит проще для повседневной оптимизации, а уровни оптимизации дают понятный баланс скорости и степени сжатия.

Pngcrush уступает Oxipng по удобству массовой быстрой обработки, но остается полезным для сценариев, где нужно тонко управлять PNG chunks и использовать проверенную CLI-модель с конкретными параметрами. Oxipng лучше для современных пайплайнов, где важны скорость, многопоточность и короткие команды. Pngcrush лучше для точечной работы и старых сценариев, где команда уже встроена в инструменты или скрипты.

Критерий Pngcrush Oxipng
Основной формат PNG PNG/APNG
Многопоточность Не главный акцент Да
Скорость на больших наборах Ниже Выше
Управление chunks Подробное Есть через strip-настройки
Простота команды Ниже Выше
Роль в пайплайне Точная оптимизация и chunk surgery Быстрая массовая оптимизация

pngquant

pngquant решает другую задачу. Это lossy PNG compressor: он уменьшает размер PNG за счет преобразования изображения в палитровое представление с ограниченным количеством цветов и адаптивным dithering. Такой подход может уменьшать файлы значительно сильнее, но результат уже не является строго тем же изображением на уровне данных.

Pngcrush выбирают, когда нужен PNG без потери качества. pngquant выбирают, когда допустима визуально контролируемая потеря цвета ради гораздо меньшего веса. Частый практический сценарий — сначала pngquant для lossy-уменьшения, затем lossless-оптимизатор для финального пересжатия. Но если проект требует идентичного изображения, pngquant не заменяет Pngcrush.

Критерий Pngcrush pngquant
Тип сжатия Lossless Lossy
Основной метод Пересжатие IDAT, фильтры, chunks Квантование цветов, палитра, dithering
Сохранение исходных цветов Да при обычной оптимизации Нет, цвета приближаются
Степень уменьшения Обычно умеренная Часто значительно выше
Подходит для UI-иконок Да Да, если потери допустимы
Подходит для архивного оригинала Да Нет

ZopfliPNG / zopflipng

ZopfliPNG использует Zopfli compression для Deflate и ориентирован на очень плотное PNG-сжатие ценой гораздо большего времени работы. Он сравнивает стратегии scanline filters, выбирает подходящий color type, удаляет неважные для веба chunks и может выполнять дополнительные оптимизации вроде изменения скрытых цветов полностью прозрачных пикселей.

Pngcrush рациональнее для случаев, где нужен баланс контроля и времени. ZopfliPNG уместен, когда файл финальный, изображений немного, а минимальный размер важнее скорости. Для больших каталогов Zopfli-подход может быть слишком медленным.

Критерий Pngcrush ZopfliPNG / zopflipng
Основная цель Lossless PNG optimization с контролем chunks Максимально плотное Deflate-сжатие PNG
Скорость Обычно быстрее Обычно медленнее
Степень сжатия Хорошая Часто выше
Управление метаданными Подробное Есть, но фокус на web-оптимизации
Лучшее применение Регулярная оптимизация и скрипты Финальный прогон важных PNG

ImageOptim

ImageOptim — графическая macOS-программа, которая объединяет несколько оптимизаторов, включая MozJPEG, pngquant, Pngcrush, 7zip, SVGO и Google Zopfli. Она работает по принципу drag-and-drop, удаляет лишние метаданные и сжимает изображения без потери качества в стандартном режиме.

Pngcrush — один из инструментов, которые могут быть частью такого GUI-подхода. Если пользователю нужно просто перетащить файлы и получить результат, ImageOptim удобнее. Если нужно точно управлять параметрами, писать скрипты, выбирать -rem, -reduce, -brute, -d, -ow, то Pngcrush дает больше прямого контроля.

Критерий Pngcrush ImageOptim
Интерфейс Командная строка Графический drag-and-drop
Контроль параметров Высокий Ограничен настройками GUI
Набор форматов PNG Несколько форматов
Встроенные инструменты Самостоятельный CLI Комбинирует несколько оптимизаторов
Автоматизация Через shell/CI/scripts Через приложение и интеграции
Лучшее применение Точная PNG-обработка Быстрая оптимизация для пользователя macOS

PNGOUT

PNGOUT — другой CLI-оптимизатор PNG, известный сильным Deflate-сжатием и ориентацией на минимальный размер. PNGOUT может давать очень компактные файлы, но часто требует более ручного подбора параметров. Pngcrush удобнее как автоматический инструмент перебора и пакетной обработки. PNGOUT интересен там, где пользователь готов тратить больше времени на ручную настройку ради нескольких дополнительных процентов. Для массовой повторяемой оптимизации Pngcrush часто практичнее.

Критерий Pngcrush PNGOUT
Интерфейс CLI CLI
Подбор методов Автоматизированный Больше ручного контроля
Пакетная обработка Есть через -d, -e, shell Нет встроенного batch mode
Потенциал минимального размера Хороший Очень высокий при удачных настройках
Удобство в скриптах Высокое Среднее
Лучшее применение Повторяемая PNG-оптимизация Тонкая ручная дооптимизация

Типичные ошибки при работе с Pngcrush

Использовать -ow без резервной копии

-ow удобен, но опасен при первом запуске. Если команда удаляет нужные chunks или меняет служебные данные, исходник уже заменен. Правильнее сначала делать так:

pngcrush input.png output.png

или так:

pngcrush -d optimized *.png

И только после проверки переходить к -ow.

Удалять все chunks без понимания

Команды с -rem могут быть полезны, но не все ancillary chunks лишние. Для веб-иконки удаление комментариев и части метаданных обычно нормально. Для изображения, где важны цветовой профиль, gamma или физическое разрешение, агрессивная чистка может быть нежелательной.

Ожидать огромного уменьшения размера всегда

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

Сравнивать Pngcrush с lossy-компрессорами напрямую

pngquant, TinyPNG-подобные сервисы и некоторые режимы современных оптимизаторов могут резко уменьшать размер за счет потерь. Pngcrush работает иначе: он сохраняет изображение без визуального ухудшения при стандартной оптимизации. Поэтому сравнение с lossy-компрессорами не означает, что Pngcrush хуже. Это разные классы задач.

Рекомендованные команды для разных задач

Задача Команда
Простая оптимизация одного файла pngcrush input.png output.png
Усиленная оптимизация pngcrush -brute input.png output.png
Веб-оптимизация с удалением лишних blocks pngcrush -brute -rem alla -reduce input.png output.png
Обработка всех PNG в папке pngcrush -d optimized *.png
Создание копий с новым расширением pngcrush -e .crushed.png *.png
Перезапись после проверки pngcrush -ow -brute -rem alla -reduce image.png
Подробная диагностика pngcrush -n -v image.png
Сохранение старого timestamp pngcrush -oldtimestamp input.png output.png
Добавление pHYs-разрешения pngcrush -res 300 input.png output.png
Удаление текстовых chunks pngcrush -rem text input.png output.png

Безопасный рабочий процесс

Оптимальный порядок работы с Pngcrush такой:

  1. Сначала обработать один файл без перезаписи.

  2. Сравнить размер исходника и результата.

  3. Открыть оба изображения в целевом просмотрщике или браузере.

  4. Проверить прозрачность, цвет и внешний вид.

  5. Если используется -rem, убедиться, что удаленные chunks не нужны.

  6. Прогнать команду на копии папки.

  7. Только после этого использовать -ow или подключать команду к автоматизации.

Для веб-графики часто достаточно команды:

pngcrush -brute -rem alla -reduce input.png output.png

Для осторожной универсальной оптимизации:

pngcrush input.png output.png

Для массовой обработки без риска:

mkdir optimizedpngcrush -d optimized *.png

Производительность и практическая скорость

Скорость Pngcrush зависит от размера PNG, сложности изображения и выбранных параметров. Обычный запуск работает быстрее, -brute — заметно медленнее. Это ожидаемая цена за перебор большого количества сочетаний фильтров и сжатия.

Для небольших UI-изображений время обычно не критично. Для больших каталогов с тысячами PNG лучше выбирать стратегию:

  • сначала прогнать быстрый базовый режим;

  • затем применять -brute только к финальным или крупным файлам;

  • использовать пакетную обработку по папкам;

  • запускать несколько независимых процессов, если нужно распараллелить работу на уровне shell;

  • не использовать агрессивные параметры в каждом промежуточном билде.

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

Качество результата

При обычной оптимизации Pngcrush не снижает качество изображения. Он меняет способ хранения и сжатия данных, а не рисует новые пиксели. Поэтому результат подходит для интерфейсной графики, скриншотов, технических изображений и ассетов, где нельзя допустить JPEG-подобные артефакты.

Но некоторые параметры могут менять не только размер. Например, принудительное изменение color type через -c, удаление alpha channel, изменение gamma или удаление цветового профиля может повлиять на то, как файл интерпретируется в конкретном приложении. Поэтому Pngcrush безопасен настолько, насколько безопасна выбранная команда. Базовое пересжатие и -reduce — это одно; агрессивная чистка chunks и ручное изменение цвета — другое.

Для кого подходит Pngcrush

Pngcrush подходит пользователям, которым нужна не красивая кнопка Сжать, а точный инструмент:

  • веб-разработчикам;

  • верстальщикам;

  • разработчикам приложений;

  • специалистам по производительности сайтов;

  • авторам документации со множеством PNG-скриншотов;

  • разработчикам игр с PNG-ассетами;

  • администраторам build pipeline;

  • пользователям Linux/macOS/Windows, которым удобно работать с CLI;

  • тем, кто хочет повторяемую оптимизацию PNG без загрузки файлов в онлайн-сервисы.

Для новичка Pngcrush может показаться сухим и неудобным. Но если задача повторяется регулярно, команда один раз подбирается и затем работает годами: в shell-скрипте, Makefile, npm script, CI job, Automator workflow или другом сценарии автоматизации.

Итоговая оценка

Pngcrush — надежный и точный оптимизатор PNG-файлов для командной строки. Его главные достоинства — lossless-сжатие, работа с IDAT, управление PNG chunks, пакетная обработка и хорошая пригодность для автоматизации. Он не пытается быть графическим редактором и не конкурирует с drag-and-drop-приложениями по удобству. Его сильная сторона — контроль.

Программа лучше всего раскрывается в задачах, где нужно уменьшить размер PNG без потери качества, удалить лишние метаданные, сохранить прозрачность, подготовить веб-графику или встроить PNG optimization в сборку проекта. Если нужна максимальная простота — удобнее ImageOptim. Если нужна высокая скорость и многопоточность — сильным конкурентом будет Oxipng. Если допустимы потери ради сильного уменьшения размера — подойдет pngquant. Но если нужен классический консольный инструмент для аккуратной оптимизации PNG и работы со структурой файла, Pngcrush остается прямым и практичным выбором.