OptiPNG: подробный обзор консольного оптимизатора PNG для сжатия изображений без потери качества
OptiPNG — узкоспециализированная программа для оптимизации PNG-файлов. Она пересобирает PNG так, чтобы уменьшить размер файла без потери информации, а также конвертирует BMP, GIF, PNM и TIFF в оптимизированный PNG, проверяет целостность PNG и выполняет исправление ошибок в тех случаях, где это поддерживает алгоритм восстановления. Это не фоторедактор, не просмотрщик и не пакетный конвертер с визуальным окном: вся работа строится вокруг команды optipng [options] files.
Главная особенность OptiPNG — предсказуемая lossless-обработка. Программа не размывает изображение, не снижает JPEG-качество и не меняет визуальное содержимое ради сильного сжатия. Она ищет более компактное представление тех же данных PNG: уменьшает глубину цвета, цветовой тип и палитру там, где это не уничтожает информацию, перебирает варианты сжатия IDAT, объединяет содержимое IDAT в один chunk и подбирает zlib window size без ухудшения compression ratio.
OptiPNG особенно полезен в задачах, где требуется оптимизация PNG без потери качества: подготовка иконок, скриншотов, элементов интерфейса, графики для сайта, изображений в репозитории, ассетов для приложения и статических файлов перед публикацией. Для визуального редактирования изображений подходят другие инструменты, например GIMP, Paint.NET, XnView или XnView MP, но OptiPNG решает другую задачу: уменьшить размер готового PNG без ручной правки картинки.

Что такое OptiPNG и для каких задач он нужен
OptiPNG относится к категории консольных оптимизаторов PNG. Пользователь запускает программу из Command Prompt, PowerShell, Terminal, shell-скрипта, batch-файла, npm-скрипта, CI-задачи или другого инструмента автоматизации. Вместо привычного окна с кнопками Open, Save и Export здесь используется команда, параметры и список файлов. Такой формат неудобен для пользователя, который привык перетаскивать картинки в окно программы, но удобен для разработчика, администратора сайта и любого процесса, где требуется повторяемая пакетная оптимизация PNG.
В обычном графическом редакторе пользователь открывает файл, выбирает настройки экспорта, сохраняет результат и вручную контролирует папку вывода. В OptiPNG основной сценарий короче: команда получает один или несколько файлов, анализирует PNG-структуру, выполняет оптимизацию и записывает результат. Для одного файла достаточно команды:
optipng image.png
Для набора PNG-файлов в текущей папке используется маска или перебор через оболочку:
optipng *.png
OptiPNG работает поверх готовых растровых файлов. Он не предназначен для ретуши, цветокоррекции, кадрирования, рисования, добавления текста, пакетного изменения размера или нанесения водяных знаков. Такие задачи решают редакторы и конвертеры. Например, для пакетного изменения размера удобнее рассматривать Free Batch Photo Resizer, для просмотра и конвертации — FastStone Image Viewer, для более общего набора графических операций — Picosmos Tools. OptiPNG нужен после того, как изображение уже подготовлено и сохранено в PNG.
Практическая ценность OptiPNG раскрывается в повторяемых задачах:
уменьшение веса PNG-иконок перед публикацией сайта;
оптимизация скриншотов интерфейса перед добавлением в документацию;
обработка ассетов в проекте перед коммитом;
автоматическое сжатие изображений в build pipeline;
проверка PNG-файлов на повреждения;
конвертация BMP, GIF, PNM и TIFF в PNG там, где нужен именно PNG-результат;
удаление лишних PNG metadata через -strip all;
контроль результата без записи файлов через -simulate.
OptiPNG не заменяет универсальные компрессоры изображений. Он не является основным инструментом для JPEG, WebP, AVIF или SVG. Его сильная область — PNG, где размер файла зависит не только от пикселей, но и от фильтров, структуры IDAT, цветового типа, палитры, метаданных и параметров сжатия.
Основные характеристики OptiPNG
OptiPNG — command-line utility, написанная на C. В каталоге SourceForge для проекта указан интерфейс Command-line, язык C и категория image converters / file compression software; пользовательские оценки на странице проекта показывают высокий общий рейтинг, но сама программа остаётся инструментом для пользователей, которым подходит работа через командную строку.
| Характеристика | Что это означает для пользователя |
|---|---|
| Тип программы | Консольный оптимизатор PNG без обычного графического окна |
| Основной формат | PNG |
| Входные внешние форматы | BMP, GIF, PNM, TIFF |
| Принцип сжатия PNG | Lossless-оптимизация без потери информации |
| Работа с PNG | Оптимизация файла на месте при успешном уменьшении |
| Работа с внешними форматами | Создание оптимизированного PNG с расширением .png |
| Управление | Команды и параметры |
| Массовая обработка | Через список файлов, маски оболочки, скрипты и автоматизацию |
| Резервные копии | -backup и -keep сохраняют копию изменяемого файла |
| Проверочный запуск | -simulate выполняет trials без создания выходных файлов |
| Удаление метаданных | -strip all удаляет PNG metadata, кроме смысловых исключений формата |
| Ограничение для новичков | Нет визуального выбора файлов и настроек |
OptiPNG обрабатывает PNG как родной формат. Для PNG-файла программа пытается оптимизировать файл in-place: при успешной оптимизации исходный PNG заменяется более компактной версией, а при включённом -keep сохраняется резервная копия. Для внешнего формата создаётся новый PNG-файл с именем исходного файла и расширением .png; существующий файл вывода не перезаписывается без -clobber.
Программа не работает как визуальная оболочка для выбора качества. В PNG нет аналога JPEG quality slider, потому что основной сценарий OptiPNG — не ухудшение картинки, а пересборка PNG без потери данных. Когда требуется уменьшить файл сильнее за счёт уменьшения количества цветов, стоит отдельно рассматривать pngquant, потому что он использует lossy PNG compression и переводит изображение в более компактный 8-bit PNG с alpha channel.
Интерфейс и логика работы
У OptiPNG нет главного окна в привычном смысле. Интерфейс программы — командная строка. Пользователь вводит команду, указывает параметры и передаёт один или несколько путей к изображениям. При запуске справки программа показывает synopsis, поддерживаемые типы файлов, базовые параметры, general options, optimization options, editing options, уровни оптимизации и примеры.
В Windows команда выполняется через cmd.exe или PowerShell. В Linux и macOS рабочая логика такая же: пользователь открывает терминал, переходит в папку с изображениями или указывает полный путь к файлу. Для проверки доступных параметров используется:
optipng -h
Справка отображает список параметров, включая -o , -backup, -keep, -clobber, -fix, -force, -preserve, -quiet, -simulate, -out , -dir , -f , -i , -zc , -zm , -zs , -zw , -snip и -strip .

После запуска OptiPNG выводит техническую информацию о файле: размер изображения, bit depth, color type, параметры IDAT и сведения о trial-операциях. В обычном режиме вывод короче, в verbose-режиме подробнее. Параметр -quiet или его alias -silent нужен для сценариев, где требуется минимальный вывод, например при запуске внутри скрипта или сборочного процесса.
Особенность OptiPNG — отсутствие отдельной кнопки Save. Сохранение результата управляется логикой параметров. Команда без -out и -dir оптимизирует PNG на месте. Команда с -out записывает результат в конкретный файл и требует ровно один входной файл. Команда с -dir отправляет выходные файлы в указанную папку. Эта модель отличается от графических редакторов, но хорошо подходит для повторяемых операций.
Что умеет OptiPNG
Сжатие PNG без потери данных
OptiPNG выполняет сжатие изображений PNG без потерь. Программа не меняет визуальное содержимое через размытие, сглаживание, пересэмплинг или снижение качества. Она работает с внутренним устройством PNG: анализирует параметры изображения, выполняет допустимые lossless reductions, пробует варианты сжатия IDAT и выбирает вариант, который даёт меньший файл.
Внутри PNG большая часть графических данных хранится в IDAT. Размер итогового файла зависит от того, насколько удачно выбраны фильтры строк, параметры zlib compression и структура chunks. Поэтому два визуально одинаковых PNG могут иметь разный размер: один редактор экспортирует файл с менее удачными параметрами, другой — с более компактными. OptiPNG нужен для второго прохода после экспорта.
Базовая команда:
optipng icon.png
Результат зависит от исходного файла. PNG, уже хорошо оптимизированный редактором или другим компрессором, уменьшается слабо или остаётся без изменений. PNG с лишними chunks, неудачными фильтрами или неоптимальной глубиной цвета часто уменьшается заметнее. Валидные PNG, которые не удаётся уменьшить, программа обычно оставляет без увеличения размера; принудительная запись включается отдельно через -force.
Конвертация BMP, GIF, PNM и TIFF в PNG
OptiPNG обрабатывает не только PNG-вход. Для BMP, GIF, PNM и TIFF программа создаёт оптимизированный PNG-файл. Имя выходного файла строится на основе исходного имени с расширением .png. Такой сценарий полезен, когда исходная графика хранится в BMP или GIF, а на выходе требуется PNG.
Пример конвертации BMP в PNG:
optipng logo.bmp
После обработки рядом с logo.bmp появляется logo.png, если этому не мешает существующий файл с таким именем. Для перезаписи существующего выходного файла используется -clobber, но этот параметр требует осторожности: он снимает защиту от случайной перезаписи.
Поддержка TIFF в OptiPNG ограничена. Программа работает с uncompressed PNG-compatible grayscale, RGB и RGBA TIFF. Metadata из внешних форматов не импортируется. Поэтому OptiPNG не стоит воспринимать как полноценный TIFF-конвертер для архивной графики, сканов, CMYK-файлов или сложных TIFF-контейнеров. Для универсальной конвертации изображений ближе Converseen, XnView MP или другие графические конвертеры.

Проверка и исправление PNG
OptiPNG выполняет integrity checks и corrections для PNG. Для работы с повреждёнными входными файлами используется -fix. Этот параметр включает error recovery и не влияет на валидные input files. При обработке некорректного PNG программа старается восстановить как можно больше данных, но приоритетом становится целостность, а не минимальный размер. При отсутствии -fix invalid input files остаются необработанными.
Команда для попытки восстановления:
optipng -fix broken.png
-fix не превращает OptiPNG в полноценную программу восстановления изображений. Он работает в пределах возможностей PNG-структуры и конкретного повреждения. При серьёзно разрушенном файле, отсутствующих критических данных или повреждённых пиксельных данных результат не гарантируется. Для безопасной работы перед восстановлением лучше использовать резервную копию исходника:
optipng -fix -keep broken.png
В сценариях с высокой ценой ошибки сначала выполняют пробный запуск:
optipng -fix -simulate broken.png
Такой запуск проводит trials, но не создаёт выходные файлы. Это удобно перед пакетной обработкой большого набора изображений, где часть файлов взята из старого архива или неизвестного источника.
Работа с метаданными
PNG-файл содержит не только пиксельные данные. В нём встречаются ancillary chunks: текстовые сведения, цветовые параметры, служебные данные, физические размеры и другие блоки. OptiPNG умеет удалять PNG metadata через -strip all. Единственный поддерживаемый suboption для -strip — all; при этом tRNS не считается обычной удаляемой метаинформацией, потому что представляет alpha channel в RGBA color space.
Команда:
optipng -strip all image.png
Удаление метаданных полезно для веб-графики, иконок, временных скриншотов, технических изображений и файлов, где важен минимальный размер. В рабочих макетах, архивах, документации и изображениях с важными цветовыми профилями такой подход требует контроля. Для безопасного варианта используется резервная копия:
optipng -strip all -keep image.png
Когда нужно сохранить файловые атрибуты, используется -preserve. Этот параметр сохраняет file attributes, включая timestamps и права доступа там, где это применимо. В проектах с контролем версий это важно: изменение времени файла не всегда критично, но при автоматизированных пайплайнах лишние изменения могут мешать проверкам.
Управление выходом: -out, -dir, -clobber
По умолчанию OptiPNG заменяет PNG на оптимизированную версию при успешном уменьшении. Для аккуратной обработки без замены исходника используют -out или -dir.
Команда с отдельным файлом вывода:
optipng -out icon.optimized.png icon.png
-out требует ровно один входной файл. Это логично: один output file не может соответствовать нескольким input files без неоднозначности. Для папки вывода используется -dir:
optipng -dir optimized *.png
При внешних форматах, например BMP, результат создаётся как PNG. Существующие файлы вывода не перезаписываются без -clobber. Это защищает от случайной потери уже подготовленных изображений. Параметр -clobber нужен только в контролируемом сценарии, когда пользователь заранее понимает, какие файлы будут заменены.
Параметры командной строки
У OptiPNG много параметров, но в ежедневной работе используется небольшая группа. Расширенные настройки нужны для fine-tuning PNG compression, экспериментов с фильтрами, zlib memory levels и стратегиями.
| Параметр | Назначение | Практический сценарий |
| -?, -h, -help | Показать справку | Проверка синтаксиса и доступных параметров |
| -o level | Выбрать уровень оптимизации | Баланс между скоростью и количеством trials |
| -backup, -keep | Сохранить резервную копию | Безопасная обработка исходников |
| -clobber | Перезаписать existing output и backup files | Автоматизированная перезапись в контролируемой папке |
| -dir directory | Записать output files в папку | Разделение исходников и результата |
| -out file | Записать output в конкретный файл | Обработка одного изображения без замены исходника |
| -fix | Включить error recovery | Попытка исправления повреждённого PNG |
| -force | Принудительно записать новый output | Специальные случаи, включая larger output или dSIG |
| -preserve | Сохранить file attributes | Сохранение timestamps и прав доступа |
| -quiet, -silent | Сократить вывод | Скрипты и автоматизация |
| -simulate | Выполнить trials без записи файлов | Проверка перед массовой обработкой |
| -v, -verbose | Подробный режим | Диагностика и анализ trials |
| -version | Показать version и build info | Проверка установленного бинарника |
| -- | Остановить parsing options | Файлы, имена которых похожи на параметры |
| -f filters | Выбрать PNG delta filters | Тонкая настройка фильтрации строк |
| -i type | Выбрать interlace type | Non-interlaced или Adam7 interlaced output |
| -nb | Отключить bit depth reduction | Сохранение глубины цвета |
| -nc | Отключить color type reduction | Сохранение цветового типа |
| -np | Отключить palette reduction | Сохранение палитры |
| -nx | Отключить все lossless image reductions | Максимально консервативная оптимизация |
| -nz | Не перекодировать IDAT datastreams | Только операции без recoding |
| -zc levels | Выбрать zlib compression levels | Эксперименты со сжатием IDAT |
| -zm levels | Выбрать zlib memory levels | Точная настройка zlib |
| -zs strategies | Выбрать zlib compression strategies | Подбор стратегий |
| -zw size | Выбрать zlib window size | Настройка window size |
| -full | Полный отчёт по IDAT | Диагностика, но медленнее |
| -snip | Вырезать одно изображение из multi-image / animation / video files | Работа с multi-image входом |
| -strip all | Удалить metadata objects | Уменьшение PNG и очистка ancillary chunks |
Базовые параметры
Самый простой запуск:
optipng file.png
Для справки:
optipng -h
Для подробного вывода:
optipng -v file.png
Для тихого режима:
optipng -quiet file.png
или:
optipng -silent file.png
Тихий режим полезен в CI, где длинный лог мешает видеть ошибки сборки. Подробный режим полезен при подборе параметров для набора однотипных изображений: скриншотов, иконок, игровых ассетов, UI-элементов.
Безопасная обработка
Для одиночных файлов, где исходник нужно сохранить:
optipng -keep file.png
или:
optipng -backup file.png
Для пробного запуска без записи:
optipng -simulate file.png
Для отдельного результата:
optipng -out result.png file.png
Для вывода в папку:
optipng -dir optimized file.png
Эти параметры важнее, чем кажется. Команда optipng file.png работает на месте, а пользователь без привычки к CLI ожидает отдельный экспорт. Поэтому первая безопасная схема для новой папки с изображениями — -simulate, затем -keep, затем обычная оптимизация.
Точная настройка PNG-сжатия
Параметр -f выбирает PNG delta filters. Значения 0, 1, 2, 3, 4 соответствуют стандартным PNG filter codes: None, Left, Up, Average и Paeth. Значение 5 включает adaptive filtering, эффект которого задаётся libpng, используемой OptiPNG.
Пример:
optipng -f0-5 file.png
Параметр -i выбирает interlace type:
optipng -i0 file.png
-i0 создаёт non-interlaced output, -i1 — Adam7 interlaced output. По умолчанию выход сохраняет interlace type входного изображения.
Параметры zlib:
optipng -zc6-9 -zm8-9 -zs0-3 file.png
Такой запуск перебирает указанные zlib compression levels, memory levels и strategies. Он полезен для продвинутой настройки, но не нужен в каждом проекте. Слишком широкие rangeset-аргументы увеличивают время обработки, а выигрыш после очень исчерпывающих поисков не всегда значим. Extremely exhaustive searches предназначены для advanced users.
Параметры сохранения структуры изображения
Иногда важно уменьшить PNG без изменения некоторых характеристик. Для этого используются запреты reductions:
optipng -nb file.png
-nb отключает bit depth reduction.
optipng -nc file.png
-nc отключает color type reduction.
optipng -np file.png
-np отключает palette reduction.

optipng -nx file.png
-nx отключает все lossless image reductions и включает поведение -nb, -nc и -np.
Эти параметры нужны не каждому пользователю. Они важны в рабочих процессах, где downstream-инструмент ожидает конкретный color type, palette или bit depth. Для обычной веб-графики чаще достаточно стандартного запуска или выбора уровня -o.
Уровни оптимизации: от -o0 до -o7
Параметр -o level управляет уровнем оптимизации. Значения идут от 0 до 7. Низкий уровень быстрее, высокий выполняет больше attempts. Уровень -o7 не означает волшебное уменьшение любого PNG; он означает более дорогой перебор и более медленную обработку. Встроенные примеры manual описывают optipng -o5 file.png как slow, а optipng -o7 file.png как very slow.
| Уровень | Поведение | Где уместен |
| -o0 | Минимальные operations, без изменения attributes вроде bit depth / color type и без recompression existing IDAT datastreams | Быстрая нормализация, очень осторожная обработка |
| -o1 | Один IDAT compression trial, выбранный как наиболее перспективный | Быстрый проход по большому набору файлов |
| -o2 и выше | Несколько IDAT compression trials; чем выше уровень, тем больше trials | Обычная и углублённая оптимизация |
| -o5 | Медленный профиль из примеров manual | Небольшие наборы важных PNG |
| -o7 | Очень медленный профиль из примеров manual | Финальная подготовка ассетов, где важен каждый килобайт |
Пример обычной обработки:
optipng -o2 image.png
Пример более тщательной обработки:
optipng -o5 image.png
Пример максимального уровня из стандартной шкалы:
optipng -o7 image.png
Высокие уровни особенно ощутимы при пакетной оптимизации PNG. Для сотен и тысяч файлов разумнее сначала выполнить быстрый проход, затем отдельно обработать крупные или часто загружаемые PNG. При работе с сайтом это могут быть hero-изображения, скриншоты интерфейса, большие схемы и UI-ассеты. Небольшие иконки после хорошего экспорта часто дают минимальный выигрыш, поэтому многочасовой перебор ради пары байтов не всегда оправдан.
Практический профиль для проекта:
| Сценарий | Команда | Логика |
| Проверить, что произойдёт | optipng -simulate *.png | Trials без записи |
| Быстро обработать папку | optipng -o1 *.png | Минимум времени |
| Обычный веб-проход | optipng *.png | Стандартный баланс |
| Финальный проход перед релизом | optipng -o5 *.png | Больше attempts |
| Максимально сжать небольшой набор | optipng -o7 *.png | Очень медленно, но глубже |
| Удалить metadata | optipng -strip all *.png | Очистка ancillary chunks |
| Сохранить исходники | optipng -keep *.png | Резервные копии |
Комбинации параметров зависят от задачи. Для сайта часто применяют:
optipng -o5 -strip all -keep *.png
Такая команда выполняет углублённую оптимизацию, удаляет metadata и сохраняет резервные копии. Для регулярной сборки без лишнего вывода:
optipng -o2 -quiet *.png
Для ручного анализа конкретного файла:
optipng -o7 -v -full image.png
-full даёт полный отчёт по IDAT, но замедляет trials. Его стоит использовать для диагностики, а не для повседневной обработки всех изображений.
Пошаговая инструкция по использованию OptiPNG
Как открыть справку
Работа начинается с проверки, что команда доступна в терминале:
optipng -h
Справка показывает синтаксис optipng [options] files, поддерживаемые типы PNG, BMP, GIF, PNM or TIFF, базовые параметры и уровни оптимизации. В Windows пользователь видит вывод прямо в cmd.exe; в Linux и macOS — в terminal. Для расширенной диагностики используется:
optipng -v
Команда -v включает verbose output и показывает copyright, version и build info через связанные режимы -verbose и -version.
Как сжать один PNG
Для обработки одного файла в текущей папке:
optipng banner.png
OptiPNG анализирует banner.png, выполняет оптимизацию и заменяет файл меньшей версией при успешном результате. Когда файл уже оптимизирован или новый результат не становится меньше, программа не обязана записывать новый output. Такой подход защищает от бессмысленного увеличения размера.
Для сохранения копии:
optipng -keep banner.png
После такой команды исходная версия остаётся в backup-файле, а основной PNG получает оптимизированное содержимое.
Как обработать PNG с высоким уровнем оптимизации
Для более глубокого перебора:
optipng -o7 banner.png
-o7 стоит применять выборочно: к большим PNG, финальным ассетам, изображениям главных страниц, часто загружаемым скриншотам и файлам, которые долго будут находиться в публичном проекте. Для временных изображений, черновиков и больших папок удобнее начинать с обычного запуска или -o1.
Как выполнить пробный запуск
Пробный запуск не создаёт output files:
optipng -simulate banner.png
Для папки:
optipng -simulate *.png
-simulate особенно полезен перед пакетной обработкой PNG без резервных копий. Он показывает, как программа будет выполнять trials, но не меняет файлы.
Как удалить метаданные
Для очистки metadata:
optipng -strip all banner.png
Для более безопасного варианта:
optipng -strip all -keep banner.png
Очистка metadata уменьшает файл, но удаляет ancillary chunks. В веб-графике это часто допустимо. В архивных изображениях, документации, брендовых материалах и файлах с цветовым профилем лучше заранее проверить результат.
Как сохранить результат в отдельный файл
Для одного файла:
optipng -out banner.optimized.png banner.png
Такой вариант удобен при сравнении исходника и результата. -out не подходит для нескольких input files в одной команде, потому что команда требует exactly one input file.
Как вывести обработанные файлы в отдельную папку
Сценарий с отдельной папкой:
optipng -dir optimized *.png
Папка optimized отделяет результат от исходников. В больших проектах такой подход аккуратнее, чем in-place обработка: исходные файлы остаются нетронутыми, а оптимизированные версии уходят в build-директорию.
Как обработать несколько файлов
Для нескольких конкретных файлов:
optipng logo.png icon.png header.png
Для маски в текущей папке:
optipng *.png
Для файлов с пробелами в имени путь берётся в кавычки:
optipng "main banner.png"
Для вложенных папок в Unix-like shell часто используют find:
find . -name "*.png" -exec optipng -o2 {} \;OptiPNG обрабатывает список файлов последовательно. Для параллельной обработки используют возможности оболочки, task runner, GNU parallel, CI matrix или несколько процессов. Сама программа не становится графическим менеджером очереди; её сила — простая CLI-команда, которую легко встроить в чужой процесс.

Как конвертировать BMP, GIF, PNM или TIFF в PNG
Для BMP:
optipng picture.bmp
Для GIF:
optipng animation-source.gif
Для TIFF:
optipng scan.tiff
Внешний формат преобразуется в PNG. Для multi-image, animation или video files существует -snip: он вырезает одно изображение, в зависимости от входного формата это первое или наиболее релевантное, например самое большое изображение.
Как исправить проблемный файл
Для валидного PNG -fix не нужен. Для некорректного файла:
optipng -fix damaged.png
Для безопасного варианта:
optipng -fix -keep damaged.png
Для предварительной проверки:
optipng -fix -simulate damaged.png
Восстановление PNG следует отделять от оптимизации. В нормальном рабочем процессе сначала сохраняют исходник, затем пробуют восстановление, затем отдельно проверяют результат визуально и только после этого выполняют финальное сжатие PNG.
Практические сценарии
Оптимизация PNG перед загрузкой на сайт
Сайтам важен вес статических ресурсов. PNG часто используется для логотипов, скриншотов, UI-элементов, прозрачных иконок и схем. OptiPNG сжимает графику без изменения видимого результата, поэтому его удобно запускать перед публикацией.
Типовой сценарий:
optipng -o2 -strip all assets/*.png
Для важных изображений:
optipng -o5 -strip all assets/*.png
Для безопасной подготовки:
optipng -o2 -strip all -keep assets/*.png
Веб-разработчик получает меньшие PNG и сохраняет визуальную точность. Это особенно полезно для скриншотов интерфейса, где JPEG создаёт артефакты вокруг текста и линий, а PNG сохраняет чёткие границы.
Подготовка иконок и интерфейсной графики
Иконки, пиктограммы, кнопки и элементы интерфейса часто содержат прозрачность и ограниченную палитру. OptiPNG проверяет, где допустимы reductions: color type, bit depth, palette. Для таких файлов уменьшение бывает заметным без изменения вида.
Команда для папки с иконками:
optipng -o5 -strip all ui-icons/*.png
Для рабочих исходников лучше оставить metadata и timestamps:
optipng -o2 -preserve ui-icons/*.png
-preserve полезен в проектах, где время модификации файла участвует в синхронизации, кэше или проверках сборки.
Обработка PNG в проекте на Git
В репозиториях OptiPNG удобен как pre-commit или отдельная команда перед pull request. Он уменьшает размер бинарных файлов, снижает объём diff в будущем и помогает не хранить неоптимизированные PNG.
Пример ручного прохода:
optipng -o2 -quiet images/*.png
Для проверки без изменения:
optipng -simulate images/*.png
В Git-процессе важно заранее решить, будут ли PNG оптимизироваться in-place или складываться в build-директорию. In-place удобен для ассетов, которые хранятся в репозитории уже в финальном виде. Вывод через -dir удобен, когда исходники и опубликованные файлы разделены.
Использование в build pipeline
OptiPNG подходит для build pipeline благодаря предсказуемому CLI. Команда легко добавляется в npm scripts, Makefile, shell script, batch-файл или CI-step.
Пример в Makefile:
optimize-png: optipng -o2 -quiet public/images/*.png
Пример для более строгой сборки:
optipng -o5 -strip all -quiet public/images/*.png
Для CI важно не перегружать сборку слишком медленным -o7 на каждом запуске. Рациональная схема: быстрый -o1 или стандартный уровень в регулярной сборке, глубокий -o7 только для релизной подготовки или отдельной задачи.
Проверка ассетов перед релизом
Перед релизом проекта PNG-ассеты удобно проверить отдельным проходом:
optipng -simulate public/**/*.png
Затем выполнить оптимизацию:
optipng -o5 -strip all public/**/*.png
Для критичных ассетов:
optipng -o7 -strip all public/images/main/*.png
После обработки проверяют, что приложение, сайт или документация корректно отображает изображения. Lossless-оптимизация не должна менять визуальный результат, но удаление metadata или изменение interlace type иногда влияет на вспомогательные процессы, которые читают служебные chunks.
Локальная обработка без отправки файлов в онлайн-сервис
OptiPNG выполняется локально. Файлы не нужно загружать в браузерный компрессор или сторонний сервис. Это важно для внутренних скриншотов, корпоративной документации, закрытых UI-макетов и файлов, которые нельзя отправлять на внешние серверы.
Для пользователя, которому нужна полностью визуальная локальная обработка, ближе графические программы. Для пользователя, который работает со скриптами, OptiPNG даёт тот же базовый результат через короткую команду.
Системные требования
OptiPNG — небольшая консольная программа без графической оболочки. Её требования определяются не интерфейсом, а платформой, способом сборки и размером обрабатываемых файлов. На Windows используется исполняемый файл optipng.exe; в Unix-like системах программа запускается как обычная CLI-утилита. Поскольку OptiPNG написан на C и работает с libpng/zlib, в пакетных сборках Linux, BSD и macOS зависимости обычно решаются менеджером пакетов, а при самостоятельной сборке важны библиотеки и toolchain. История версий фиксирует обновления libpng, zlib и изменения сборочной инфраструктуры, включая добавление CMake file и отказ от 16-bit platforms в ветке 7.x.
| Компонент | Требование или ограничение |
| Интерфейс | Command-line |
| Графическая оболочка | Не используется |
| Основной навык пользователя | Работа с терминалом и путями к файлам |
| Память | Зависит от размера PNG и количества trials |
| Процессорное время | Растёт на высоких уровнях оптимизации |
| Windows | Запуск через Command Prompt или PowerShell |
| Linux/macOS/BSD | Запуск через terminal, пакетную сборку или бинарник из окружения |
| Внешние форматы | BMP, GIF, PNM, TIFF |
| TIFF | Только uncompressed PNG-compatible grayscale, RGB и RGBA |
| Pipes/streams | Не поддерживаются |
| Extended file attributes / ACL | Не поддерживаются |
| IDAT больше 2 GB | Encoding не поддерживается |
Ограничение по total IDAT size больше 2 GB важно для очень крупных изображений и нестандартных сценариев. Для типичных веб-ассетов, иконок, скриншотов и документации такой предел не становится рабочей проблемой, но он показывает, что OptiPNG не рассчитан на любые гигантские растровые массивы.
Главное пользовательское требование — комфортная работа с командной строкой. Новичку без опыта CLI сложнее понять, почему файл заменился на месте, почему путь с пробелом требует кавычек и почему нет кнопки выбора папки. Для такого пользователя удобнее GUI-оболочки и визуальные пакетные инструменты. Для разработчика, наоборот, отсутствие графического интерфейса становится преимуществом: команду легко повторить, сохранить, встроить в сборку и запустить на сервере.
Преимущества и ограничения
Плюсы
OptiPNG выполняет сжатие PNG без потери информации, поэтому подходит для интерфейсной графики, скриншотов, схем и иконок.

Командная строка упрощает автоматизацию: одну команду легко добавить в скрипт, Makefile, CI или сборку сайта.
Программа обрабатывает несколько файлов за один запуск через список путей, маски и shell-инструменты.
Поддерживаются BMP, GIF, PNM и TIFF как входные форматы для создания оптимизированного PNG.
-simulate позволяет проверить обработку без записи файлов.
-keep и -backup сохраняют резервные копии.
-strip all удаляет PNG metadata, когда важен минимальный размер файла.
-preserve сохраняет файловые атрибуты там, где это применимо.
Расширенные параметры -f, -zc, -zm, -zs и -zw дают контроль над PNG filters и zlib compression.
Программа не требует загрузки изображений на сторонний сервер.
Минусы
У OptiPNG нет обычного графического интерфейса, поэтому новичку сложнее начать работу.
Программа оптимизирует PNG, но не заменяет фоторедактор, просмотрщик, пакетный ресайзер или универсальный конвертер.
JPEG, WebP, AVIF и SVG не являются рабочей областью OptiPNG.
Высокие уровни оптимизации, особенно -o7, требуют больше времени.
TIFF support ограничен uncompressed PNG-compatible grayscale, RGB и RGBA images.
Metadata из внешних image formats не импортируется.
Pipes, streams, extended file attributes и access control lists не поддерживаются.
Lossless image reductions реализованы не полностью: palette reductions частичные, bit depth reductions ниже 8 для grayscale images не реализованы.
Encoding изображений с total IDAT size выше 2 GB не поддерживается.
Сравнение с аналогами
OptiPNG стоит сравнивать не с фоторедакторами, а с инструментами оптимизации PNG. В одном ряду с ним находятся pngcrush, Oxipng, ZopfliPNG, pngquant, PNGGauntlet и ImageOptim. У каждого инструмента свой баланс: lossless или lossy, GUI или CLI, скорость, глубина перебора, поддержка APNG, работа с несколькими форматами и пригодность для автоматизации.
| Программа | Тип | Сжатие | Интерфейс | Сильная сторона | Ограничение относительно OptiPNG |
| OptiPNG | PNG optimizer | Lossless | CLI | Предсказуемая PNG-оптимизация, -simulate, -strip all, fine-tuning | Нет GUI, нет многопоточной обработки внутри самой команды |
| pngcrush | PNG optimizer | Lossless | CLI | Глубокая работа с PNG chunks, фильтрами и IDAT | Часто сложнее по параметрам, меньше подходит новичкам |
| Oxipng | PNG/APNG optimizer | Lossless | CLI / Rust library | Multithreaded, работает с PNG и APNG | Другая реализация и набор параметров; при миграции нужно проверять pipeline |
| ZopfliPNG | PNG optimizer | Lossless | CLI | Zopfli compression даёт сильное сжатие ценой скорости | Медленная обработка, не всегда удобен для регулярной сборки |
| pngquant | PNG compressor | Lossy | CLI / library | Сильно уменьшает 24/32-bit PNG через 8-bit PNG with alpha | Меняет данные изображения, не является чистой lossless-заменой OptiPNG |
| PNGGauntlet | PNG compression app | Lossless | GUI, Windows | Объединяет PNGOUT, OptiPNG и DeflOpt | Удобнее визуально, но менее прямолинеен для CLI-автоматизации |
| ImageOptim | Image optimizer | Lossless by default, опционально lossy | GUI, macOS | Удобная локальная drag-and-drop оптимизация нескольких форматов | Ориентирован на macOS и визуальный workflow |
OptiPNG и pngcrush
pngcrush — свободная command-line utility для lossless-оптимизации PNG. Она уменьшает размер IDAT data stream, перебирая комбинации compression methods и delta filters, а также выполняет манипуляции с chunks: изменение bit depth, удаление ancillary chunks и добавление отдельных chunks вроде gAMA, tRNS, iCCP и textual chunks.
OptiPNG проще воспринимается в типовом сценарии: optipng file.png, optipng -o7 file.png, optipng -strip all file.png. pngcrush интересен пользователям, которым нужен более явный контроль над PNG chunks и отдельными операциями. Для сайта, где требуется быстрый lossless-прогон PNG, OptiPNG обычно проще встроить в рутинный процесс. Для экспериментов с низкоуровневой структурой PNG pngcrush остаётся серьёзным аналогом.
OptiPNG и Oxipng
Oxipng — multithreaded lossless PNG/APNG compression optimizer, написанный на Rust. Он работает через command-line interface и как library для Rust-программ.
Главное отличие — многопоточность и APNG-направленность. OptiPNG исторически проще и консервативнее: он подходит для стабильной PNG-оптимизации и давно используется в скриптах. Oxipng удобнее там, где обрабатываются большие наборы PNG/APNG и важна скорость на многоядерном процессоре. При замене OptiPNG на Oxipng в сборке следует отдельно проверить параметры, поведение с metadata, результат на APNG и требования к выходному формату.
OptiPNG и ZopfliPNG
ZopfliPNG — command-line program для оптимизации PNG, использующий Zopfli compression for Deflate. Zopfli как алгоритм даёт очень хорошее, но медленное deflate/zlib compression.
ZopfliPNG выбирают для финального прохода, где скорость не критична, а каждый килобайт имеет значение. OptiPNG удобнее как повседневный инструмент: он быстрее осваивается, проще запускается и имеет понятные уровни -o. В продвинутом workflow встречается схема: сначала OptiPNG для стандартной нормализации и metadata, затем ZopfliPNG для небольшого набора особо важных файлов.
OptiPNG и pngquant
pngquant принципиально отличается от OptiPNG. Он является command-line utility and library for lossy compression of PNG images; conversion часто уменьшает размер до 70% и сохраняет full alpha transparency.
OptiPNG сохраняет информацию, pngquant меняет представление изображения через уменьшение цветовой модели. Это не делает pngquant плохим: для иллюстраций, скриншотов, UI-графики с ограниченной палитрой и веб-страниц он часто даёт гораздо меньшие файлы. Но для задач, где требуется точное сохранение данных, брендовых цветов, технических схем или пиксельного соответствия, OptiPNG безопаснее.
OptiPNG и PNGGauntlet
PNGGauntlet — Windows GUI-приложение для PNG-сжатия. Оно объединяет PNGOUT, OptiPNG и DeflOpt, работает lossless, конвертирует JPG, GIF, TIFF и BMP в PNG и поддерживает parallel batch mode.
Для пользователя, которому нужен drag-and-drop интерфейс, PNGGauntlet проще. Для разработчика, который пишет скрипт или автоматизирует build pipeline, OptiPNG удобнее напрямую: команда короче, зависимости понятнее, процесс легче воспроизвести на сервере. PNGGauntlet подходит для ручной подготовки изображений в Windows, OptiPNG — для сценариев, где важна автоматизация и точный контроль параметров.
OptiPNG и ImageOptim
ImageOptim — macOS-приложение для оптимизации изображений. Оно объединяет разные инструменты, по умолчанию осторожно сохраняет качество, а при включении lossy-режимов применяет более агрессивные оптимизации для JPEG, SVG, animated GIF и PNG.
ImageOptim удобен дизайнерам и пользователям Mac, которым нужна визуальная обработка без командной строки. OptiPNG лучше подходит там, где требуется конкретная PNG-команда, повторяемый результат и запуск в shell. Эти инструменты не исключают друг друга: ImageOptim может быть рабочим окном для ручной подготовки, а OptiPNG — элементом автоматизированной сборки.
Отзывы пользователей и профильных изданий
Пользовательская оценка OptiPNG на SourceForge высокая: на странице проекта отображается 4.9 из 5, основная масса оценок — пять звёзд; отдельные параметры ease, features, design и support показаны как 4 из 5. В отзывах программу хвалят за single-purpose image optimization, эффективность на настройках по умолчанию, полезность для web sites и возможность оставлять долгую обработку -o7 -zm1-9 на большие наборы PNG. Есть и критика: один из отзывов сравнивает результат не в пользу PNGGauntlet.
Усреднённое мнение пользователей сети сводится к трём пунктам. Первое — OptiPNG ценят за понятную задачу: уменьшить PNG без потери качества. Второе — его чаще выбирают люди, которым не мешает командная строка. Третье — для новичков CLI остаётся барьером, поэтому рядом с OptiPNG часто обсуждают GUI-оболочки и программы, где файл перетаскивается в окно.
Softpedia описывает OptiPNG как инструмент для lossless compression с несколькими уровнями глубины и конвертацией через command line interface; на странице указана оценка 3.3/5 по 9 votes. Такая оценка хорошо отражает специфику программы: она полезна в своей нише, но не пытается понравиться пользователю, ожидающему современный интерфейс с кнопками.
Downloadcrew формулирует вывод жёстче и точнее: OptiPNG — powerful PNG optimizer, easy to use by command line standards, with plenty of low-level control for experts. Это удачная характеристика: для CLI-инструмента OptiPNG действительно прост в базовом сценарии, но его расширенные параметры требуют понимания PNG filters, zlib levels, IDAT и metadata.
FreeSoft100 отдельно подчёркивает отсутствие GUI и работу через command line, где пользователь меняет optimization level и сохраняет compressed file как separate file. В этой же карточке описан drag-and-drop сценарий на optipng.exe, но основная настройка всё равно выполняется через командную строку. Для русскоязычного пользователя это важная деталь: даже в Windows OptiPNG остаётся CLI-программой, а не полноценным оконным приложением.
Профильные материалы о веб-оптимизации часто используют OptiPNG как один из стандартных CLI-инструментов рядом с jpegoptim, pngcrush, pngquant, Oxipng и ZopfliPNG. Его сильная сторона — стабильный lossless-результат; слабая — отсутствие визуального интерфейса и не самая высокая скорость при глубоких уровнях.
Безопасность и обновления
OptiPNG обрабатывает бинарные графические файлы, поэтому история безопасности важна. В старых ветках исправлялись уязвимости GIF decoder, TIFF decoder и BMP decoder. Для версий до 0.7.8 с поддержкой GIF перечислена global buffer overflow vulnerability в GIF decoder; для версий до 0.7.7 — buffer overflow vulnerability в GIF decoder и integer overflow vulnerability в TIFF decoder; в 0.7.6 исправлялись security-sensitive defects в BMP decoder.
Практическое правило простое: старые сборки не стоит использовать для обработки непроверенных BMP, GIF, TIFF и PNG из внешних источников. Это особенно важно для серверов, автоматических загрузчиков, CMS-процессов и любых сценариев, где пользовательский файл сразу передаётся в CLI-утилиту.
OptiPNG не должен запускаться с повышенными правами без необходимости. Для оптимизации изображений достаточно прав на чтение входной папки и запись в папку вывода. В Windows не нужно открывать Command Prompt от администратора для обычной обработки файлов в пользовательском каталоге. В Linux и macOS не требуется sudo для оптимизации изображений в домашней папке или проекте.
Для безопасного batch-сценария:
optipng -simulate uploads/*.png
Затем:
optipng -keep -o2 uploads/*.png
Для автоматической обработки пользовательских загрузок лучше отделять временную папку, ограничивать права процесса и сохранять исходники до проверки результата. OptiPNG не является антивирусом и не проверяет файл на вредоносность; он оптимизирует поддерживаемые raster image files.
Частые ошибки при работе
Ожидание графического интерфейса
OptiPNG не открывается как классический редактор. Двойной щелчок по optipng.exe не даёт привычного окна с меню. Программа рассчитана на запуск из командной строки. В Windows файл PNG можно перетащить на исполняемый файл, но настройка параметров, выбор уровня и вывод в отдельный файл выполняются через CLI.
Запуск не из той папки
Команда:
optipng image.png
работает только тогда, когда image.png находится в текущей папке или указан полный путь. Для перехода в папку используется cd, а для путей с пробелами — кавычки:
optipng "C:\Projects\Site Images\banner.png"
Отсутствие кавычек в путях с пробелами
Без кавычек оболочка разбивает путь на части. Ошибка выглядит как набор несуществующих файлов. Правильно:
optipng "main banner.png"
Неправильно:
optipng main banner.png
Во втором случае программа получает два аргумента: main и banner.png.
Использование -force без понимания последствий
-force принудительно записывает новый output file. Он overrides решение программы не записывать файл, например когда PNG digitally signed через dSIG или когда output становится больше input. Для обычной оптимизации -force не нужен. Его используют только в контролируемых экспериментах.
Удаление метаданных без резервной копии
-strip all полезен, но необратим для обрабатываемого файла без backup. Для рабочих изображений безопаснее:
optipng -strip all -keep image.png
Для финальной веб-копии удобнее выводить результат в отдельную папку:
optipng -strip all -dir public images/*.png
Слишком высокий уровень для регулярной сборки
-o7 медленный. Для регулярной сборки сайта или приложения постоянный запуск -o7 по всей папке увеличивает время CI. Быстрее разделить процесс: обычный -o2 при разработке, глубокий -o7 перед релизом или только для крупных файлов.
Попытка оптимизировать JPEG и WebP
OptiPNG работает с PNG и внешними форматами, которые конвертирует в PNG. Он не является оптимизатором JPEG/WebP/AVIF. Для JPEG нужны другие инструменты; для WebP и AVIF — отдельные кодировщики. Попытка сделать OptiPNG универсальным компрессором изображений приводит к неправильному workflow.
Игнорирование ограничений TIFF
TIFF может содержать разные схемы сжатия, цветовые модели, страницы и metadata. OptiPNG поддерживает только ограниченный subset: uncompressed PNG-compatible grayscale, RGB и RGBA images. Для сложных TIFF-файлов нужен специализированный конвертер.
Для кого OptiPNG подходит, а кому лучше выбрать другое решение
OptiPNG подходит пользователям, которым нужен точный и локальный консольный оптимизатор PNG. Его аудитория — веб-разработчики, верстальщики, авторы документации, администраторы сайтов, разработчики приложений, пользователи Git и люди, которые регулярно обрабатывают PNG через скрипты.
| Сценарий | OptiPNG подходит | Когда выбрать альтернативу |
| Разовая обработка одного PNG | Да, команда короткая | Новичку без CLI проще GUI-компрессор |
| Пакетная оптимизация PNG | Да, через маски и скрипты | Нужен визуальный список файлов и прогресс — PNGGauntlet / ImageOptim |
| Сжатие без потери информации | Да | Нужен максимальный размер за счёт потерь — pngquant |
| Подготовка сайта | Да | Нужно одновременно сжимать JPEG/WebP/AVIF — универсальный image pipeline |
| Финальная оптимизация важных ассетов | Да, -o5 или -o7 | Нужен сверхмедленный Deflate-проход — ZopfliPNG |
| APNG | Ограниченно, с сохранением integrity в истории 0.6 | Для активной APNG-оптимизации лучше смотреть Oxipng |
| Работа с графикой вручную | Нет | GIMP, Paint.NET, XnView, FastStone Image Viewer |
| Конвертация многих форматов | Только BMP/GIF/PNM/TIFF в PNG | Универсальные конвертеры вроде Converseen или XnView MP |
Для новичка лучший способ начать — выполнить optipng -h, затем optipng -simulate file.png, затем optipng -keep file.png. Такая последовательность показывает параметры, проверяет обработку без записи и только потом меняет файл с резервной копией.
Для опытного пользователя интереснее связка -o, -strip all, -preserve, -dir, -out, -f, -zc, -zm, -zs, -zw. Эти параметры позволяют точнее встроить OptiPNG в рабочий процесс и управлять балансом скорости, размера и сохранения свойств файла.
Для команды OptiPNG удобен тем, что правило оптимизации фиксируется в одной команде. Все участники получают одинаковый результат, а не экспортируют PNG через разные редакторы с разными настройками. Для бизнеса и внутренних проектов важна локальная обработка: файлы не уходят в сторонний онлайн-сервис.
Практическая схема выбора параметров
Для большинства пользователей не нужно начинать с тонкой настройки zlib. Правильнее подобрать профиль по задаче.
| Задача | Команда | Почему так |
| Первый запуск | optipng -h | Показать справку и синтаксис |
| Проверка одного файла | optipng -simulate file.png | Не менять файл до понимания результата |
| Безопасная оптимизация | optipng -keep file.png | Сохранить backup |
| Обычная папка сайта | optipng -o2 -strip all *.png | Баланс размера и скорости |
| Финальная папка сайта | optipng -o5 -strip all *.png | Более глубокий перебор |
| Максимальный уровень для малого набора | optipng -o7 *.png | Долгая, но тщательная обработка |
| Сохранить timestamps | optipng -preserve *.png | Не ломать файловые атрибуты |
| Отдельная папка результата | optipng -dir optimized *.png | Не трогать исходники |
| Один файл в отдельный output | optipng -out result.png file.png | Сравнить исходник и результат |
| Исправление повреждения | optipng -fix -keep damaged.png | Recovery с резервной копией |
Базовый рабочий профиль для сайта:
optipng -o2 -strip all -keep *.png
Профиль для релизной подготовки:
optipng -o5 -strip all -preserve *.png
Профиль для эксперимента с конкретным файлом:
optipng -o7 -v -full -simulate image.png
После эксперимента команду упрощают. Нет смысла постоянно использовать -v -full в обычной сборке: эти параметры нужны для анализа, а не для ежедневного production-прохода.
Контроль результата после оптимизации
После обработки PNG проверяют не только размер файла. Для качественного workflow полезен простой чек-лист:
файл открывается в браузере или просмотрщике;
прозрачность сохранилась;
фон вокруг иконок не изменился;
текст на скриншоте остался чётким;
цвета интерфейсных элементов визуально совпадают с исходником;
сборка проекта не ругается на изменённые assets;
при использовании -strip all не потеряны нужные metadata;

при использовании -dir результат оказался в ожидаемой папке;
при использовании -out обработан ровно один входной файл.
Для визуального сравнения можно открыть исходник и оптимизированную копию в XnView, IrfanView, FastStone Image Viewer или другом просмотрщике. OptiPNG сам не предоставляет графический viewer, поэтому проверка результата выполняется внешним инструментом.
Размер проверяется средствами ОС:
в Windows — свойства файла в Explorer;
в Linux/macOS — ls -lh, du -h, файловый менеджер;
в Git — разница в binary file size через инструменты репозитория;
в web-проекте — build output и отчёты о размере assets.
Для скрипта удобно записывать результат в отдельную папку и сравнивать:
optipng -dir optimized *.png
Такой подход оставляет исходники на месте и облегчает ручную проверку.
OptiPNG в рабочем процессе сайта
В веб-проекте OptiPNG лучше размещать не в самом конце хаотично, а в понятной цепочке:
дизайнер или редактор сохраняет исходное изображение;
при необходимости изображение приводится к нужному размеру в редакторе;
PNG сохраняется в рабочую папку проекта;
OptiPNG выполняет lossless-оптимизацию;
результат попадает в папку публикации;
сайт проверяется в браузере.
OptiPNG не должен исправлять ошибки неправильного экспорта. Когда изображение слишком большое по пиксельным размерам, программа не заменяет resize. PNG шириной 4000 px после OptiPNG останется шириной 4000 px. Сначала уменьшают физические размеры в графическом редакторе, затем запускают оптимизацию PNG. Для такой предварительной обработки подходят FastStone Image Viewer, XnView MP, GIMP и похожие инструменты.
Для проекта с исходниками и публичной папкой удобна схема:
optipng -o2 -strip all -dir public/images source/images/*.png
Она сохраняет исходные файлы в source/images, а оптимизированные версии отправляет в public/images. Такой подход особенно удобен в статических сайтах и документации, где исходники могут хранить metadata, а опубликованная версия должна быть легче.
OptiPNG и качество изображения
При корректной lossless-оптимизации пиксельная информация сохраняется. OptiPNG уменьшает файл не через ухудшение изображения, а через внутреннюю перестройку PNG. Поэтому он отличается от сервисов и программ, где пользователь выбирает процент качества, получает меньший файл и визуальные потери.
Однако lossless не означает, что любые служебные данные останутся на месте. Параметр -strip all удаляет metadata objects. Параметры reductions меняют способ представления изображения внутри PNG, когда это допустимо без потери смысловой информации. Для обычного зрителя картинка остаётся той же, но для специальных процессов, которые читают конкретные chunks или ожидают определённый color type, результат нужно проверять.
Для технических схем, UI-скриншотов и иконок OptiPNG удобен именно потому, что не добавляет JPEG-артефакты. Тонкие линии, пиксельная сетка, текст и прозрачность остаются чёткими. Для фотографий PNG обычно не является оптимальным форматом по размеру; там чаще выбирают JPEG, WebP или AVIF. OptiPNG не превращает фотографический PNG в идеальный формат для веба, а только оптимизирует уже выбранный PNG.
Ограничения формата PNG, которые важны при работе с OptiPNG
PNG хорошо подходит для изображений с резкими границами, прозрачностью, ограниченной палитрой и текстом. Скриншоты интерфейса, диаграммы, схемы, иконки, логотипы и UI-элементы обычно выигрывают от PNG. Фотографии с большим количеством плавных переходов и шумов часто имеют большой размер в PNG даже после оптимизации.
OptiPNG работает в рамках PNG. Он не решает задачи:
уменьшить разрешение изображения;
удалить шум с фотографии;
выбрать визуально допустимый уровень потерь;
конвертировать PNG в WebP/AVIF;
автоматически подобрать формат для каждого изображения;
заменить графический редактор;
собрать responsive-набор изображений для сайта;
создать preview или thumbnail.
Эти задачи решаются другими инструментами. OptiPNG ставят в цепочку после них, когда выбран PNG и требуется сделать файл компактнее без потери информации.
Работа с резервными копиями и исходниками
Самая безопасная модель — хранить исходники отдельно от оптимизированного результата. Вариант 1: использовать -keep:
optipng -keep image.png
Вариант 2: использовать -dir:
optipng -dir optimized image.png
Вариант 3: использовать -out для одного файла:
optipng -out image.optimized.png image.png
Для больших проектов лучше не полагаться только на backup-файлы. Надёжнее хранить исходники в отдельной папке или системе контроля версий. Тогда OptiPNG становится повторяемым этапом сборки: исходники не меняются, output пересоздаётся по команде.
Для команды с дизайнером и разработчиком полезно разделить ответственность. Дизайнер готовит изображение в редакторе, задаёт размер, прозрачность и визуальный вид. Разработчик или сборочная система прогоняет OptiPNG перед публикацией. Так не смешиваются творческая правка и техническая оптимизация PNG.
Как читать вывод OptiPNG
Вывод OptiPNG помогает понять, что происходит с файлом. В нём встречаются:
имя обрабатываемого файла;
параметры изображения: размеры, bits/pixel, color type;
input IDAT size;
перебор trials;
выбранные параметры;
output IDAT size;
output file size;
процент уменьшения.
На скриншоте с обработкой BMP видно, что программа импортирует BMP, показывает размер изображения, перебирает параметры zc, zm, zs, f, выбирает комбинацию и выводит итоговый размер PNG. Такой вывод полезен при обучении: он показывает, что OptiPNG не просто сохраняет заново, а реально сравнивает варианты сжатия.
Для обычной сборки длинный вывод не нужен, поэтому применяют:
optipng -quiet *.png
Для анализа одного проблемного файла включают:
optipng -v -full image.png
-v и -full дают больше информации, но создают шум в логах. В CI лучше оставлять их только для debug-задач.
Командные примеры для разных ОС
Windows Command Prompt
Переход в папку проекта:
cd C:\Projects\site\images
Оптимизация всех PNG:
optipng *.png
Оптимизация с резервными копиями:
optipng -keep *.png
Файл с пробелами:
optipng "main banner.png"
PowerShell
Переход в папку:
cd C:\Projects\site\images
Обычная обработка:
optipng *.png
Вывод в папку:
optipng -dir optimized *.png
PowerShell и CMD по-разному работают с некоторыми масками и путями, поэтому при сложных сценариях лучше сначала запускать -simulate.
Linux и macOS Terminal
Обычный запуск:
optipng image.png
Обработка текущей папки:
optipng *.png
Рекурсивный проход через find:
find ./images -name "*.png" -exec optipng -o2 {} \;Тихий режим для сборки:
find ./public -name "*.png" -exec optipng -o2 -quiet {} \;Для файлов с необычными именами и пробелами в сложных shell-сценариях лучше использовать конструкции, корректно передающие нулевой разделитель. Это уже задача оболочки, а не OptiPNG.
Сравнение рабочих профилей OptiPNG
| Профиль | Команда | Скорость | Риск для исходников | Подходит для |
|---|---|---|---|
| Учебный | optipng -h | Мгновенно | Нет | Изучение параметров |
| Проверочный | optipng -simulate file.png | Зависит от trials | Нет | Безопасная оценка |
| Базовый | optipng file.png | Нормальная | Файл меняется на месте | Разовая оптимизация |
| Безопасный | optipng -keep file.png | Нормальная | Backup сохраняется | Новые пользователи |
| Веб | optipng -o2 -strip all *.png | Нормальная | Файлы меняются | Папка готовых PNG |
| Релизный | optipng -o5 -strip all *.png | Медленнее | Файлы меняются | Финальная подготовка |
| Максимальный | optipng -o7 *.png | Очень медленно | Файлы меняются | Небольшой набор важных файлов |
| Диагностический | optipng -v -full file.png | Медленнее | Зависит от остальных параметров | Анализ IDAT |
Эти профили помогают избежать двух крайностей: запускать -o7 всегда и везде или, наоборот, использовать только базовую команду без резервных копий. Для реальной работы важнее стабильная схема, чем постоянный перебор всех параметров.
Когда OptiPNG не нужен
OptiPNG не нужен, когда исходная задача не связана с PNG-оптимизацией. Для уменьшения фотографий лучше выбрать подходящий формат и размер изображения. Для публикации адаптивных изображений на сайте важнее подготовить несколько размеров и форматов. Для массовой конвертации разных типов файлов удобнее универсальный конвертер. Для редактирования изображения нужен редактор.
OptiPNG также не нужен, когда файл уже проходит через более общий image pipeline, где PNG-оптимизация выполняется другим инструментом. Дублирование нескольких lossless-оптимизаторов подряд иногда даёт минимальный выигрыш и увеличивает время сборки. Рациональнее проверить результат на типичном наборе файлов и оставить один-два инструмента, которые дают лучший баланс скорости и размера.
Итоговый вывод
OptiPNG оправдан там, где нужен консольный оптимизатор PNG с lossless-результатом, предсказуемыми командами и возможностью автоматизации. Для одного файла достаточно optipng file.png; для безопасного первого запуска лучше добавить -simulate или -keep; для сайта часто полезна связка -o2 -strip all; для финального прохода по небольшому набору важных изображений подходит -o5 или -o7.
Программу стоит выбирать разработчикам, администраторам сайтов, авторам документации и пользователям, которые готовы работать через командную строку. Для визуальной ручной обработки удобнее GUI-инструменты вроде PNGGauntlet, ImageOptim или графических конвертеров. Для сильного уменьшения PNG с допустимыми потерями лучше смотреть pngquant. Для многопоточной lossless-обработки PNG/APNG конкурентом выступает Oxipng. Для медленного финального deflate-прохода подходит ZopfliPNG.
OptiPNG остаётся сильным инструментом именно благодаря узкой специализации. Он не пытается быть редактором, просмотрщиком или универсальным конвертером. Его задача конкретна: взять PNG или поддерживаемый внешний растровый формат, оптимизировать PNG-представление и уменьшить файл без потери информации.
Список изменений
Ветка 0.4.x: базовая оптимизация PNG и развитие reductions:
- Ранние версии 0.4.x формировали фундамент OptiPNG: работа с palette reductions, отображение разницы IDAT size, улучшение порядка trials, поддержка safe handling для ill-formed PNG через обновления libpng и error recovery для случаев с некорректными PLTE/tRNS. В 0.4.5 появился -preserve , сохраняющий file attributes, а -nx был переименован в -nz .
- Для пользователя это означало переход от простого recompression-инструмента к программе, которая учитывает структуру PNG и аккуратнее работает с атрибутами файла. Ветка 0.4.x также показывает раннюю ориентацию OptiPNG на контроль IDAT: программа не просто прогоняет файл через компрессор, а сравнивает варианты и прекращает невыгодные trials.
Ветка 0.5.x: внешние форматы и управление выводом:
- Версия 0.5 добавила pngxtern для поддержки внешних форматов BMP, GIF и PNM, реализовала RGB(A)-to-palette reductions, обновила zlib и libpng, а также изменила лицензию на verbatim spell of the zlib license. В 0.5.1 появились bit depth reduction для palette images, Unix man page, option abbreviation и переименование -no в -simulate . В 0.5.3 добавилась базовая поддержка TIFF для grayscale, RGB и RGBA uncompressed images. В 0.5.4 появились -out и -dir .
- Для практической работы эта ветка важна тем, что OptiPNG перестал быть только обработчиком готовых PNG. Он получил сценарий взять внешний растровый формат и создать optimized PNG. Параметры -out и -dir сделали программу безопаснее для workflows, где исходники и результат должны лежать отдельно.
Ветка 0.6.x: APNG, dSIG, -snip , API и улучшение совместимости:
- Ветка 0.6 развивала работу с форматами и совместимостью. Появились grayscale(alpha)-to-palette reductions, compressed BMP support, распознавание PNG digital signatures dSIG, защита integrity подписанных PNG, распознавание APNG animation files и отключение reductions для сохранения их integrity. Также добавлен -snip , который вырезает одно изображение из multi-image файла, включая animated GIF, multi-page TIFF или APNG.
- В 0.6.2 появился programming interface to the optimization engine, чтобы облегчить разработку PNG-optimizing GUI apps and plugins. Это важно для экосистемы: OptiPNG остался CLI-инструментом, но его optimization engine стал удобнее использовать в сторонних оболочках.
- В 0.6.4 добавился -nx , уточнилось поведение -nz , появилась automatic wildcard expansion on Win64 и исправление Unicode build issue on Windows. Эти изменения улучшали повседневную работу в Windows-сценариях и делали параметры reductions понятнее.
Ветка 0.7.x: metadata, aliases, безопасность и обновления библиотек:
- В версии 0.7 появился -strip ; поддерживаемый suboption — -strip all . Также добавлены -clobber , -backup как alias of -keep , -silent как alias of -quiet , а -log получил статус deprecated. Activity display output был перенесён с STDOUT на STDERR.
- Для пользователя это одна из самых важных веток. -strip all дал простой способ удалить PNG metadata, -backup сделал поведение резервного копирования понятнее, -clobber добавил явную перезапись output, а -silent оказался удобным alias для скриптов.
- Версия 0.7.2 зафиксировала ограничение: output IDAT не должен выходить за 2 GB, а manual получил соответствующее предупреждение. В 0.7.3 исправлена use-after-free vulnerability в palette reduction code. В 0.7.6 устранены security-sensitive defects в BMP decoder, а также ряд build failures. В 0.7.7 исправлены buffer overflow vulnerability в GIF decoder и integer overflow vulnerability в TIFF decoder; также обновлены libpng, zlib и minitiff. В 0.7.8 исправлена global-buffer-overflow vulnerability в GIF reader, обновлены libpng, zlib и cexcept, подняты минимальные версии libpng и zlib, исправлена wildcard expansion в Windows port.
- Эта часть истории важна для безопасности. Старые сборки OptiPNG с поддержкой внешних форматов не стоит использовать для неизвестных GIF, TIFF или BMP из непроверенных источников. Обновления исправляли реальные ошибки обработки входных файлов, а не только косметику.
Переход к ветке 7.x:
- В версии 7.9.1 обновлена libpng до 1.6.48, исправлен corner case в RGB-to-palette reduction code с dangling tRNS chunk, включена возможность SIMD-optimized build of libpng на selected target platforms, добавлен CMake file, deprecated configure build script, удалена поддержка 16-bit platforms, удалён -log , а user manual переписан в AsciiDoc format.
- Изменение нумерации от 0.7.x к 7.x не превращает OptiPNG в новую программу с графическим интерфейсом. Это продолжение той же линии: CLI, PNG optimization, lossless-подход, работа с внешними форматами и аккуратное развитие низкоуровневой обработки.

Оставте свой отзыв о OptiPNG