OptiPNG — специализированная консольная утилита для уменьшения размера PNG без потери смысловой информации изображения. Актуальная стабильная версия 7.9.1 выпущена 20 мая 2025 года и поддерживается автором проекта Cosmin Truta. Программа не является фоторедактором, онлайн-компрессором или графической оболочкой: она работает с локальными файлами из командной строки, перебирает варианты представления и сжатия PNG, выбирает более компактный результат и при обычной обработке PNG заменяет исходный файл только тогда, когда это оправдано правилами программы. Помимо собственно PNG, OptiPNG принимает BMP, GIF, PNM и ограниченный набор TIFF, преобразуя такие файлы в оптимизированный PNG. В обзоре важно учитывать именно эту специализацию: утилита предназначена не для изменения внешнего вида фотографии, а для технической оптимизации растровых ресурсов, автоматизации подготовки графики и контроля структуры PNG.
Скачать OptiPNG бесплатно
Рекомендуемый аналог
ФотоМАСТЕР
Фоторедактор для Windows и macOS с русским интерфейсом
- Ретушь портретов и точная коррекция фото
- Удаление объектов, замена фона и неба
- Пакетная обработка и популярные форматы
- Понятный русскоязычный интерфейс
OptiPNG
Программа для работы с изображениями и графикой на русском языке
- Меньше инструментов для точной локальной коррекции
- Часть расширенных функций доступна только платно
- Набор инструментов зависит от версии и платформы
- Может не подойти для сложного профессионального монтажа
Что такое OptiPNG и чем он не является
Название OptiPNG относится к открытому проекту Cosmin Truta, написанному на C и распространяемому по лицензии Zlib. Его основная задача — попытаться уменьшить PNG-файл без потери содержащейся в нём графической информации. В отличие от сервисов, которые добиваются сильного уменьшения размера через сокращение количества цветов или другие необратимые преобразования, базовая модель OptiPNG основана на безвозвратном удалении только той избыточности, которая не нужна для представления того же изображения, и на подборе более эффективных параметров Deflate-сжатия.
OptiPNG не нужно смешивать с Oxipng. Oxipng начинался как переписывание идей OptiPNG на Rust, но сейчас является отдельным проектом с собственной архитектурой, многопоточной обработкой и отличающимся набором параметров. Также OptiPNG не имеет отношения к OptiGUI и другим приложениям с похожими названиями. В версии 7.9.1 у самой OptiPNG нет графического окна, панели предварительного просмотра, редактора, облачного кабинета или мобильного клиента.
Текущая ветка проекта заслуживает отдельного уточнения из-за необычной нумерации. После версии 0.7.8 в апреле 2025 года появилась 0.7.9, но этот выпуск был отозван как ошибочный. В каталоге загрузок его архивы помечены как ERROR. Следующий стабильный выпуск получил номер 7.9.1: в истории проекта прямо отмечено, что автор отказался от прежней схемы с начальным нулём. Поэтому 7.9.1 — не другая программа и не коммерческая редакция, а продолжение того же OptiPNG.
Основные параметры OptiPNG
| Параметр | Актуальное состояние |
|---|---|
| Продукт | OptiPNG |
| Разработчик и сопровождающий | Cosmin Truta, с участием перечисленных в проекте contributing authors |
| Актуальная стабильная версия | 7.9.1 |
| Дата выпуска 7.9.1 | 20 мая 2025 года |
| Тип | Консольный оптимизатор и конвертер растровых изображений |
| Основная задача | Уменьшение PNG без потери смысловой информации изображения |
| Готовые официальные сборки | Windows Win32 и Win64 в ZIP-архивах |
| Другие настольные системы | Доступен исходный код; версия 7.9.1 также присутствует в актуальных пакетах Linux и macOS |
| Входные форматы | PNG, GIF, BMP, PNM, TIFF с ограничениями |
| Выход | Оптимизированный PNG; для внешних форматов создаётся файл с расширением .png |
| Интерфейс | Командная строка и текстовый вывод |
| Лицензия | Zlib |
| Стоимость | Бесплатное открытое ПО; платных редакций и подписки у самого OptiPNG нет |
| Регистрация | Не требуется |
| Пробный период | Не применяется: программа не является trial-версией |
| Облачная обработка | Не предусмотрена |
| ИИ-функции | Не предусмотрены |
| Мобильное приложение | Официального мобильного интерфейса в дистрибутиве OptiPNG нет |
| Язык управления | Команды, справка и диагностические сообщения — на английском |
У OptiPNG нет привычного разделения на Free, Pro или Enterprise. Исходный код и готовые Windows-сборки относятся к одному продукту. Различие Win32 и Win64 — это архитектура исполняемого файла, а не набор возможностей. На Linux и macOS практический способ установки зависит от системы: доступны исходники, а актуальная версия 7.9.1 присутствует, в частности, в пакетах Debian, Arch Linux и Homebrew. При этом сам проект не публикует таблицу минимальной версии Windows, macOS, объёма оперативной памяти или требуемого процессора, поэтому придумывать такие системные требования для обзора было бы некорректно.
Как устроена оптимизация PNG
Чтобы понять ценность OptiPNG, нужно отделять визуальное содержимое изображения от способа, которым оно записано внутри PNG. Один и тот же набор пикселей может быть представлен несколькими эквивалентными способами. Различаться могут глубина цвета, тип цвета, палитра, фильтры строк и параметры Deflate. Даже когда картинка остаётся той же, размер итогового потока IDAT способен заметно меняться в зависимости от этих решений.
Алгоритм OptiPNG разбит на несколько этапов. Сначала программа пытается выполнить допустимые без потерь сокращения представления изображения. В руководстве перечислены уменьшение битовой глубины, типа цвета и палитры. Например, если данные допускают более компактное представление без изменения отображаемых значений, нет смысла хранить их в более избыточной форме. Эти операции можно частично или полностью отключить параметрами -nb, -nc, -np и -nx.
Далее OptiPNG проводит один или несколько пробных вариантов сжатия IDAT. Здесь задействуются PNG-фильтры и параметры zlib. Программа сравнивает получившиеся размеры и выбирает более компактную конфигурацию. Уровень -o управляет тем, сколько усилий тратится на поиск: -o0 выполняет минимальный набор операций и не перекодирует существующий IDAT, -o1 включает одну пробу сжатия, а уровни от 2 и выше выполняют несколько проб. В справке актуальной версии диапазон уровней составляет 0–7, а обычное значение по умолчанию — 2.
После выбора сжатия программа помещает содержимое IDAT в один chunk, убирая накладные расходы от повторяющихся заголовков и CRC нескольких IDAT. Если создаётся новый поток IDAT, OptiPNG также подбирает минимальный размер окна zlib, который не ухудшает результат сжатия. Это влияет не только на размер самого файла, но и на требования декодера к окну распаковки.
Важное следствие такого подхода: более высокий уровень -o означает больше проб, а не гарантированно меньший файл на заранее известный процент. Руководство прямо предупреждает о снижении отдачи от очень широкого поиска. Примеры документации характеризуют обычный запуск как вариант с нормальной скоростью, -o5 как медленный, а -o7 как очень медленный. Поэтому максимальный уровень имеет смысл там, где файлы обрабатываются редко, а каждый лишний байт важнее времени CPU. Для регулярной подготовки больших каталогов стандартный уровень часто рациональнее.
Что означает «без потерь» в контексте OptiPNG
Оптимизатор не предназначен для ретуши, изменения разрешения, шумоподавления, повышения резкости или генерации новых пикселей. Его цель — сохранить смысловую графическую информацию. Изменения структуры PNG допустимы, если они представляют то же изображение. Поэтому сравнивать OptiPNG с JPEG-компрессором по коэффициенту уменьшения неправильно: JPEG получает часть экономии за счёт необратимого кодирования, а OptiPNG работает внутри возможностей PNG и Deflate.
Однако «без потерь» не означает, что каждый байт файла останется прежним. Метаданные, порядок chunks, параметры фильтрации и сжатый поток могут измениться. Более того, параметр -strip all специально удаляет метаданные PNG. Поэтому при проверке результата нужно заранее решить, что именно необходимо сохранить: только пиксельное изображение или ещё текстовые chunks, цветовую информацию, физические параметры и другие вспомогательные данные.
Почему файл иногда не уменьшается
OptiPNG не обещает выигрыш для каждого PNG. Уже хорошо оптимизированный файл может оказаться таким, что ни один из проверенных вариантов не даст меньшего результата. Нормальное поведение программы в такой ситуации — не увеличивать корректный PNG и не заменять его более крупной версией. Параметр -force позволяет принудительно записать новый результат даже в случаях, когда программа обычно отказалась бы от перезаписи, включая ситуацию с увеличением размера.
Отсутствие уменьшения не означает ошибку. Это может означать, что исходный encoder уже выбрал эффективные параметры или что конкретное изображение плохо поддаётся дальнейшей без потерь оптимизации. Для диагностики полезнее смотреть текстовый отчёт и сравнивать размер файла, чем повторять -o7 несколько раз: повторный запуск на уже оптимизированном результате не создаёт принципиально новый источник данных.
Интерфейс: что пользователь видит вместо графического окна
У OptiPNG нет оконного интерфейса, поэтому привычные «рабочие зоны» здесь заменены структурой командного запуска. Первая зона — имя исполняемого файла optipng. Вторая — параметры, определяющие режим обработки. Третья — один или несколько путей к входным изображениям. Четвёртая — текстовый отчёт в терминале, где показываются процесс обработки, параметры проб и итог. Пятая — файловая система, куда записывается результат.
Такой интерфейс требует больше внимания при первом знакомстве, зато хорошо подходит для сценариев, где графический интерфейс только мешает: массовая обработка ресурсов сайта, сборочные сценарии, повторяемые команды, задачи разработчиков, автоматические пайплайны и серверная подготовка файлов. Любая команда остаётся текстом, который можно сохранить в сценарии и воспроизвести с теми же параметрами.
Основные группы параметров
Общие параметры отвечают за безопасность записи и организацию файлов. -backup и -keep сохраняют резервную копию изменяемых файлов. -clobber разрешает перезаписывать уже существующие выходные или резервные файлы. -dir задаёт каталог вывода. -out задаёт конкретный выходной файл и применяется, когда в команде ровно один вход. -preserve пытается сохранить файловые атрибуты, включая временные метки и права там, где это применимо. -simulate выполняет пробные расчёты без создания выходных файлов. -quiet и -silent сокращают текстовый вывод, а -verbose делает его подробным.
Оптимизационные параметры управляют самим поиском. -o задаёт уровень усилий от 0 до 7. -f выбирает набор PNG delta-фильтров: значения 0, 1, 2, 3 и 4 соответствуют статическим фильтрам None, Left, Up, Average и Paeth, а 5 означает адаптивную фильтрацию libpng. -zc, -zm и -zs управляют соответственно уровнями сжатия, уровнями памяти и стратегиями zlib. -zw задаёт размер окна zlib. Эти параметры нужны не большинству пользователей, а тем, кто сознательно исследует компромисс между временем работы и размером конкретного класса изображений.
Параметр -i управляет чересстрочностью PNG. Значение 0 создаёт неинтерлейсный вариант, 1 — Adam7. Без явного задания программа сохраняет тип интерлейса входного изображения. Принудительное изменение этого свойства следует рассматривать как отдельное решение, а не как обязательный этап оптимизации, потому что интерлейс влияет и на способ прогрессивного отображения, и на эффективность сжатия.
Редактирующих параметров немного. -snip извлекает одно изображение из многоизображенческого, анимационного или видеофайла; в зависимости от формата это первое или наиболее релевантное изображение. -strip all удаляет метаданные PNG в принятом OptiPNG смысле: ancillary chunks, кроме tRNS. Других вариантов для -strip в руководстве 7.9.1 не заявлено.
Что изменилось в интерфейсе 7.9.1
При переходе со старых инструкций важно не копировать команды вслепую. В версии 7.9.1 удалён параметр -log, который ранее считался устаревшим. Поэтому команды из старых блогов с -log больше не соответствуют актуальному интерфейсу. Для протоколирования вывода в автоматизации следует использовать механизмы самой оболочки или системы запуска, а не ожидать, что OptiPNG 7.9.1 создаст журнал этим ключом.
В этом же выпуске добавлен CMake-файл как альтернативный способ сборки, а старый configure-скрипт помечен как устаревающий. Поддержка 16-битных платформ удалена. Для некоторых целевых платформ появилась возможность SIMD-оптимизированной сборки libpng; в поставке проекта она включена по умолчанию для ARM64 и x86-64. Это изменение относится к реализации и производительности, а не к появлению новых пользовательских функций.
Воспроизводимый рабочий сценарий
Самый безопасный пример начинается не с максимального уровня, а с контроля записи. Пусть в каталоге находится файл photo.png, который нужно уменьшить без сознательного удаления метаданных. Команда optipng -simulate photo.png выполнит пробный поиск и покажет, что программа собирается делать, но не создаст новый файл. Это удобный первый шаг, когда важно понять поведение на конкретном ресурсе.
Для обычной оптимизации достаточно команды optipng photo.png. PNG обрабатывается на месте: при успешной оптимизации исходный файл заменяется оптимизированным. Если нужен встроенный резервный вариант, используется optipng -keep photo.png. Такой режим разумен перед массовой обработкой материалов, которые ещё не находятся под системой контроля версий или резервным копированием.
Чтобы увеличить число проб, можно использовать optipng -o5 photo.png. Уровень 5 рассчитан на более медленный поиск, поэтому его полезно применять к финальным статическим ресурсам, а не автоматически считать обязательным для каждой промежуточной картинки. Максимальный пример из руководства — optipng -o7 photo.png — тратит существенно больше времени и подходит для редкой финальной оптимизации, когда задержка обработки приемлема.
Если нужно сохранить результат отдельно, команда optipng -out photo-optimized.png photo.png записывает один вход в явно заданный файл. Для нескольких файлов удобнее задать каталог: optipng -dir optimized image1.png image2.png image3.png. При этом важно помнить правило существующих файлов: OptiPNG по умолчанию не перезаписывает уже имеющийся выходной файл. Разрешение -clobber следует включать только тогда, когда перезапись действительно является частью сценария.
Пакетный запуск не требует отдельного режима «Batch»: синтаксис утилиты принимает список файлов. В оболочке можно передать несколько имён или использовать поддерживаемое оболочкой раскрытие шаблонов. Для стабильной автоматизации с именами, начинающимися на дефис, предусмотрен разделитель –, после которого разбор параметров прекращается.
Как проверить результат сценария
- Сравнить размер файла до и после обработки. Если он не уменьшился и программа оставила исходник нетронутым, это нормальный исход для уже эффективного PNG.
- Открыть получившийся PNG в обычном просмотрщике и проверить визуальное соответствие, особенно если одновременно использовались параметры изменения интерлейса или удаления метаданных.
- Проверить наличие нужных метаданных отдельным инструментом, если они важны для рабочего процесса. После -strip all рассчитывать на сохранение вспомогательных метаданных нельзя.
- При работе с критичными файлами сравнить пиксельные данные специализированным способом, а не только «на глаз». OptiPNG рассчитан на без потерь преобразования, но отдельная проверка защищает от ошибок сценария, неверного выбора входного файла и последующей обработки другими программами.
- Проверить код завершения и диагностический вывод в автоматическом сценарии. Сам факт появления файла ещё не означает, что весь пакет был обработан без ошибок.
Этот пример показывает характер OptiPNG лучше, чем длинная инструкция по установке. Программа строится вокруг повторяемой операции «входной файл — набор параметров — проверенный PNG на выходе». Большая часть реальной работы состоит не в нажатии кнопок, а в правильном выборе политики перезаписи, метаданных и уровня оптимизации.
Форматы: что можно подать на вход и что получится на выходе
PNG — родной формат OptiPNG. Для такого входа программа пытается оптимизировать файл и по умолчанию работает с ним на месте. Если оптимизация успешна, исходник заменяется новой версией. Если включён -keep, рядом сохраняется резервная копия. Программа также способна выполнять проверку целостности и при отдельном включении режима -fix пытаться восстановить ошибочные PNG.
Внешние форматы — GIF, BMP, PNM и TIFF. Они не «сжимаются в своём формате»: OptiPNG создаёт оптимизированную PNG-версию с исходным базовым именем и расширением .png. Это делает утилиту простым техническим конвертером, но не универсальным конвертером изображений. Экспорт обратно в GIF, BMP, PNM или TIFF не заявлен.
Поддержка TIFF специально ограничена. Руководство 7.9.1 указывает только несжатые TIFF, совместимые с представлением PNG: grayscale, RGB и RGBA. Поэтому TIFF с другим способом сжатия, неподдерживаемой структурой или дополнительными особенностями не следует включать в рабочий процесс без предварительной проверки. Для широкого спектра TIFF, RAW и профессиональных фотоконтейнеров нужен полноценный конвертер, а не OptiPNG.
Метаданные внешних форматов при импорте не переносятся. Это критическое отличие от фотоконвертера: если BMP, GIF, PNM или TIFF содержит важную служебную информацию, нельзя ожидать, что она автоматически появится в созданном PNG. OptiPNG решает задачу оптимизации пиксельного представления, а не архивного переноса всех свойств исходного контейнера.
Ограничения больших файлов и потоков
Текущая документация указывает, что кодирование изображений с суммарным размером IDAT больше 2 ГБ не поддерживается. Это ограничение относится к PNG-данным, а не к условному размеру всей папки. Для обычной веб-графики оно редко становится фактором, но при научных, картографических или очень крупных технических изображениях его необходимо учитывать заранее.
Также OptiPNG 7.9.1 не поддерживает pipes и streams. Это отличает его от утилит, которые можно встроить в непрерывный stdin/stdout-конвейер без промежуточного файла. OptiPNG работает с именованными файлами. В руководстве отдельно отмечено отсутствие поддержки extended file attributes и access control lists. Параметр -preserve сохраняет обычные файловые атрибуты там, где это возможно, но не превращает обработку в полное побайтовое клонирование метаданных файловой системы.
Пакетная обработка и автоматизация
В командной строке можно перечислить несколько изображений, поэтому базовая пакетная обработка встроена в сам синтаксис. Это полезно для каталога иконок, скриншотов, текстур интерфейса и других наборов PNG. Однако в OptiPNG нет отдельной очереди с графическим прогрессом, расписания или фонового сервиса. Управление тем, какие файлы передавать и когда запускать программу, выполняет оболочка, сборочная система или другой внешний инструмент.
Для автоматизации особенно важны -dir и -out. -dir отделяет результаты от исходников, а -out делает имя единственного результата явным. В скриптах это надёжнее, чем рассчитывать на ручной перенос после обработки. -simulate помогает построить этап предварительной проверки, -quiet сокращает шум в логе, а -verbose, наоборот, даёт больше диагностических деталей.
Собственного параметра числа потоков в руководстве 7.9.1 нет. Появившаяся SIMD-оптимизация libpng для отдельных архитектур не равна многопоточной обработке нескольких PNG. Если основной критерий — параллельное использование современных многоядерных процессоров, разумно сравнить OptiPNG с Oxipng, который прямо разрабатывается как multithreaded PNG optimizer.
Облачные очереди, загрузка файлов по URL, API-ключи, аккаунты и серверная панель в самом OptiPNG отсутствуют. При серверном использовании программа запускается как локальный исполняемый файл внутри вашей инфраструктуры. Сетевую доставку исходников и результатов, права сервисного пользователя, изоляцию процесса и очистку временных файлов должен организовывать внешний код.
Приватность и работа без интернета
Модель OptiPNG удобна для изображений, которые нельзя отправлять в сторонний веб-сервис: обработка строится вокруг локальных файлов и локального процесса. Для самой операции оптимизации аккаунт и подключение к интернету не нужны. Это не означает автоматическую защиту всего окружения: если программа запускается внутри облачного сервера, общей сетевой папки или CI, приватность определяется ещё и настройками этой среды.
Отдельная тема — метаданные. Параметр -strip all способен удалить вспомогательные chunks PNG, кроме tRNS. Это может быть полезно, когда цель — уменьшить файл и убрать ненужные служебные chunks, но нельзя применять этот параметр как бездумную кнопку «приватность». Вместе с ненужными данными могут быть удалены сведения, важные для конкретного производственного процесса. Перед массовой очисткой следует определить, какие вспомогательные chunks должны остаться, а при необходимости использовать инструмент с более избирательным управлением метаданными.
Если исходники конфиденциальны, достоинство локальной модели состоит именно в отсутствии обязательной загрузки на сервер разработчика. При этом бинарный файл всё равно следует получать из доверенного источника или из репозитория своей ОС, а старые версии не стоит сохранять только из-за привычного сценария.
Безопасность и актуальность версии
Официальная страница безопасности настоятельно рекомендует переходить на последнюю версию. Причина не формальная: в истории OptiPNG исправлялись ошибки, связанные с обработчиками внешних форматов. Все версии до 0.7.8, которые поддерживали GIF, затрагивал документированный global buffer overflow в GIF decoder. Более ранние выпуски также содержали другие уязвимости декодеров GIF, TIFF и сжатого BMP, а в ветке 0.7.x исправлялась проблема use-after-free в логике сокращения палитры.
Для нового развёртывания разумная базовая точка — именно 7.9.1. Она включает обновление libpng до 1.6.48 и исправление редкого случая RGB-to-palette reduction с некорректно оставшимся tRNS. Ветка 0.7.9 использоваться не должна: сам проект отозвал этот релиз, а его архивы в каталоге помечены как ошибочные.
Это не означает, что 7.9.1 следует считать формально «неуязвимой». В публичном трекере проекта могут оставаться открытые сообщения об ошибках, и при обработке недоверенных файлов правильная архитектура всё равно предполагает обновления, ограниченные права процесса и контроль входа. Особенно это относится к серверным сценариям, где файл приходит от внешнего пользователя, а OptiPNG автоматически разбирает его как PNG, GIF, BMP, PNM или TIFF.
Стоимость, лицензия и редакции
OptiPNG распространяется как free and open-source software по лицензии Zlib. Она разрешает использовать программу для любых целей, включая коммерческие приложения, изменять и распространять её при соблюдении условий лицензии. У продукта нет отдельной платной лицензии для разблокировки функций, ежемесячной подписки, кредитов на количество изображений или водяного знака.
Регистрация также не является частью работы. Пользователь скачивает готовую Windows-сборку или получает пакет через свою систему, после чего запускает optipng локально. Пробный период отсутствует не потому, что он «бесконечный», а потому, что модель trial к программе не применяется.
Разделение дистрибутивов на исходный архив, Win32 и Win64 не следует описывать как три редакции. Набор пользовательских функций определяется версией OptiPNG, а не оплатой. Различаются способ сборки и целевая архитектура.
Плюсы и минусы
Плюсы ✔️
- Оптимизация PNG ориентирована на сохранение смысловой графической информации, а не на необратимое снижение качества ради меньшего файла.
- Актуальная версия 7.9.1 имеет официальный стабильный статус и выпускалась после большого перерыва с обновлением зависимостей и исправлениями.
- Программа работает локально и не требует аккаунта, загрузки фотографий на облачный сервис или постоянного подключения к интернету.
- Можно обрабатывать несколько файлов одной командой и встраивать запуск в оболочки, сборочные сценарии и серверные задачи.
- Есть управление безопасностью записи: резервная копия, отдельный каталог, отдельное имя файла, запрет перезаписи по умолчанию и режим симуляции.
- Продвинутые параметры дают точный контроль над PNG-фильтрами и несколькими характеристиками zlib, что полезно для технических экспериментов и специализированных пайплайнов.
- Поддерживается преобразование BMP, GIF, PNM и части TIFF в PNG, поэтому отдельный простой конвертер для этих случаев не всегда нужен.
- Лицензия Zlib допускает коммерческое использование и интеграцию без покупки отдельной редакции.
- Открытый исходный код и наличие пакетов для популярных настольных систем упрощают использование в воспроизводимой инфраструктуре.
Минусы ❌
- Графического интерфейса нет: пользователю нужно работать с терминалом, путями к файлам и параметрами командной строки.
- Оптимизатор не гарантирует заметного уменьшения каждого PNG; уже хорошо подготовленный файл может не стать меньше.
- Максимальные уровни оптимизации требуют намного больше времени, а выигрыш от дополнительных проб постепенно уменьшается.
- Собственная многопоточная пакетная обработка в интерфейсе 7.9.1 не заявлена, поэтому для CPU-параллелизма нужны внешний запуск нескольких процессов или другой инструмент.
- TIFF поддерживается только в ограниченном варианте: несжатые grayscale, RGB и RGBA, совместимые с PNG.
- Метаданные внешних форматов при преобразовании в PNG не импортируются.
- Кодирование результата с суммарным IDAT больше 2 ГБ не поддерживается.
- Нет работы через pipes и streams, что ограничивает прямое включение в некоторые Unix-конвейеры.
- -strip all удаляет все поддерживаемые программой вспомогательные метаданные сразу; тонкого выбора конкретных chunks в стабильном интерфейсе 7.9.1 нет.
- Программа решает только задачу PNG-оптимизации и простого преобразования входных растров, не заменяя редактор, ресайзер, RAW-конвертер или сервис современных веб-форматов.
Кому подойдёт
- Веб-разработчикам. OptiPNG полезен для локальной подготовки PNG-иконок, скриншотов и других статических ресурсов, когда нужно уменьшить вес без визуально-разрушающей перекодировки.
- Разработчикам приложений. Утилиту удобно запускать перед упаковкой ресурсов интерфейса в дистрибутив, если проект уже использует PNG и важна воспроизводимая командная обработка.
- Авторам сборочных сценариев. Текстовые параметры, список входных файлов и предсказуемая политика выхода позволяют встроить OptiPNG в локальный этап сборки.
- Пользователям, работающим с конфиденциальными изображениями. Файлы не требуется отправлять в сторонний онлайн-компрессор.
- Техническим специалистам, которым нужен контроль zlib и PNG-фильтров. Низкоуровневые параметры позволяют исследовать разные конфигурации, а не полагаться на одну скрытую настройку сервиса.
- Тем, кому важна permissive-лицензия. Zlib позволяет использовать утилиту и в коммерческих процессах без покупки Pro-версии.
Кому не подойдёт
- Пользователям, которым нужен интерфейс с перетаскиванием и превью. Сам OptiPNG не предоставляет оконной оболочки.
- Тем, кому нужен максимальный коэффициент уменьшения любой ценой. Без потерь подход ограничивает степень сжатия; lossy-квантизация может дать существенно меньшие PNG, но это уже другой класс обработки.
- Фотографам, которым нужен RAW-процессинг. Утилита не занимается демозаикой, коррекцией экспозиции, профилями камеры, шумоподавлением и экспортом RAW.
- Тем, кому нужен универсальный конвертер. Выход OptiPNG ориентирован на PNG, а поддержка TIFF ограничена.
- Пользователям, которым нужна встроенная многопоточность для тысяч файлов. В таком сценарии логичнее сравнить программу с современными многопоточными оптимизаторами.
- Процессам, построенным на stdin/stdout. Текущая версия не поддерживает pipes и streams.
- Архивным задачам, где требуется сохранить все метаданные исходного GIF, BMP или TIFF. При внешнем импорте такие метаданные не переносятся.
Частые проблемы и диагностика
Команда optipng не находится после распаковки Windows-архива
Официальная Windows-поставка — ZIP-архив, а не мастер установки, который сам регистрирует путь к программе. Если оболочка сообщает, что optipng не является известной командой, сначала проверяют, что архив распакован и optipng.exe действительно находится в выбранной папке. Затем программу запускают с явным путём либо добавляют каталог с исполняемым файлом в PATH. Это проблема окружения, а не формата PNG.
Собранная через CMake версия на Unix-подобной системе не запускается
Для 7.9.1 в публичном трекере остаётся открытым дефект CMake-установки, при котором установленный исполняемый файл способен получить обычные права чтения без бита исполнения. Если сборка прошла, но командная оболочка отказывает в запуске установленного файла, нужно проверить его права и способ установки. При пакетной установке из актуального репозитория ОС эта деталь обычно решается правилами самого пакета; при самостоятельной CMake-сборке её следует учитывать отдельно.
PNG не стал меньше
Сначала нужно проверить, была ли вообще ошибка. Нормальный PNG, который не удаётся улучшить выбранными методами, программа обычно оставляет нетронутым. Повторный запуск с максимальным уровнем может дать другой результат только за счёт более широкого набора проб, но он не гарантирован. Если размер критичен, сравнивают стандартный уровень и один более высокий, после чего оценивают реальный выигрыш относительно времени.
Исходный файл неожиданно изменился
Для PNG обработка на месте является стандартным поведением. Это не режим «экспорта копии». Если исходник должен остаться неизменным, перед запуском используют -keep, -dir или -out в подходящем сценарии. Для первой проверки полезен -simulate. В автоматизации политика резервных копий должна быть задана до массового запуска, а не после обнаружения перезаписи.
Выходной файл уже существует
По умолчанию OptiPNG не должен безусловно затирать существующий выходной файл. -clobber отменяет эту защиту. Поэтому ошибка или отказ при записи в уже занятое имя чаще исправляется не добавлением -force, а выбором другого пути либо осознанным разрешением -clobber. -force и -clobber решают разные задачи: первый принуждает к созданию результата в случаях, когда OptiPNG обычно решил бы его не писать, второй разрешает перезапись существующих файлов.
Старый сценарий перестал принимать -log
В 7.9.1 параметр -log удалён. Это изменение зафиксировано в истории версии. Сценарий нужно переписать так, чтобы стандартный и диагностический вывод перехватывался средствами оболочки, CI или менеджера процессов. Возврат к старому OptiPNG ради одной устаревшей опции нецелесообразен, особенно с учётом исправлений безопасности в новых версиях.
TIFF не открывается или не конвертируется
Поддержка TIFF не универсальна. OptiPNG принимает только несжатые TIFF в PNG-совместимых вариантах grayscale, RGB и RGBA. Для остальных TIFF нужно предварительно использовать конвертер, который понимает конкретную компрессию и структуру файла. Если важны TIFF-метаданные, следует помнить и об отдельном ограничении: при внешнем импорте метаданные не переносятся в PNG.
Файл повреждён
Без -fix ошибочный вход обычно не обрабатывается. Параметр -fix включает восстановление и отдаёт приоритет целостности, а не минимальному размеру. В этом режиме результат иногда способен стать больше, например если требуется восстановить критически важные данные. Успех восстановления не гарантируется, поэтому -fix нельзя рассматривать как полноценную систему ремонта любых повреждённых изображений.
После -strip all исчезли нужные данные
Это ожидаемое действие параметра, а не ошибка компрессора. В 7.9.1 поддержан именно вариант удаления всех объектов метаданных в понимании OptiPNG. Если служебные chunks нужны для публикации, цветового конвейера, архива или другого процесса, не следует включать -strip all в общий шаблон. Правильная диагностика — сравнить структуру PNG до и после обработки отдельным анализатором chunks.
Скрипт не получает данные через pipe
Текущая версия прямо не поддерживает pipes и streams. Нужно передавать именованный файл или выбрать инструмент с stdin/stdout. Попытка строить архитектуру вокруг функции, которой нет в интерфейсе, обычно приводит к лишним временным обходным решениям.
Очень крупный PNG не записывается
Если суммарный IDAT результата превышает 2 ГБ, срабатывает документированное ограничение кодирования. Увеличение памяти или переход на -o7 эту границу не снимают. Для таких данных нужен другой encoder или изменение формата рабочего процесса.
После обновления команды дают другой результат
Руководство предупреждает, что поведение и значения по умолчанию для уровня оптимизации могут меняться между версиями. Поэтому производственные сценарии, для которых важна воспроизводимость, должны фиксировать не только команду, но и версию OptiPNG. При обновлении полезно сначала запускать -version и -h, затем сравнивать поведение на тестовом наборе файлов.
Альтернативы OptiPNG
Oxipng
Oxipng — самостоятельный многопоточный PNG/APNG-оптимизатор на Rust. Он особенно уместен, когда узким местом OptiPNG становится скорость на многоядерном процессоре или нужен современный активно развивающийся инструмент с собственной библиотечной интеграцией. Это не drop-in replacement: похожие названия параметров не означают полной совместимости команд. Для миграции сценария настройки нужно сверять заново.
pngquant
pngquant решает другую задачу: это PNG-компрессор с потерями, который уменьшает количество цветов с использованием палитры и допускает управляемую потерю информации ради более сильного сокращения размера. Он подходит, когда визуально приемлемая квантизация важнее побитовой сохранности цветового представления. Для интерфейсной графики и веб-иллюстраций pngquant нередко рассматривают перед последующей оптимизацией без потерь, но его нельзя описывать как прямой эквивалент OptiPNG.
pngcrush
pngcrush — классический консольный оптимизатор PNG с широким управлением параметрами сжатия и chunks. Исторически OptiPNG был вдохновлён подходом pngcrush, но проектировался с акцентом на более гибкий выбор числа проб и работу проб сжатия в памяти. pngcrush имеет смысл для пользователей, которым нужны его собственные функции chunk-level обработки и знакомый старый инструментарий PNG.
ZopfliPNG
ZopfliPNG использует Zopfli-подход к Deflate и ориентирован на очень сильное сжатие ценой большого времени CPU. Он уместен для статических ресурсов, которые оптимизируются один раз и многократно раздаются, когда дополнительные секунды или минуты подготовки приемлемы. Для регулярного интерактивного цикла такой подход часто слишком медленный. Кроме того, оригинальный репозиторий Google Zopfli был переведён в архивный режим в октябре 2025 года, что следует учитывать при выборе инструмента на долгий срок.
ImageOptim
Для пользователя macOS, которому нужен графический интерфейс, ImageOptim представляет другой класс решения: это GUI, объединяющий несколько оптимизаторов. Такой вариант удобнее для ручного перетаскивания файлов и визуального рабочего процесса. OptiPNG, напротив, проще встроить как отдельный предсказуемый CLI-компонент без графической оболочки.
Как выбирать между OptiPNG и альтернативами
| Сценарий | Что рациональнее учитывать |
|---|---|
| Нужна без потерь оптимизация одного или нескольких PNG из скрипта | OptiPNG остаётся прямым специализированным вариантом |
| Нужно максимально загрузить многоядерный CPU на большом пакете | Сравнить с Oxipng, у которого многопоточность является частью проекта |
| Допустима визуально контролируемая потеря ради существенно меньшего файла | Рассмотреть pngquant, затем при необходимости финальную оптимизацию без потерь |
| Нужны расширенные операции с PNG chunks | Сравнить возможности pngcrush и специализированных инструментов для метаданных и chunks |
| Файл оптимизируется один раз, время CPU почти не важно | Сравнить результат с Zopfli-ориентированными методами |
| Нужен GUI на macOS | Использовать оболочку вроде ImageOptim вместо прямой работы с OptiPNG |
Лучшего варианта «для всех PNG» здесь нет. OptiPNG занимает чёткую нишу: открытая CLI-утилита с консервативной без потерь моделью, контролем записи и точными параметрами Deflate. Альтернатива становится разумнее, когда требования меняются — например, нужна квантизация, GUI, встроенная многопоточность или более современная библиотечная интеграция.
FAQ
Поддерживает ли OptiPNG WebP, AVIF или JPEG?
Нет. В актуальном списке входных форматов указаны PNG, GIF, BMP, PNM и TIFF. WebP, AVIF и JPEG в него не входят, а выход OptiPNG ориентирован на PNG.
Что реально делает уровень -o0?
-o0 включает минимальный набор оптимизационных операций. Он не меняет такие атрибуты изображения, как битовая глубина и тип цвета, и не перекодирует существующий IDAT. При этом некоторые структурные оптимизации, не требующие перекодирования, всё равно могут выполняться, поэтому -o0 не следует путать с режимом «ничего не менять».
Отключает ли -nx вообще всю оптимизацию?
Нет. -nx только объединяет запреты на без потерь сокращения битовой глубины, типа цвета и палитры. Перекодирование IDAT остаётся отдельной частью процесса. Для управления им существует -nz.
Что происходит при -nz?
-nz запрещает перекодирование IDAT для PNG-входа, но операции, которые не требуют перекодирования, всё ещё выполняются. В руководстве в качестве примера прямо указано объединение IDAT chunks.
Можно ли применить -out сразу к нескольким файлам?
Нет. При использовании -out командная строка должна содержать ровно один входной файл. Для набора изображений предназначен -dir или отдельные вызовы с явными именами результата.
Как обработать имя файла, которое начинается с дефиса?
Перед именами файлов можно поставить –. После этого OptiPNG прекращает разбирать последующие элементы как параметры. Такой приём особенно полезен в автоматических сценариях с именами, которые формируются вне контроля пользователя.
Можно ли сокращать названия параметров?
Да. Имена параметров нечувствительны к регистру и могут сокращаться до кратчайшего уникального префикса. Для долговечных производственных сценариев безопаснее оставлять полные понятные формы: после появления новых параметров чрезмерно короткое сокращение потенциально может перестать быть уникальным.
Что означает -v в версии 7.9.1?
-v одновременно включает подробный режим вывода и информацию о версии и сборке. Если нужна только проверка версии, существует отдельный -version.
Защищает ли OptiPNG PNG с цифровой подписью dSIG?
Программа распознаёт ситуацию, при которой обычная перезапись подписанного PNG нежелательна, и без принуждения может отказаться создавать новый выходной файл. -force переопределяет это решение. Поэтому для подписанных файлов принудительный режим нельзя включать автоматически.
Изменяет ли OptiPNG тип интерлейса сам?
По умолчанию выход сохраняет тип interlace входного изображения. Изменение задаётся явно через -i: 0 для non-interlaced и 1 для Adam7. Это свойство стоит менять только при осознанной необходимости, а не как универсальную оптимизацию.
Чем статические PNG-фильтры отличаются от адаптивного режима?
Значения -f0, -f1, -f2, -f3 и -f4 соответствуют фиксированным фильтрам None, Left, Up, Average и Paeth. Значение 5 обозначает adaptive filtering libpng, где выбор фильтра может зависеть от строки изображения. Перебор разных вариантов — одна из причин, по которой более высокие уровни оптимизации требуют больше времени.
Можно ли вырезать кадр из GIF или другого многоизображенческого входа?
Для этого предусмотрен -snip. В зависимости от формата извлекается первое либо наиболее релевантное изображение, например крупнейшее. Это функция извлечения одного изображения, а не редактор всей анимационной последовательности.
Почему -strip all нельзя считать только удалением приватных данных?
Этот режим удаляет все объекты метаданных PNG в определении OptiPNG, то есть вспомогательные chunks кроме tRNS. Среди вспомогательных данных могут находиться сведения, нужные не для приватности, а для корректного производственного контекста. Поэтому сначала определяют требования к метаданным, и только затем включают массовое удаление.
Можно ли сделать файл меньше, принудив запись через -force?
Нет гарантии. -force не является дополнительным алгоритмом сжатия: он заставляет записать выходной файл там, где обычная логика могла отказаться, в том числе когда новый PNG больше исходного. Для поиска меньшего файла используют уровни оптимизации и параметры сжатия, а не -force.
Что лучше проверять после обновления версии в CI?
Полезно зафиксировать вывод -version, повторить обработку небольшого эталонного набора, сравнить размеры и требуемые метаданные, а затем проверить коды завершения. Руководство допускает изменение поведения и значений по умолчанию между версиями, поэтому воспроизводимость зависит не только от текста команды, но и от версии бинарного файла.
Итог по сценариям использования
OptiPNG 7.9.1 имеет смысл выбирать, когда исходный формат уже PNG, потеря графической информации неприемлема, а результат нужно получать локально и воспроизводимо. Для веб-разработчика это инструмент финальной подготовки статических ресурсов; для разработчика приложения — небольшой CLI-компонент сборки; для технического специалиста — способ управлять PNG-фильтрами и параметрами zlib без закрытого онлайн-сервиса.
Для разовой ручной работы без терминала OptiPNG менее удобен, чем графическая оболочка. Для огромных каталогов на многоядерных системах стоит сравнить скорость с Oxipng. Если допускается сокращение палитры с потерями ради намного меньшего файла, нужен pngquant или другой lossy-процесс. Если задача включает изменение размеров, RAW, JPEG, WebP, AVIF, ретушь или цветокоррекцию, OptiPNG вообще не является заменой соответствующему редактору или конвертеру.
Главное практическое ограничение — программа оптимизирует не «картинки вообще», а конкретный контейнер PNG и небольшой набор входных форматов, которые превращаются в PNG. В этой узкой роли она остаётся актуальной: стабильный выпуск 7.9.1 исправляет проблемы старых версий, распространяется свободно, не требует облака и даёт точный контроль над тем, сколько вычислительных усилий потратить на поиск более компактного представления. Правильный сценарий начинается с последней версии, резервной политики и проверки результата, а не с безусловного применения -o7 и -strip all ко всем файлам.







