Pngcrush — бесплатная консольная утилита Glenn Randers-Pehrson для повторного сжатия PNG-файлов. Она не меняет фотографию как редактор: основной механизм перебирает сочетания PNG-фильтров и параметров zlib, сравнивает размер потока IDAT и записывает более подходящий вариант. В дополнение к этому Pngcrush умеет управлять рядом служебных PNG-блоков, выполнять без потерь допустимые упрощения цветового представления, проверять целостность и в отдельных случаях восстанавливать повреждённые файлы. Главная особенность продукта в 2026 году — сочетание узкой технической специализации и очень старого upstream: последний упакованный релиз на SourceForge имеет номер 1.8.13 и датирован 29 августа 2017 года, а официальная ветка исходного кода содержит версию 1.8.14 с последними изменениями осенью 2017 года.
Скачать Pngcrush бесплатно
Рекомендуемый аналог
ФотоМАСТЕР
Фоторедактор для Windows и macOS с русским интерфейсом
- Ретушь портретов и точная коррекция фото
- Удаление объектов, замена фона и неба
- Пакетная обработка и популярные форматы
- Понятный русскоязычный интерфейс
Pngcrush
Программа для работы с изображениями и графикой на русском языке
- Меньше инструментов для точной локальной коррекции
- Часть расширенных функций доступна только платно
- Набор инструментов зависит от версии и платформы
- Может не подойти для сложного профессионального монтажа
Что такое Pngcrush и для чего он нужен
Pngcrush относится не к фоторедакторам, а к оптимизаторам формата Portable Network Graphics. На входе он получает PNG, декодирует структуру файла через libpng, затем многократно формирует варианты с разными фильтрами и настройками Deflate/zlib. Побеждает вариант с меньшим потоком критических данных изображения. Поэтому обычный сценарий использования — уменьшить уже готовый PNG после экспорта из графического редактора, системы генерации изображений, приложения или сайта, не рисуя и не ретушируя содержимое вручную.
Автор Pngcrush — Glenn Randers-Pehrson. В исходниках также сохранены уведомления об авторских правах Greg Roelofs и других авторов библиотек, с которыми собирается программа. Проект входит в набор PNG and MNG tools (PMT). Это важное уточнение идентичности: речь идёт именно об upstream-утилите Randers-Pehrson, а не о веб-сервисах со схожими названиями и не о сторонних графических оболочках, которые могут запускать Pngcrush внутри себя.
Утилита работает на уровне PNG-контейнера и его сжатого потока. Она не предназначена для коррекции экспозиции, цвета фотографии, кадрирования, удаления объектов, повышения разрешения или генеративной обработки. Если задача состоит в визуальном редактировании, Pngcrush находится уже после редактора в технологической цепочке: сначала создаётся итоговый PNG, затем оптимизатор пытается сделать его компактнее или изменить служебные блоки.
Краткие характеристики
| Параметр | Состояние |
| Тип | Консольный оптимизатор и диагностическая утилита для PNG |
| Автор upstream | Glenn Randers-Pehrson |
| Последний упакованный релиз | 1.8.13, 29 августа 2017 года |
| Версия в официальной ветке исходников | 1.8.14; последние изменения ветки относятся к осени 2017 года |
| Основной входной формат | PNG |
| Основной выходной формат | PNG; отдельная условно-компилируемая функция LOCO создаёт MNG |
| Интерфейс | Командная строка, англоязычные параметры и встроенная справка |
| Основная оптимизация | Перебор фильтров PNG, уровней и стратегий zlib с выбором меньшего IDAT |
| Пакетная работа | Да: несколько входных файлов, выходной каталог или расширение имени |
| Работа без облака | Да, обработка локальных файлов; учётная запись не требуется |
| ИИ-функции | Нет |
| Мобильное приложение | Официального приложения upstream для Android или iOS нет |
| Лицензирование | Исходный код можно использовать, копировать, изменять и распространять без платы при соблюдении условий лицензии |
| Цена и подписка | Платы, подписки, пробного периода и функционального деления на тарифы нет |
Текущий статус, версии и платформы
Почему одновременно встречаются 1.8.13 и 1.8.14
У Pngcrush необычная ситуация с нумерацией. В каталоге релизов SourceForge последней опубликованной папкой остаётся 1.8.13 от 29 августа 2017 года. В официальной ветке pngcrush репозитория PMT исходный файл определяет номер 1.8.14; история этой ветки содержит обновление до 1.8.14 в октябре 2017 года и несколько последующих правок документации и поведения в ноябре. Отдельного упакованного релиза 1.8.14 в основном каталоге SourceForge нет.
Развивается ли программа сейчас
Публичная upstream-ветка не показывает новых изменений после ноября 2017 года. Формального механизма подписки или текущего коммерческого цикла у программы нет. При этом Pngcrush не исчез из экосистемы: Homebrew продолжает предоставлять формулу 1.8.13 для современных macOS и Linux, а пакет 1.8.13 на основе исходников присутствует в актуальных репозиториях Ubuntu. Это означает, что утилита остаётся устанавливаемой, но её upstream-код старый и не получает современного потока функциональных обновлений.
Windows, macOS, Linux и другие Unix-подобные системы
Исходный проект рассчитан на запуск из командной строки Windows и Unix/Linux. Официальная страница отдельно упоминает Windows-исполняемые файлы, однако каталог готовых upstream-бинарников отстаёт от каталога исходных релизов: в нём последняя отдельная папка — 1.8.11. Для Windows это ещё одна причина не путать «последний исходный релиз» с «последним готовым exe из старого upstream-каталога».
На macOS и Linux Pngcrush доступен через пакетные менеджеры. Homebrew в 2026 году публикует стабильную формулу 1.8.13 с готовыми пакетами для актуальных веток macOS на Apple Silicon, части Intel-систем и для Linux на ARM64 и x86-64. В Ubuntu пакет собирается для нескольких аппаратных архитектур и зависит от системных libpng и zlib. Сам исходник написан на C и может быть собран на других совместимых системах при наличии необходимых библиотек и компилятора.
Отдельных системных требований в стиле «минимум 8 ГБ ОЗУ» или «Windows 11 и новее» upstream не публикует. Это небольшая консольная программа, а реальные требования определяются способом сборки, версиями библиотек и пакетом конкретной ОС. Некоторые режимы перебора фильтров прямо отмечены в справке как более требовательные к памяти, поэтому на ограниченной среде лучше выбирать конкретные методы вместо максимального перебора.
Что нельзя путать с обычным Pngcrush
Модифицированная версия Apple
В исходном коде и на странице проекта отдельно описана изменённая Apple-версия, распространявшаяся в составе инструментов Xcode. У неё были дополнительные параметры, включая операции для iPhone-оптимизации. Такой вариант создавал поток с блоком CgBI и нестандартным представлением сжатых данных, которое upstream Pngcrush прямо отделяет от обычного стандартизованного PNG.
Обычный Pngcrush из PMT не следует описывать как средство создания CgBI-файлов для iOS. Наоборот, его исходники распознают признаки Apple-модификации и содержат логику для попытки исправления такого файла. Полное восстановление исходной точности полупрозрачных цветов после прежнего преобразования Apple не гарантируется: в комментариях к upstream-коду отмечена необратимая потеря точности из-за премультиплицированного альфа-канала.
Графические оболочки
Сам Pngcrush не имеет drag-and-drop-окна, панели предпросмотра или вкладок. Существуют графические программы, которые запускают его вместе с другими оптимизаторами, но их интерфейс, настройки и лицензирование не относятся к интерфейсу Pngcrush. Для пользователя это особенно заметно на macOS: ImageOptim, например, способен включать Pngcrush в цепочку оптимизации, но является самостоятельным приложением с собственными алгоритмами и поведением.
Интерфейс: терминал вместо графического окна
Рабочая область Pngcrush — стандартная консоль операционной системы. Пользователь вводит имя программы, параметры и пути к файлам. В ответ утилита печатает версию, сведения о библиотеках, диагностические сообщения, результаты испытанных методов и итоговую статистику. Никакой отдельной медиатеки, холста, панели слоёв или визуального сравнения «до/после» в upstream нет.

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

Ещё один типичный экран — информация о версии, лицензии и связанных библиотеках. Старые Windows-сборки выводили её непосредственно в Command Prompt. Современный пользователь увидит тот же текстовый принцип взаимодействия, хотя версии libpng, zlib, компилятора и Pngcrush зависят от конкретной сборки.

Как устроена основная оптимизация
IDAT, фильтры и zlib
Данные пикселей PNG хранятся в одном или нескольких блоках IDAT в виде потока Deflate. Перед сжатием строки изображения проходят через PNG-фильтр. Разные изображения по-разному реагируют на сочетание фильтра, уровня компрессии, стратегии zlib и размера окна. Поэтому Pngcrush не пытается «угадать» один универсальный пресет, а строит несколько кандидатов и сравнивает результат.
Параметр -f выбирает фильтр для заданного метода: 0 означает отсутствие фильтрации, 1–4 — конкретные PNG-фильтры, 5 — адаптивный выбор. -l задаёт уровень zlib от 0 до 9, -z — стратегию, а -zmem — уровень памяти zlib. Параметр -w управляет размером окна сжатия; встроенная справка допускает значения от 32 КБ вниз до 512 байт и называет 32 КБ значением по умолчанию.
Команда -m позволяет явно выбрать метод Pngcrush и повторить параметр несколько раз. В исходнике 1.8.14 максимальный номер метода равен 177. Методы 1, 4 и 7 не используют фильтрацию; методы 2, 3, 5, 6, 8, 9 и 10 применяют фильтрацию и помечены как более требовательные к памяти; методы начиная с 11 соответствуют определённым сочетаниям фильтра, уровня и стратегии.
Режим -brute
-brute заставляет программу пройти расширенный набор вариантов: при наличии стратегии Z_RLE справка говорит о 176 методах, без неё — о 166. Сам авторский текст называет этот режим очень затратным по времени и в общем случае не стоящим затраченных ресурсов. Его можно ограничивать дополнительными -f, -l или -z, чтобы не перебирать весь набор.
Досрочное прекращение неудачного метода
По умолчанию действует механизм -bail: если текущий вариант уже становится больше лучшего найденного результата, испытание можно прекратить, не доводя расчёт до конца. -nobail отключает это поведение и полезен тогда, когда требуется получить точный размер каждого испытанного варианта. Для обычного уменьшения файла ранний выход экономит время и не мешает выбрать лучший из реально конкурентных кандидатов.
Оптимизации без потери визуальной информации и операции, меняющие данные
-reduce
В последних исходниках -reduce объединяет несколько структурных упрощений PNG, которые выполняются только тогда, когда представление можно сократить без изменения видимых значений изображения. Программа может понизить 16-битное представление до 8-битного, когда фактические значения это допускают; преобразовать RGB/RGBA в оттенки серого, если все цветовые компоненты действительно равны; удалить полностью непрозрачный альфа-канал; уменьшить длину палитры при подходящих условиях.
Проверки зависят и от вспомогательных блоков. История проекта отдельно фиксирует ситуации, когда уменьшение цветового типа или битности не выполняется из-за bKGD, sBIT, iCCP или hIST, потому что преобразование могло бы нарушить связанную информацию. -noreduce отключает все такие операции, а -noreduce_palette — только сокращение палитры.
Это не то же самое, что снижение качества фотографии. При корректно выполненном -reduce удаляется избыточное представление, а не визуальная информация. Но структура PNG после операции может стать другой, поэтому в технологических процессах, где важны точный цветовой тип, битность или лабораторное сравнение структуры файла, безопаснее отключить сокращения и ограничиться повторным сжатием IDAT.
-blacken
-blacken — принципиально иной параметр. Он обнуляет цветовые значения под полностью прозрачными пикселями, чтобы эти скрытые данные легче сжимались. Встроенная справка прямо называет операцию lossy и оставляет её выключенной по умолчанию. На обычном отображении полностью прозрачный пиксель не виден, но исходные RGB-значения под прозрачностью утрачиваются.
Такие скрытые цвета могут понадобиться при последующей обработке, изменении альфа-канала или в специальных графических конвейерах. Поэтому включать -blacken только ради нескольких дополнительных байтов без понимания дальнейшего использования файла не стоит. Для архивных мастер-файлов параметр особенно нежелателен.
Принудительный цветовой тип -c
-c позволяет указать выходной тип цвета 0, 2, 4 или 6. Значения 0 и 4 могут переводить цветное изображение в оттенки серого, а 0 и 2 — удалять альфа-канал. Если входной файл не содержит альфа-информации, типы 4 и 6 дополняются непрозрачным альфа-каналом. Это уже целенаправленное преобразование изображения, а не нейтральный поиск лучшего сжатия.
Для типичного фотографического PNG параметр -c лучше не задавать без отдельной причины: значение по умолчанию сохраняет входной тип цвета. Если требуется именно оптимизация размера без визуального преобразования, достаточно механизмов перебора и разрешённых сокращений -reduce.
Работа с метаданными и служебными блоками PNG
Удаление ancillary chunks
Параметр -rem удаляет указанный вспомогательный блок. Его можно повторять для нескольких типов. В справке предусмотрены групповые варианты alla и allb: первый удаляет известные вспомогательные блоки, кроме tRNS, второй дополнительно сохраняет gAMA. Специальное имя text охватывает текстовые блоки разных видов.
Сам исходный код сопровождает эту функцию предупреждением: не следует бездумно удалять прозрачность, гамму, авторские сведения и другую ценную информацию. Сжатие PNG и очистка метаданных — разные задачи. На веб-копии удаление ненужного текста может быть уместно, но на мастер-файле ICC-профиль, разрешение, авторская информация или описание могут быть частью рабочего процесса.
Добавление гаммы, sRGB, ICC и разрешения
-g вставляет gAMA, если такого блока ещё нет; -replace_gamma заменяет существующее значение. -srgb вставляет sRGB с числом намерения рендеринга от 0 до 3. Параметр -iccp способен добавить ICC-профиль в iCCP, если соответствующая поддержка присутствует в используемой libpng-сборке. -res записывает физическое разрешение через pHYs, переводя значение DPI в пиксели на метр.
Эти функции не являются автоматической цветокоррекцией. Pngcrush не анализирует фотографию и не подбирает профиль. Пользователь сам передаёт значения или файл профиля. Ошибочная гамма или неподходящий ICC-профиль способны изменить интерпретацию цвета в приложениях, которые уважают цветовое управление, поэтому добавление таких блоков требует знания исходных данных.
Текстовые блоки
Утилита умеет вставлять tEXt, zTXt и iTXt. Для tEXt команда -text принимает позицию до или после IDAT, название поля и текст; для zTXt применяется -ztxt, для международного текста — -itxt, а сжатый iTXt добавляется через -zitxt. В справке исходника для одной операции ограничено суммарное число добавляемых текстовых блоков — не более десяти.
Это техническая работа с контейнером, а не полноценный менеджер метаданных. Нет табличного редактора полей, поиска по библиотеке фотографий или визуального сравнения профилей. Для единичного служебного блока командная строка достаточна; для массового сложного управления метаданными специализированный инструмент будет удобнее.
Неизвестные блоки, dSIG и -save
-save заставляет Pngcrush сохранять неизвестные copy-unsafe блоки и dSIG. Но сохранение dSIG после изменения потока может оставлять цифровую подпись недействительной; отдельный -keep в текущей справке распознаёт именно dSIG и позволяет удержать его даже после изменений, которые делают подпись недействительной. Это пример параметра, который нельзя воспринимать как гарантию корректности содержимого сохранённого блока.
Если PNG проходит через систему, где нестандартные дополнительные блоки имеют смысл, перед оптимизацией стоит сначала изучить структуру через режим без записи и только затем решать, какие элементы сохранять. Для обычной публикационной копии требования проще, но удаление «всего лишнего» всё равно должно быть осознанным.
APNG и MNG: ограниченная поддержка анимации
Pngcrush не является редактором анимации. В исходнике предусмотрено сохранение блоков APNG acTL, fcTL и fdAT только при определённых условиях: имя выходного файла должно иметь расширение .apng, а цветовой тип и битность должны остаться без изменения. История проекта описывает это как сохранение анимационных блоков, а не их полноценную перекомпрессию как самостоятельного потока.
Следствие практическое: запуск на APNG без соблюдения этих условий способен лишить файл анимационной структуры. Для коллекции анимированных PNG лучше использовать инструмент с APNG как основной поддерживаемой сущностью, а не рассчитывать на Pngcrush как на универсальный оптимизатор анимации.
В исходниках есть условно компилируемый режим LOCO для truecolor-изображений. Он применяет обратимое цветовое преобразование для лучшей сжимаемости и создаёт MNG, а не PNG; для такого результата справка рекомендует расширение .mng. Поскольку функция зависит от параметров сборки и не относится к типичному PNG-процессу, считать MNG стандартным вторым форматом экспорта каждой установленной копии Pngcrush нельзя.
Пакетная обработка и автоматизация
Консольная архитектура хорошо подходит для сценариев и систем сборки. Pngcrush принимает несколько файлов в одной команде, а -d создаёт результаты в отдельном каталоге. Встроенный пример справки использует шаблон нескольких PNG и каталог CRUSHED. Параметр -e вместо каталога создаёт новое имя — например, суффикс _pc.png.
При этом у программы нет собственного планировщика, очереди заданий, наблюдаемой папки или сервера. Автоматизация выполняется внешней оболочкой: shell-скриптом, make-задачей, системой сборки или другим вызывающим процессом. Такое устройство удобно разработчику, но требует аккуратно контролировать коды завершения, пути и перезапись файлов.
-q сокращает вывод до предупреждений и сводки, -s подавляет также предупреждения и итоговую статистику, а -warn оставляет только предупреждения. Для автоматизированной проверки полностью беззвучный режим не всегда лучший: сообщения об ошибках важнее эстетики журнала. При диагностике полезнее наоборот добавить -v, при необходимости повторив его для более подробного вывода.
Многопоточность как самостоятельная функция Pngcrush не заявлена. Один процесс перебирает методы своим алгоритмом; если требуется массовая параллельная оптимизация, параллелизм организуют снаружи. Особую осторожность требует -ow: справка предупреждает, что при одновременном запуске нескольких экземпляров нужно задавать разные временные имена, иначе процессы могут конфликтовать вокруг стандартного временного файла.
Типичный рабочий сценарий
Воспроизводимый процесс удобно строить так, чтобы исходник оставался нетронутым до проверки. Для файла photo.png сначала можно получить информацию без записи: pngcrush -n -v photo.png. Параметр -n отключает сохранение и компрессию, а -v выводит подробности. Этот шаг помогает увидеть, что файл действительно распознаётся как PNG, и зафиксировать исходные характеристики.
- Скопировать мастер-файл или выбрать отдельное имя результата, например photo-crushed.png.
- Для сценария с максимально сохранённым исходным представлением запустить pngcrush -noreduce photo.png photo-crushed.png. Параметр -noreduce отключает стандартные lossless-сокращения цветового типа, битности и палитры, оставляя задачу повторного сжатия.
- Если нужен максимально подробный отчёт, добавить -v. Для измерения всех испытаний без раннего прекращения применяется -nobail, но это увеличивает работу.
- Проверить полученный файл отдельно: pngcrush -check -n -v photo-crushed.png. -check включает проверку CRC и ADLER32, которая по умолчанию отключена.
- Сравнить размер исходного и выходного файлов, открыть результат обычным PNG-декодером и убедиться, что размеры, цвет, прозрачность и нужные метаданные соответствуют задаче.
Этот пример сознательно использует -noreduce и не включает -ow, -rem, -blacken и -c: сначала проще проверить чистую рекомпрессию, не меняя цветовой тип и битность. После этого можно убрать -noreduce, вернуть стандартное lossless-сокращение представления и отдельно оценить выигрыш.
Для каталога готовых веб-изображений удобен другой шаблон: создать отдельную папку и использовать -d, сохраняя имена файлов. Это отделяет исходники от результатов и делает сравнение проще. Перезапись -ow имеет смысл только после того, как резервное копирование и поведение временных файлов уже контролируются.
Перезапись файлов и временные данные
-ow не пишет напрямую поверх открытого входного файла. Утилита создаёт временный результат, затем удаляет исходный файл и переименовывает временный. В справке подчёркнуто, что временный файл и входной должны находиться на одной файловой системе. Это ограничение связано с используемой операцией переименования.
Стандартное временное имя — pngout.png, но его можно передать отдельным аргументом. При параллельных запусках одинаковое временное имя опасно: разные процессы могут обращаться к одному пути. Для пакетной системы безопаснее либо работать в раздельных каталогах, либо выдавать каждому процессу уникальное временное имя.
Проверка на совпадение входного и выходного путей включена специально, чтобы пользователь случайно не дал один и тот же файл в двух позициях обычной команды. Параметр -nofilecheck отключает этот барьер для обхода ложных совпадений в некоторых Windows-сборках, но справка перекладывает ответственность за различие путей на пользователя. Это не удобный способ перезаписи; для перезаписи предназначен -ow.
По умолчанию новая запись получает новое время изменения файла. -oldtimestamp сохраняет исходный timestamp, а -newtimestamp соответствует поведению со сбросом времени. В конвейерах, где дата изменения участвует в кэшировании или развёртывании, этот параметр влияет на повторную обработку не меньше, чем размер результата.
Диагностика целостности и восстановление
-check
PNG содержит CRC для блоков, а поток zlib использует ADLER32. Pngcrush умеет проверять оба типа контрольных сумм через -check. В последнем исходном help -nocheck отмечен как стандартное состояние, поэтому для проверки файла параметр нужно включать явно. В диагностическом сценарии его удобно сочетать с -n -v, чтобы получить сведения без записи нового результата.
-fix
-fix предназначен для попытки спасения PNG с состояниями, которые иначе считаются фатальными. Справка перечисляет плохие CRC, недопустимые байты адаптивного фильтра и повреждённые CMF-байты IDAT, вызывающие ошибку «Too far back». Это режим восстановления, а не гарантия исправления любого повреждённого изображения.
Если файл содержит ошибки, правильный порядок — не перезаписывать оригинал и не включать сразу удаление блоков. Сначала нужно сделать копию, получить диагностический вывод, затем применить -fix к отдельному выходному пути. После этого проверяются контрольные суммы и визуальное декодирование результата. Для данных, которые не удаётся декодировать из-за реально потерянных пиксельных блоков, Pngcrush не может воссоздать отсутствующее содержание.
Apple CgBI
При встрече с CgBI upstream-код сообщает, что поток не является обычным PNG, и предлагает попробовать -fix. Это специализированный случай старых Apple-оптимизированных ресурсов. Даже успешное преобразование не возвращает математически точные скрытые значения полупрозрачных цветов, если они были потеряны на стадии прежнего преобразования.
Форматы импорта и экспорта
Основной и фактически целевой формат Pngcrush — PNG. Утилита читает PNG и записывает PNG после повторной упаковки данных и обработки блоков. Это отличает её от универсальных конвертеров, которые принимают JPEG, TIFF, HEIC, WebP или RAW и превращают их в другие форматы. Перед Pngcrush такой исходник должен быть преобразован в PNG другим инструментом.
Отдельная условная LOCO-функция создаёт MNG, но доступность зависит от сборки. APNG не является обычным экспортным форматом: программа лишь сохраняет его анимационные блоки при соблюдении условий расширения, цветового типа и битности. Для JPEG, WebP, AVIF, TIFF, HEIF, RAW и PDF нет режима непосредственного импорта и экспорта в основной утилите.
Стандартного поточного фильтра stdin/stdout в последнем исходнике нет: поддержка такого режима находится среди нереализованных задач в комментариях к коду. Поэтому автоматизация должна оперировать файловыми путями, а не предполагать Unix-конвейер вида «прочитать PNG со стандартного ввода и отдать оптимизированный PNG в стандартный вывод».
Приватность, сеть, облако и регистрация
Pngcrush обрабатывает файлы локально. В его рабочей модели нет загрузки изображения на сервер, аккаунта, облачного проекта, синхронизации или авторизации. После установки или сборки для оптимизации PNG подключение к интернету не требуется. Для чувствительных изображений это снижает риск передачи содержимого стороннему сервису.
Локальность не решает все вопросы приватности автоматически. Служебные блоки PNG могут содержать текст, профиль, параметры разрешения и другие данные, которые останутся в результирующем файле, если пользователь их не удалит. Pngcrush предоставляет -rem, но не выполняет универсальную автоматическую санитарную очистку «всего личного». Перед публикацией нужно знать, какие блоки действительно присутствуют и какие допустимо удалить.
Также локальный файл может быть недоверенным входом. Учитывая возраст upstream, важна не только конфиденциальность, но и безопасность парсинга. Актуально поддерживаемая сборка из репозитория операционной системы с современными libpng и zlib предпочтительнее случайного старого бинарника. Отключать лимиты через -nolimits на неизвестных файлах без технической причины не следует.
Лицензия, цена и редакции
Pngcrush распространяется как открытый исходный код. Лицензия разрешает использовать, копировать, изменять и распространять исходники, их части и собранные исполняемые программы для любых целей без платы. Ограничения требуют не искажать происхождение кода, явно отмечать изменённые версии и сохранять уведомление об авторских правах, отказ от гарантий и лицензионный текст.
У продукта нет коммерческих уровней Free, Pro или Business, подписки, лимита экспортов и платного снятия водяного знака. Нет и пробного периода: разрешение на использование не ограничено сроком. Регистрация и вход в учётную запись не являются частью программы.
Различия между доступными вариантами обусловлены не тарифами, а способом поставки. Можно получить исходный архив upstream, собрать код из официальной ветки, установить пакет дистрибутива или формулу Homebrew. Эти сборки способны отличаться номером библиотеки, компилятором, включёнными условными возможностями и дополнительными патчами упаковщика.
Плюсы и минусы
Плюсы ✔️
- Основная оптимизация PNG выполняется локально и не требует загрузки изображения в облачный сервис.
- Поиск меньшего IDAT основан на реальном переборе сочетаний фильтров и параметров zlib, а не на единственном фиксированном пресете.
- Доступна точная ручная настройка фильтра, уровня компрессии, стратегии, памяти zlib, размера окна и списка методов.
- -reduce умеет устранять избыточную битность, полностью непрозрачный альфа-канал и другие представления без потери видимого содержания, когда проверка допускает преобразование.
- Утилита управляет рядом PNG-блоков: умеет удалять служебные элементы, добавлять gAMA, sRGB, pHYs, ICC-профиль и текстовые блоки.
- Есть диагностические режимы без сохранения, проверка CRC/ADLER32 и -fix для нескольких известных типов повреждения.
- Пакетная работа предусмотрена самой командной строкой: несколько файлов можно направить в отдельный каталог или переименовывать по шаблону.
- Открытая лицензия не вводит оплату, регистрацию, лимит числа файлов или срок пробного использования.
Минусы ❌
- Upstream фактически застыл в 2017 году: последний опубликованный релиз 1.8.13, а последние изменения официальной исходной ветки 1.8.14 относятся к осени того же года.
- Нет собственного графического интерфейса, предпросмотра, визуального сравнения и удобного редактора метаданных.
- Расширенный -brute прямо описан в справке как очень медленный и обычно не оправдывающий затраты времени.
- Некоторые параметры намеренно изменяют данные: -blacken является lossy, а -c способен удалить альфа-канал или преобразовать цвет в серый.
- APNG поддерживается только как условное сохранение анимационных блоков; это не полноценный современный APNG-оптимизатор.
- Основной формат ограничен PNG: JPEG, WebP, AVIF, HEIC, TIFF и RAW напрямую не обрабатываются как входные форматы.
- Нет встроенной многопоточной очереди, облачной обработки, мобильного приложения или ИИ-функций.
- Поведение и набор условно доступных функций могут зависеть от конкретной сборки и версий libpng/zlib, что требует внимательнее относиться к воспроизводимости.
Кому подойдёт
- Разработчику и системному инженеру, которому нужен скриптуемый локальный этап оптимизации PNG и важна возможность явно задать методы.
- Владельцу сайта с контролируемой сборкой, если изображения уже экспортированы в PNG, требуется безоблачная обработка и приемлем старый, но всё ещё пакетируемый инструмент.
- Специалисту по формату PNG, которому полезны управление отдельными блоками, проверка контрольных сумм и подробный вывод структуры.
- Пользователю архивной системы, где Pngcrush уже встроен и замена требует проверки совместимости; документированные параметры позволяют поддерживать существующий процесс.
- Для единичной диагностики повреждённого PNG, когда проблема относится к типам, для которых предусмотрен -fix.
Кому не подойдёт
- Фотографу, который хочет редактировать изображение визуально: здесь нет инструментов ретуши, коррекции, кадрирования или RAW-проявки.
- Пользователю без навыков командной строки, если нужен drag-and-drop и понятный предпросмотр результата.
- Проекту, которому нужен активно развиваемый оптимизатор с современным upstream, встроенным многопоточным исполнением и полноценной APNG-поддержкой.
- Задачам с несколькими форматами, где в одной очереди должны обрабатываться JPEG, WebP, AVIF, TIFF и PNG.
- Сценарию максимального уменьшения любой ценой, где допустима контролируемая потеря цвета: для этого специализированный квантователь PNG способен дать другой компромисс.
- Мобильной работе, поскольку официального мобильного приложения upstream нет.
Альтернативы Pngcrush
OptiPNG
OptiPNG — ближайшая по идее альтернатива: консольный оптимизатор PNG, который также перебирает параметры, проверяет целостность и выполняет восстановительные операции. В отличие от Pngcrush, его актуальный официальный релиз 7.9.1 относится к 2025 году. Кроме PNG он умеет преобразовывать BMP, GIF, PNM и TIFF в оптимизированный PNG. Поэтому OptiPNG логичнее там, где важен живой upstream и дополнительный импорт растровых форматов.
Oxipng
Oxipng — современный многопоточный lossless-оптимизатор PNG/APNG на Rust. Он доступен как командная утилита и как библиотека для Rust-программ. Его преимущество перед Pngcrush — активная современная кодовая база, многопоточность и APNG как заявленный поддерживаемый формат, а не только условное сохранение отдельных блоков. Pngcrush остаётся интереснее там, где уже используются его специфические параметры работы с PNG-чанками и требуется совместимость со старым конвейером.
ZopfliPNG
ZopfliPNG из проекта Google Zopfli ориентирован на очень плотное Deflate-сжатие. Документация предупреждает о существенно большем процессорном времени и о том, что вспомогательные блоки по умолчанию удаляются, если их не перечислить для сохранения. Этот вариант подходит для финальной редкой подготовки статических веб-ресурсов, когда время кодирования менее важно. Pngcrush предлагает более широкий контроль метаданных и множество быстрых или ограниченных методов без обязательного Zopfli-подхода.
pngquant
pngquant решает другую задачу: это lossy-компрессор PNG, который переводит изображение в качественно подобранную палитру и использует дизеринг. Он способен уменьшать файлы сильнее именно потому, что допускает потерю части цветовой информации. Его следует выбирать, когда визуально приемлемая палитризация важнее математического сохранения исходных значений. Pngcrush по умолчанию работает как lossless-оптимизатор контейнера и сжатия; его намеренно lossy-функции не заменяют полноценное квантование.
ImageOptim
Для macOS ImageOptim даёт графический drag-and-drop-интерфейс и объединяет несколько оптимизаторов, в том числе Pngcrush, pngquant и Zopfli. Это вариант для пользователя, которому не нужен ручной подбор параметров в терминале. При этом результат ImageOptim нельзя приписывать одному Pngcrush: приложение само запускает несколько инструментов и имеет собственные настройки удаления метаданных и lossy-режима.
Частые проблемы и диагностика
Команда не найдена
Если оболочка сообщает, что pngcrush не найден, проблема возникает до обработки изображения. Сначала проверяется факт установки пакета и путь к исполняемому файлу. В Homebrew после установки бинарник должен быть доступен через окружение Homebrew; в Linux-пакете — через стандартный путь пакета. Старый Windows exe может требовать явного пути к файлу или добавления каталога в PATH.
Входной и выходной файл совпадают
Обычный синтаксис предполагает разные пути. Для осознанной перезаписи предусмотрен -ow. Отключать проверку через -nofilecheck следует только при подтверждённом ложном совпадении: этот параметр не делает обычную запись безопасной и оставляет контроль путей пользователю.
Не создаётся результат в другом разделе диска при -ow
Временный файл для -ow должен быть на той же файловой системе, что и исходник, потому что финальный этап использует переименование. Если передать временный путь на другой том, операция может завершиться ошибкой. Решение — временный файл рядом с исходным или обычная схема с отдельным входным и выходным именем без -ow.
Параллельные задачи конфликтуют
При -ow стандартный временный путь называется pngout.png. Два процесса в одном каталоге могут претендовать на одно имя. Для параллельной обработки каждому экземпляру нужно уникальное временное имя либо отдельный рабочий каталог. Это особенно важно в CI и массовых скриптах.
Файл после оптимизации не стал меньше
PNG может быть уже хорошо сжат другим инструментом, а выбранные методы Pngcrush не обязаны улучшить каждый файл. В текущем исходном help -force отмечен как стандарт и позволяет записать результат даже без уменьшения IDAT; -noforce запрещает запись, если IDAT не сократился. Для анализа полезен подробный вывод -v, который показывает размеры испытаний и выбранный метод.
При оценке нужно сравнивать не только строку про IDAT, но и полный размер файла: вспомогательные блоки тоже занимают место. Добавление ICC, текста или разрешения может увеличить общий PNG даже при более компактном потоке изображения. Удаление метаданных, наоборот, уменьшает файл независимо от Deflate.
После обработки пропала прозрачность или цвет
Сначала проверяются переданные параметры. -c 0 и -c 2 могут удалить альфа-канал, а -c 0 и -c 4 используются для преобразования в серый. -blacken меняет скрытые значения под полностью прозрачными пикселями. При базовом режиме без этих параметров подобные преобразования не являются целью обычной оптимизации.
Из файла исчезли метаданные
Проверяются все -rem и групповые режимы удаления. Важно отличать сохранение неизвестных блоков через -save от сохранения вообще всех известных метаданных: разные типы имеют собственные правила. Перед массовой обработкой файл можно разобрать через -n -v, а затем протестировать команду на копии.
APNG перестал анимироваться
Для сохранения acTL, fcTL и fdAT выходное имя должно заканчиваться на .apng, а цветовой тип и битность не должны измениться. Если эти условия нарушены, использовать Pngcrush как обычный PNG-оптимизатор для анимации нельзя. Альтернатива с явной поддержкой APNG безопаснее для таких файлов.
Ошибка CRC, ADLER32 или «Too far back»
Для диагностики включается -check. Если состояние относится к поддерживаемым типам повреждения, -fix пытается исправить плохие CRC, недопустимые байты фильтра или CMF-байты, связанные с «Too far back». Работать нужно с копией: режим восстановления не означает, что исходные данные гарантированно можно вернуть.
Режим -brute работает слишком долго
Это ожидаемое свойство режима, а не признак зависания само по себе. Справка характеризует полный перебор как очень затратный и обычно не оправдывающий время. Можно вернуться к стандартному набору или ограничить перебор конкретным фильтром, уровнем либо стратегией. Если важна скорость большого конвейера, современный многопоточный оптимизатор часто рациональнее.
Расход памяти слишком велик
Справка прямо выделяет методы 2, 3, 5, 6, 8, 9 и 10 как использующие фильтрацию и более требовательные к памяти. Можно задать отдельные методы без фильтрации — 1, 4 и 7 — или ограничить список. Параметр окна -w также позволяет уменьшить окно сжатия, хотя это способно ухудшить размер результата.
Как проверить результат, а не только размер файла
Самый короткий PNG не обязательно является правильным результатом для конкретной задачи. Проверка должна охватывать структуру, декодирование и свойства изображения. Для публикационной копии минимум включает успешное открытие, совпадение ширины и высоты, сохранение прозрачности, отсутствие неожиданного изменения цвета и наличие тех метаданных, которые действительно требуются.
- Запустить pngcrush -check -n -v result.png, чтобы включить контрольные суммы и получить сведения без повторной записи.
- Сравнить ширину, высоту, битность и цветовой тип с требованиями проекта; при использовании -reduce структурное отличие может быть ожидаемым.
- Открыть PNG в независимом декодере или браузере, а не делать вывод только по успешному завершению Pngcrush.
- Для файлов с альфа-каналом проверить границы полупрозрачных объектов на целевом фоне, особенно если применялся -blacken или исходник был Apple CgBI.
- Для цветоуправляемого процесса проверить наличие и смысл gAMA, sRGB и iCCP после любых операций с метаданными.
- Для APNG убедиться, что сохранилась анимация, а не только первый статический кадр.
- Сравнить полный размер файлов и отдельно понимать, что отчёт о сокращении IDAT не описывает весь объём метаданных.
Для строго воспроизводимой системы полезно фиксировать не только команду, но и происхождение сборки. Pngcrush 1.8.13 из Homebrew, пакет Ubuntu 1.8.13 с системными библиотеками и самостоятельно собранный исходник 1.8.14 могут выводить разные сведения о libpng/zlib и иметь различия в условно доступных возможностях. Версию можно получить параметром -version.
FAQ
Pngcrush сжимает PNG без потери качества?
Основная рекомпрессия IDAT и допустимые операции -reduce рассчитаны на сохранение изображения. Однако не все параметры lossless. -blacken прямо обозначен как lossy, а -c способен удалить альфа-канал или перевести цвет в градации серого. Поэтому корректный ответ зависит от команды, а не только от названия программы.
Почему в интернете указаны версии 1.8.13 и 1.8.14?
1.8.13 — последний упакованный релиз в основном каталоге SourceForge от августа 2017 года. В официальной ветке исходников после него номер был повышен до 1.8.14 и внесены дополнительные правки осенью 2017 года, но отдельный обычный пакет 1.8.14 в каталоге релизов не опубликован.
Нужен ли интернет для обработки изображений?
Нет. После установки или сборки Pngcrush работает с локальными файлами и не использует облачную обработку. Интернет нужен только для получения пакета, исходников или обновлений окружения.
Нужно ли регистрироваться?
Нет. У программы нет аккаунтов, подписки и привязки к облачному профилю.
Есть ли русская версия интерфейса?
У upstream нет графического локализуемого интерфейса. Параметры командной строки и строки встроенной справки в исходниках англоязычные. Отдельного русского GUI Pngcrush как части upstream не предусмотрено.
Можно ли обработать JPEG или WebP?
Нет, основной Pngcrush предназначен для PNG. Для преобразования JPEG, WebP, AVIF, TIFF и других форматов нужен другой конвертер или оптимизатор. OptiPNG, например, дополнительно принимает несколько старых растровых форматов и переводит их в PNG, но WebP и AVIF тоже требуют специализированного инструмента.
Можно ли запускать Pngcrush для целой папки?
Да. Утилита принимает несколько файлов, а параметр -d направляет результаты в указанный каталог. Конкретное раскрытие масок файлов зависит от командной оболочки и платформы.
Безопасно ли использовать -ow?
Это штатный режим перезаписи, но он удаляет исходник после создания временного результата и затем переименовывает временный файл. Для ценных исходников безопаснее сначала работать с отдельным выходным именем и резервной копией. При параллельных задачах нужно обязательно исключать совпадение временных имён.
Стоит ли всегда включать -brute?
Нет. Встроенная справка прямо характеризует полный перебор как очень медленный и обычно не стоящий затрат. Он уместен только там, где дополнительное время кодирования оправдано и измеряется реальная выгода на конкретном наборе файлов.
Что делает -noforce?
Он запрещает запись результата, когда поток IDAT не стал меньше. Это полезно, если цель — не создавать новый PNG без выигрыша по критическим данным. При этом общий размер файла зависит также от вспомогательных блоков, поэтому условие относится именно к IDAT.
Можно ли использовать Pngcrush для очистки личных данных перед публикацией?
Утилита умеет удалять выбранные вспомогательные и текстовые блоки, но не является автоматическим универсальным очистителем приватных метаданных. Нужно знать структуру конкретного PNG и явно определить, какие блоки удаляются, а какие необходимы для корректного цвета, прозрачности или авторской информации.
Поддерживает ли Pngcrush APNG?
Ограниченно. Он сохраняет блоки APNG при расширении .apng и неизменных цветовом типе и битности. Для полноценной оптимизации анимаций лучше выбирать инструмент, который заявляет PNG/APNG как основные поддерживаемые форматы, например Oxipng.
Можно ли восстановить повреждённый PNG?
-fix умеет исправлять несколько конкретных нарушений, включая плохие CRC, некоторые ошибочные фильтровые байты и CMF-состояния, связанные с «Too far back». Это не система восстановления потерянных пикселей и не гарантия ремонта любого повреждения.
Чем Pngcrush отличается от pngquant?
Pngcrush в основном ищет более компактное lossless-представление PNG и управляет структурой контейнера. pngquant намеренно уменьшает цветовую палитру с потерей части информации ради гораздо более сильного уменьшения размера. Они решают соседние, но не одинаковые задачи.
Есть ли смысл использовать Pngcrush в 2026 году?
Да, если он уже встроен в проверенный процесс, нужны его специфические параметры работы с PNG-блоками или требуется простой локальный CLI, доступный из системного пакета. Для нового проекта, где приоритетны активная разработка, многопоточность и APNG, разумно сначала оценить современную альтернативу.
Итог по сценариям использования
Для существующего скрипта или сборочного процесса Pngcrush остаётся функциональной узкой утилитой: он стабильно описывает свои методы, работает локально, даёт глубокий контроль над PNG-фильтрами, zlib и вспомогательными блоками. В таком сценарии важнее закрепить конкретную сборку и команду, чем пытаться искать несуществующий новый тариф или интерфейс.
Для ручной разовой оптимизации без опыта терминала Pngcrush неудобен. Графическая оболочка вроде ImageOptim на macOS убирает необходимость помнить параметры, а современный CLI OptiPNG или Oxipng предлагает более свежую кодовую базу. Если требуется именно минимизация с допустимой потерей цветов, pngquant решает задачу эффективнее по другой модели.
Для долговременного нового серверного конвейера главным ограничением Pngcrush является возраст upstream. Пакеты всё ещё существуют, но функциональная разработка ветки остановилась в 2017 году. Это не делает программу автоматически непригодной, однако повышает ценность поддерживаемой системной сборки, тестирования недоверенных входных файлов и сравнения с актуальными оптимизаторами.
Для фотографии Pngcrush следует воспринимать как финальный технический этап, а не как замену редактору. Он полезен после того, как изображение уже подготовлено и сохранено в PNG. Самая безопасная стратегия — сохранить мастер, сначала выполнить обычную lossless-рекомпрессию в отдельный файл, проверить контрольные суммы, структуру, цвет и прозрачность, и только затем добавлять удаление метаданных, преобразование цветового типа или другие специальные параметры.







