Oxipng — открытый многопоточный оптимизатор PNG и APNG, написанный на Rust. Его основная задача — уменьшать размер файлов за счёт более подходящего представления пиксельных данных, выбора фильтров PNG и повторного сжатия потока DEFLATE, не меняя видимое содержимое при стандартном режиме работы. Это не фоторедактор, не конвертер изображений общего назначения и не облачный сервис: основной продукт запускается из командной строки, принимает PNG-файлы или поток данных и сохраняет оптимизированный PNG. Такой формат работы особенно уместен в сборочных сценариях, репозиториях, пакетной подготовке графики для сайтов и локальной обработке больших наборов изображений.
Скачать Oxipng бесплатно
Рекомендуемый аналог
ФотоМАСТЕР
Фоторедактор для Windows и macOS с русским интерфейсом
- Ретушь портретов и точная коррекция фото
- Удаление объектов, замена фона и неба
- Пакетная обработка и популярные форматы
- Понятный русскоязычный интерфейс
Oxipng
Программа для работы с изображениями и графикой на русском языке
- Меньше инструментов для точной локальной коррекции
- Часть расширенных функций доступна только платно
- Набор инструментов зависит от версии и платформы
- Может не подойти для сложного профессионального монтажа
Что такое Oxipng и кто его разрабатывает
Пакет называется Oxipng, а исполняемый файл — oxipng. В метаданных Rust-пакета автором указан Joshua Holmer; исходный код и текущая разработка ведутся как открытый проект в организации oxipng на GitHub. Проект распространяется по лицензии MIT. Она разрешает использование, изменение и распространение программы при сохранении текста лицензии и уведомления об авторских правах.
Oxipng начался в 2015 году как переписывание OptiPNG. Целью было получить современную архитектуру на Rust и сделать многопоточную обработку, которую было сложно добавить в существующую кодовую базу OptiPNG на C. За последующие версии Oxipng заметно разошёлся с исходным проектом: часть параметров похожа, но архитектура и набор возможностей отличаются. Сам проект прямо предупреждает, что Oxipng не является полной заменой OptiPNG с идентичными ключами командной строки.
Актуальная стабильная версия на дату подготовки обзора — 10.1.1, опубликованная 22 апреля 2026 года. В ней ускорена стратегия Bigrams на низких уровнях оптимизации, уточнено поведение запрета изменений палитры, улучшено повторное сжатие ICC-профилей и уменьшен размер готовых бинарных файлов. В метаданных пакета статус обслуживания указан как actively-developed, поэтому Oxipng нельзя относить к заброшенным или снятым с поддержки утилитам.
Краткие параметры
| Параметр | Oxipng |
|---|---|
| Тип | Консольный оптимизатор PNG/APNG и библиотека Rust |
| Разработчик | Joshua Holmer и участники open-source проекта oxipng |
| Актуальная версия | 10.1.1 |
| Основной формат | PNG; ограниченная оптимизация APNG |
| Интерфейс | Командная строка; графического интерфейса в основном продукте нет |
| Платформы | Windows, macOS и Linux; официальный Docker-образ для linux/amd64 и linux/arm64 |
| Обработка | Локальная, многопоточная |
| Пакетная работа | Несколько файлов, маски, рекурсивный обход каталогов |
| Вывод | Перезапись исходника, отдельный файл, каталог или stdout |
| Лицензия | MIT |
| Стоимость | Бесплатно; платных редакций и пробного режима у проекта нет |
| Регистрация | Не требуется |
| Интернет | Нужен для получения пакета или обновления; сама оптимизация выполняется локально |
Чем Oxipng не является
Название легко поставить в один ряд с графическими компрессорами, но назначение Oxipng уже. Программа не открывает окно предварительного просмотра, не меняет размеры кадра, не кадрирует изображение, не регулирует резкость и цвет, не переводит JPEG или WebP в PNG и не создаёт новые изображения. Она работает с уже существующим PNG-потоком и пытается представить те же данные компактнее.
Oxipng также не следует смешивать с внешними оболочками, которые используют его движок. В документации проекта перечислены ImageOptim, Squoosh, Curtail, FileOptimizer, pyoxipng и jSquash как отдельные программы или обёртки. Их интерфейс, правила установки, дополнительные форматы и политика обработки определяются самими оболочками. Обзор относится к официальному Oxipng как к исполняемой CLI-утилите и библиотеке Rust.
От pngquant продукт отличается принципиально: pngquant специально выполняет lossy-сжатие за счёт сокращения палитры до более компактного 8-битного PNG, тогда как базовая задача Oxipng — оптимизировать PNG без изменения видимого результата и без обязательной потери цветовой информации. При этом у Oxipng есть отдельные параметры, которые уже не являются строго без потерь; их необходимо включать осознанно.
Платформы, установка и способы распространения
Windows
Для Windows проект публикует готовые сборки в разделе Releases. Это самый прямой способ получить утилиту без самостоятельной компиляции. После распаковки исполняемый файл можно запускать из PowerShell, Windows Terminal или другой командной оболочки. Для готового бинарника устанавливать Rust не требуется: Rust и Cargo нужны только при сборке из исходного кода либо при установке через менеджер пакетов Cargo.
macOS и Linux
Для macOS и Linux документация рекомендует использовать пакет своего дистрибутива или другой системный пакетный менеджер, если там доступна достаточно свежая версия. Альтернативный универсальный путь — установка командой Cargo. Oxipng не привязан к отдельной графической среде рабочего стола, поэтому его можно запускать в обычном терминале, в CI-среде и на сервере без оконного интерфейса.
Docker и библиотека
Официальный контейнер публикуется для linux/amd64 и linux/arm64. Такой вариант удобен, когда в рабочем окружении не хотят устанавливать бинарник в систему или нужно зафиксировать одинаковое окружение в сборочном процессе. Для разработчиков Rust доступна библиотека oxipng: она предоставляет программный API, через который оптимизацию можно встроить непосредственно в другое приложение.
Это три формы распространения одного движка, а не платные редакции. Функциональное деление Free, Pro или Enterprise отсутствует. Лицензия MIT не вводит ограничений по числу изображений, разрешению, сроку использования или коммерческому применению самого Oxipng.
Системные требования и ресурсы
Проект не задаёт в пользовательской документации конкретный минимальный объём оперативной памяти, модель процессора или обязательную версию Windows. Реальная нагрузка зависит от размеров изображения, выбранного уровня оптимизации, числа одновременно обрабатываемых файлов и количества потоков. По умолчанию Oxipng использует число логических процессоров как максимальное количество потоков и может параллельно оценивать несколько вариантов оптимизации одного файла, а также обрабатывать несколько файлов одновременно.
Для ограничения потребления ресурсов предусмотрен параметр числа потоков. Есть и отдельный последовательный режим: он обрабатывает несколько файлов по одному и обеспечивает предсказуемый порядок. Это важно в автоматизированных задачах, где параллельная обработка создаёт лишний пик памяти или усложняет сопоставление сообщений журнала с очередностью входных файлов.
Ещё один защитный механизм — ограничение максимального размера распакованных данных. PNG на диске может быть небольшим, но после декодирования занимать значительно больше памяти. Oxipng умеет пропускать изображения, у которых размер исходного файла или расчётный размер распакованных пикселей превышает заданный предел. В справке приводится ориентир: несжатый объём примерно равен произведению ширины, высоты и глубины цвета, делённому на восемь; например, 1920 × 1080 при 24 битах на пиксель — около 6 МБ сырых данных.
Как устроен интерфейс
У Oxipng нет окон, панелей и диалогов. Его интерфейс состоит из команды oxipng, списка параметров и одного или нескольких путей к изображениям. Поэтому вместо привычных рабочих зон фоторедактора здесь есть четыре логические части: вход, параметры оптимизации, правила вывода и текстовый отчёт.
Входные данные
После команды перечисляются файлы, которые нужно обработать. В качестве входа допускается несколько файлов; для каталогов доступен рекурсивный режим, который ищет файлы с расширениями .png и .apng. Специальное значение дефиса позволяет читать PNG из stdin, что делает утилиту пригодной для конвейеров командной строки.
Параметры оптимизации
Основная настройка — уровень от 0 до 6 или max. Низкие уровни выполняют меньше проб и завершаются быстрее, высокие перебирают больше стратегий фильтрации и используют более тяжёлые варианты оценки. Уровень 2 выбран по умолчанию как баланс скорости и сжатия. Отдельные флаги позволяют переопределить фильтры, степень DEFLATE-сжатия, Zopfli, работу с альфа-каналом, метаданными, глубиной цвета и интерлейсингом.
Вывод
Без отдельного пути рабочий сценарий рассчитан на оптимизацию самих входных файлов. Чтобы сохранить результат отдельно, предусмотрены вывод в конкретный файл, вывод всех результатов в заданный каталог и отправка бинарного PNG в stdout. Режим dry-run вообще не записывает файлы: он выполняет расчёты и показывает результат, что полезно для оценки выигрыша до изменения исходников.
Текстовый отчёт
Версия 10.1.x по умолчанию показывает счётчик файлов и итоговую сводку. Параметр verbose добавляет сведения по отдельным файлам и при повторении увеличивает детализацию. Quiet подавляет сообщения. Для автоматизации есть JSON-вывод: результаты можно получить в машиночитаемом виде и обработать другим скриптом, не разбирая обычный текст консоли.
Как Oxipng уменьшает PNG
PNG хранит строки пикселей с фильтрацией, после чего данные сжимаются алгоритмом DEFLATE. Один и тот же визуальный кадр можно закодировать разными способами: выбрать другой тип цвета, меньшую глубину, более удачную палитру, другой фильтр для строк и более эффективные параметры DEFLATE. Oxipng проверяет набор допустимых преобразований и сохраняет более компактный вариант.
В стандартном режиме программа пытается уменьшать глубину цвета, тип цвета, палитру и переходить между цветным и градациями серого только тогда, когда преобразование можно выполнить без потери информации. Например, если изображение фактически использует меньше возможностей формата, чем заявлено в исходном PNG, более компактное представление может дать выигрыш ещё до повторного DEFLATE-сжатия.
После преобразований Oxipng пробует фильтры строк. В справке перечислены стандартные PNG-фильтры None, Sub, Up, Average и Paeth, а также эвристические стратегии MinSum, Entropy, Bigrams, BigEnt и Brute. Последняя оценивает фактический размер после сжатия и относится к самым медленным. Набор проб зависит от выбранного уровня оптимизации.
Для основного DEFLATE Oxipng использует libdeflate и допускает уровни сжатия от 0 до 12. Пользователю обычно не требуется назначать их вручную: пресеты -o уже связывают подходящий уровень с набором фильтров. Ручная настройка имеет смысл в автоматизированном процессе, где важна строго зафиксированная конфигурация, а не только номер пресета.
Уровни оптимизации: что меняется от 0 до max
Пресеты не являются шкалой качества изображения: они определяют, сколько вычислений Oxipng готов потратить на поиск более компактного кодирования. Изображение при обычной оптимизации не должно становиться визуально хуже только потому, что выбран более высокий уровень. Разница — в количестве проб, времени и потенциальном размере результата.
- 0–1. Быстрые режимы с эвристическим выбором фильтра; подходят для очень больших серий и частых автоматических запусков, где важна пропускная способность.
- 2. Значение по умолчанию. Оно использует несколько фильтров и быстрый этап оценки, чтобы получить разумное сжатие без дорогого перебора.
- 3–4. Добавляют более тяжёлую стратегию Brute в ограниченной конфигурации и повышают глубину DEFLATE-сжатия.
- 5–6. Перебирают более широкий набор фильтров и увеличивают объём работы Brute. Это режимы для случаев, когда несколько дополнительных процентов экономии важнее времени обработки.
- max. Стабильный псевдоним максимального уровня. Он удобен в сценариях, где команда должна сохранять смысл при возможном появлении новых уровней в будущих версиях.
Проект отдельно предупреждает, что Oxipng не выполняет полный перебор всех возможных кодировок. Поэтому более высокий пресет почти всегда даёт такой же или меньший файл, но математической гарантии нет: на редком изображении более низкий уровень способен оказаться на несколько байтов эффективнее. Та же оговорка относится к Zopfli — включение более тяжёлого компрессора не гарантирует уменьшение каждого конкретного PNG.
Режим fast и ручной выбор фильтров
Параметр fast выполняет быструю оценку каждого разрешённого фильтра, выбирает лучший кандидат и только затем делает один основной проход сжатия. Такой подход особенно полезен, когда включено больше фильтров, чем доступно процессорных ядер: вместо полного дорогого сжатия каждого варианта программа сначала отбрасывает менее перспективные.
Для тонкой настройки фильтры можно задавать списком или диапазоном. Это требуется не всем, но делает Oxipng удобным для воспроизводимых сборок и экспериментов: разработчик может закрепить один и тот же набор стратегий для всех файлов и сравнивать результат после обновления версии. Если фильтр указан вручную, связанная настройка из пресета переопределяется.
В обычной подготовке графики разумнее начинать с -o 2 или -o 4 и переходить к ручным фильтрам только при измеримой необходимости. Большой набор параметров не означает, что каждый из них нужно менять: пресеты как раз существуют для получения согласованной конфигурации без постоянной настройки внутренних механизмов PNG.
Zopfli: более тяжёлое сжатие
Oxipng умеет использовать Zopfli для основного DEFLATE-прохода. Это значительно более медленный компрессор, ориентированный на уменьшение итогового потока. В справке рекомендуется сочетать его с максимальным уровнем и fast, чтобы не тратить Zopfli-время на каждый заведомо слабый вариант фильтра.
Количество итераций Zopfli настраивается отдельно. Значение по умолчанию — 15. Можно также задать число итераций без улучшения, после которого поиск прекращается. Это позволяет установить большой общий предел, но завершать работу раньше, когда дополнительные проходы перестают уменьшать файл.
Для регулярной обработки тысяч изображений Zopfli не должен включаться автоматически только из-за его репутации «сильного» компрессора. Сам Oxipng предупреждает, что результат Zopfli не обязан быть меньше результата обычного движка на каждом файле, а стоимость по времени заметно выше. Практический выбор делается по измеренному размеру и времени на типичном наборе проекта.
Альфа-канал и прозрачные пиксели
Флаг alpha меняет RGB-значения полностью прозрачных пикселей, чтобы улучшить сжатие. На отображаемом кадре такие пиксели невидимы, поэтому операция описывается как визуально без потерь. Технически она всё же изменяет данные изображения и потому не относится к строгому lossless-режиму.
Это различие важно для производственных файлов. Скрытый цвет прозрачных пикселей иногда используется последующим инструментом после снятия прозрачности, изменения альфа-канала или композитинга. Если исходный PNG служит промежуточным мастер-файлом, а не конечным веб-ресурсом, включать alpha без понимания дальнейшей цепочки обработки не следует.
В официальном примере для веба alpha используется вместе с -o 4 и безопасным удалением метаданных. Такой набор уместен для конечных ресурсов сайта, где скрытые RGB-значения полностью прозрачных пикселей не имеют самостоятельного значения. Для архивного исходника или графики, которая продолжит редактироваться, консервативнее оставить этот флаг выключенным.
Глубина цвета, палитра и тип цвета
Oxipng по умолчанию разрешает без потерь уменьшать глубину цвета, менять тип цвета, сокращать палитру и переходить между цветным представлением и градациями серого. Каждую группу преобразований можно отдельно запретить. Для этого предназначены флаги, запрещающие изменение bit depth, color type, palette и переход к или от grayscale.
Такие запреты полезны, когда файл должен сохранять не только визуальный результат, но и конкретные структурные свойства. Например, тестовый набор для графической библиотеки может ожидать определённый тип цвета или глубину. В обычном веб-сценарии эти свойства редко важнее размера, но в техническом, издательском и научном процессе они могут быть частью контракта.
Отдельный параметр scale16 принудительно переводит 16 бит на канал в 8 бит. Это уже lossy-операция: диапазон значений уменьшается. Без этого флага 16-битное изображение снижается по глубине только тогда, когда переход возможен без потери информации. Поэтому scale16 нельзя включать в универсальный профиль «безопасной оптимизации».
Интерлейсинг Adam7
Параметр interlace принимает значения off, on и keep. Текущий стандартный режим Oxipng — off: при обработке интерлейсинг снимается. Можно принудительно включить Adam7 для всех входных изображений или сохранить исходное состояние каждого файла.
В справке отмечено, что интерлейсинг способен увеличить размер уже оптимизированного изображения на 25–50%. Поэтому включать его только ради привычки невыгодно. Если конкретный процесс требует сохранения точной структуры PNG или прогрессивного отображения Adam7, нужно явно использовать режим keep либо on; иначе текущий стандартный профиль будет стремиться убрать интерлейсинг.
Метаданные и связанные с ними риски
Oxipng даёт более тонкое управление метаданными, чем простое «оставить или удалить всё». Без параметра strip программа сохраняет необязательные chunks, которые остаются валидными после оптимизации. Однако некоторые блоки всё равно удаляются, если преобразование делает их некорректными. В частности, bKGD, sBIT и hIST отбрасываются при изменении типа цвета или глубины, iDOT удаляется всегда.
Режим strip safe удаляет необязательные блоки, которые не нужны для отображения, но сохраняет данные, влияющие на визуальный результат и отдельные важные служебные chunks. В текущей справке в исключениях перечислены cICP, iCCP, sRGB, pHYs и APNG-блоки acTL, fcTL, fdAT. Это подходящий вариант для конечной веб-графики, когда требуется удалить лишние сведения без изменения рендеринга.
Режим strip all удаляет все некритические chunks. Для обычного статического PNG это может уменьшить файл сильнее, но цена — потеря цветовых профилей, физического размера, текстовых полей и других необязательных данных. Для APNG есть особенно жёсткое ограничение: strip all удаляет анимационные chunks и превращает APNG в обычный статический PNG. Поэтому этот режим нельзя считать безусловно безопасной очисткой.
Есть обратный вариант keep: он удаляет всё, кроме перечисленного пользователем. Специальное значение display сохраняет chunks, влияющие на отображение, и эквивалентно безопасному режиму strip. Комбинация keep с явным списком полезна, когда нужно сохранить, например, конкретный EXIF-блок вместе с данными отображения, но удалить прочие дополнительные сведения.
C2PA и Content Credentials
Начиная с ветки 9.1 Oxipng специально обрабатывает C2PA-метаданные. Chunk caBX, содержащий C2PA, удаляется. Если попытаться явно сохранить такой блок через keep, оптимизация прерывается. Для файлов с Content Credentials это критически важное ограничение: оптимизированную копию нельзя считать сохранением исходной C2PA-цепочки.
Следствие простое: Oxipng подходит для технической минимизации конечных PNG, но не должен незаметно включаться в архивный процесс, где аутентификационные метаданные являются частью ценности файла. Перед массовой обработкой стоит заранее определить, какие chunks обязательны для проекта, и проверить их сохранность на тестовом наборе.
Поддержка APNG
APNG поддерживается, но не в том же объёме, что статический PNG. Oxipng может выполнять альфа-оптимизацию, повторную фильтрацию и повторное сжатие всех кадров. При этом преобразования типа сокращения глубины или изменения цветового представления для APNG отключены.
Сам проект характеризует поддержку APNG как ограниченную. Это значит, что рассчитывать на максимальные сокращения, доступные для статических PNG, не следует. Для специализированной оптимизации анимации разработчики рекомендуют сначала использовать отдельный APNG-оптимизатор, а затем уже Oxipng для тех операций, которые он выполняет.
При работе с анимацией особенно опасен strip all, потому что он удаляет chunks APNG и оставляет статический PNG. Для профиля, который должен сохранять анимацию, безопаснее использовать strip safe либо вообще не удалять метаданные без необходимости.
Пакетная обработка и каталоги
Oxipng принимает несколько файлов за один запуск и обрабатывает их параллельно. Для каталогов предусмотрен recursive: он проходит по дереву и выбирает файлы .png и .apng. Это делает утилиту пригодной для папок с ресурсами сайта, набора экспортированных интерфейсных элементов и репозитория со статической графикой.
При выводе в отдельный каталог есть важное ограничение: сочетание dir и recursive не сохраняет исходную структуру подкаталогов. Все результаты направляются в заданный каталог без воспроизведения дерева. Если одинаковые имена встречаются в разных ветках проекта, такой режим требует предварительной организации входных данных; для сохранения существующей структуры проще оптимизировать файлы на месте или писать собственную обвязку.
Параллельная обработка ускоряет большие наборы, но повышает одновременное потребление памяти. Параметр threads снижает максимальное количество потоков, а sequential полностью переводит набор файлов в последовательный режим. Последовательность полезна и тогда, когда журнал должен идти строго в том же порядке, в котором перечислены входные файлы.
Вход и экспорт: какие форматы реально поддерживаются
Oxipng не является универсальным импортёром. Его вход — PNG или APNG. Рекурсивный режим специально отбирает только расширения .png и .apng. Файл можно передать по пути или прочитать из stdin. JPEG, TIFF, BMP, GIF, WebP, AVIF и RAW не входят в заявленный рабочий формат этой утилиты.
На выходе остаётся PNG-поток; Oxipng не выполняет смену формата. Для APNG результат также остаётся анимированным PNG, пока пользователь не применяет действия, удаляющие анимационные chunks. Вывод может идти в исходный файл, в отдельный файл, в заданный каталог или в stdout.
Такое ограничение — одновременно плюс и минус. Инструмент не пытается решать несвязанные задачи и поэтому хорошо встраивается в цепочку, где формат уже выбран. Но если нужен выбор между PNG, WebP, AVIF и JPEG на основе содержимого, потребуется другой конвертер или оптимизатор более общего назначения.
Типичный рабочий процесс
Для Oxipng характерен короткий цикл: выбрать набор PNG, оценить сжатие без записи, затем запустить оптимизацию и проверить выход. Ниже приведён воспроизводимый сценарий для статической веб-графики, который не требует графического интерфейса.
- Скопировать тестовый PNG в рабочую папку или работать в системе контроля версий, чтобы исходник можно было восстановить.
- Выполнить оценку без записи: oxipng –dry-run -o 4 image.png. Утилита посчитает варианты, но не изменит файл.
- Если размер устраивает, для строгого сохранения пиксельных данных запустить oxipng -o 4 –strip safe image.png. Флаг alpha в такой профиль не включается, потому что он технически меняет скрытые RGB-значения полностью прозрачных пикселей.
- Для группы конечных веб-ресурсов использовать маску файлов либо перечислить несколько PNG в одной команде. На Windows поддерживаются шаблоны путей; на Unix маски обычно раскрывает оболочка.
- После обработки сравнить размер файла, открыть его в целевом браузере или приложении и убедиться, что цвет, прозрачность и требуемые метаданные сохранены.
Для проекта, где метаданные вообще не нужны, можно отдельно протестировать strip all на статических PNG. Такой профиль нельзя автоматически переносить на APNG или файлы с ICC, EXIF, C2PA и другими значимыми chunks. Сначала проверяется смысл метаданных, затем принимается решение об их удалении.
Сценарий для очень большого набора
При тысячах файлов важнее ограничить ресурсы, чем максимизировать каждый байт. Можно оставить -o 2, ограничить threads и задать max-raw-size, чтобы единичное изображение с огромным распакованным объёмом не создало неожиданный пик памяти. Если порядок сообщений важен, добавляется sequential.
Сценарий для релизной сборки
Oxipng можно подключить к pre-commit: официальный репозиторий содержит готовый hook и пример конфигурации. В таком режиме оптимизация становится частью проверки перед коммитом. Для CI также доступен официальный Docker-образ, что позволяет запускать одну и ту же конфигурацию без ручной установки бинарника на агенте.
Проверка результата
Первый уровень контроля — dry-run. Он показывает потенциальный результат без записи и позволяет понять, есть ли смысл тратить время на высокий пресет. Второй уровень — обычная сводка или verbose, где видны данные по обработанным файлам. Для автоматической проверки размер исходника и оптимизированного файла можно получать через JSON-вывод и сравнивать скриптом.
Визуальная проверка нужна после любых параметров, которые меняют данные вне строгого lossless-профиля. К ним относятся alpha и scale16, а также агрессивное удаление chunks, способное повлиять на цветовой менеджмент или анимацию. Для веб-проекта изображение следует открыть именно в целевых браузерах; для издательского процесса — в приложении, которое реально будет читать профиль и физическое разрешение.
При требовании строгой идентичности пикселей недостаточно сравнить размеры или открыть картинку глазами. Нужно декодировать исходный и итоговый PNG внешним проверочным инструментом и сравнить массив пикселей. Oxipng занимается оптимизацией, а не формальным доказательством равенства декодированных изображений. Для профиля с alpha такое сравнение покажет различия в полностью прозрачных пикселях, хотя визуально кадр останется прежним.
Метаданные проверяются отдельно от пикселей. Если проекту нужны ICC, EXIF, pHYs, C2PA или другие chunks, их наличие нужно контролировать после выбранной комбинации strip, keep и преобразований. Размер файла сам по себе не показывает, какие вспомогательные данные были удалены.
Ограничение времени и больших файлов
Параметр timeout задаёт максимальное время, которое Oxipng должен тратить на оптимизационные пробы. Однако проверка выполняется перед отдельными преобразованиями или проходами сжатия, а уже начатая тяжёлая операция не прерывается мгновенно. Поэтому справка прямо отмечает ограниченную эффективность timeout для крупных файлов при высоких уровнях сжатия.
Для более жёсткой защиты ресурсов полезнее сочетать несколько механизмов: умеренный -o, ограниченное число потоков, sequential для больших партий и max-raw-size для пропуска слишком объёмных изображений. Zopfli стоит оставлять для отдельного профиля, а не включать в каждую локальную правку.
Работа с повреждёнными PNG
В обычном режиме Oxipng проверяет контрольные суммы PNG-chunks и останавливается на ошибках. Флаг fix отключает такую проверку при чтении и позволяет обработать часть файлов с повреждениями. Выходные chunks записываются с корректными контрольными суммами.
Этот режим не следует воспринимать как универсальное восстановление изображений. Он лишь ослабляет конкретную проверку и может помочь там, где пиксельные данные всё ещё декодируются. Для важного исходника безопаснее сохранить отдельную копию, применить fix к копии и затем проверить весь кадр и метаданные. Если изображение имеет более серьёзное повреждение структуры, нужен специализированный инструмент диагностики PNG.
Приватность, регистрация и зависимость от интернета
Основной Oxipng — локальный исполняемый файл. Входные изображения читаются с диска или stdin и передаются локальному движку; для оптимизации не требуется аккаунт, загрузка в облако или подписка. Это снимает типичный риск браузерных сервисов, когда пользователь должен передавать исходники стороннему серверу.
Интернет требуется на этапе скачивания бинарника, получения пакета, Docker-образа или обновления зависимостей при сборке. После установки обычная команда оптимизации не зависит от сетевого соединения. Для изолированных сред можно заранее принести готовый бинарник или контейнер и выполнять обработку без внешнего сервиса.
Локальность не отменяет риска удаления метаданных. Приватность и сохранность происхождения файла — разные задачи: strip может убрать личные или технические данные, но вместе с ними способен удалить и сведения, которые проект хотел сохранить. Особенно внимательно нужно относиться к C2PA и ICC.
Облачные, мобильные и ИИ-функции
В Oxipng нет собственной облачной панели, мобильного приложения и ИИ-моделей. Алгоритм оптимизирует структуру PNG, фильтры и DEFLATE-сжатие; он не анализирует сюжет изображения, не восстанавливает детали и не генерирует пиксели. Наличие Oxipng внутри сторонних веб-приложений не превращает официальный проект в облачный сервис — это отдельная форма интеграции движка.
По той же причине утилите не нужен GPU или нейронный ускоритель. Основной ресурс — CPU и оперативная память. Многопоточность предназначена для параллельной оценки вариантов сжатия и нескольких файлов, а не для инференса модели.
Стоимость и лицензирование
Oxipng распространяется бесплатно по лицензии MIT. У официального проекта нет платной редакции, лимита на число файлов, обязательной регистрации, пробного периода или подписки. Платить за активацию функций оптимизации не требуется.
MIT разрешает коммерческое использование и включение кода в другие продукты при соблюдении условий лицензии. Для конечного пользователя это означает, что Oxipng можно применять и в личном фотопроекте, и в коммерческой сборке сайта. Стоимость может возникать только вокруг инфраструктуры — например, у облачного CI или стороннего приложения, которое использует движок, — но это не тариф Oxipng.
Плюсы и минусы
Плюсы ✔️
- Локальная обработка PNG без регистрации и передачи файлов в облачный сервис.
- Многопоточность используется и для оценки вариантов одного изображения, и для обработки нескольких файлов.
- Есть уровни 0–6 и max, а также ручной контроль фильтров и DEFLATE для воспроизводимых профилей.
- Поддерживаются dry-run, вывод в отдельный файл или каталог, stdout, quiet, verbose и JSON-отчёт.
- Можно отдельно управлять удалением метаданных и сохранять только нужные chunks.
- Есть рекурсивная обработка каталогов, pre-commit hook, Docker-образ и библиотека Rust.
- Платных ограничений нет; код открыт под лицензией MIT.
- Актуальная ветка 10.1.x продолжает получать исправления и оптимизации.
Минусы ❌
- Графического интерфейса нет, поэтому пользователю нужно работать с терминалом и понимать ключи командной строки.
- Поддерживается только PNG/APNG; конвертации JPEG, WebP, AVIF, TIFF и RAW нет.
- APNG оптимизируется ограниченно, а strip all превращает анимацию в статический PNG.
- Высокие уровни и Zopfli могут резко увеличить время обработки, при этом меньший файл не гарантирован для каждого изображения.
- Рекурсивный вывод через dir не сохраняет исходную структуру подкаталогов.
- Параметр alpha технически меняет данные полностью прозрачных пикселей, а scale16 выполняет потерю 16-битной точности.
- Оптимизация может удалять или инвалидировать метаданные; C2PA-блоки требуют особого внимания.
- Нет встроенного визуального сравнения до и после, поэтому проверка цвета, прозрачности и метаданных выполняется внешними средствами.
Кому подойдёт
- Веб-разработчикам. Oxipng удобно включать в подготовку PNG-ресурсов, pre-commit и CI, особенно когда важно сохранить формат PNG и сократить передачу данных без облачной загрузки.
- DevOps и разработчикам сборочных систем. CLI, JSON, stdout, Docker и фиксируемые параметры подходят для автоматических конвейеров.
- Фотографам с техническим уклоном. Утилита полезна для финальных PNG-экспортов, когда обработка изображения уже завершена и требуется уменьшить файл без смены формата.
- Проектам с требованиями к приватности. Файлы остаются локальными; аккаунт и удалённый сервер не нужны.
- Пользователям больших библиотек PNG. Параллельная обработка, рекурсивный режим и управление потоками позволяют выстроить пакетный процесс.
Кому не подойдёт
- Тем, кому нужен визуальный интерфейс. Для перетаскивания файлов, превью и сравнения «до/после» лучше выбрать GUI-оболочку.
- Тем, кто хочет конвертировать форматы. Oxipng не заменяет универсальный конвертер и не создаёт WebP или AVIF.
- Пользователям, которым требуется максимальное уменьшение любой ценой. Строго lossless-подход ограничивает потенциальную экономию; lossy-квантизация может дать существенно меньший файл.
- Рабочим процессам с обязательной C2PA-цепочкой. Поведение caBX нужно учитывать отдельно, поэтому для мастер-файлов с Content Credentials автоматическая оптимизация рискованна.
- Редактированию фотографий. В программе нет экспозиции, локальной коррекции, ретуши, ресайза, повышения резкости и других инструментов фотопроцесса.
Альтернативы Oxipng
OptiPNG
OptiPNG — классический консольный PNG-оптимизатор, из которого исторически вырос Oxipng. Он также переупаковывает PNG без потери изображения и умеет проверять структуру файла. Выбирать OptiPNG разумно, когда уже существует проверенный скрипт с его параметрами или важна совместимость со старым процессом. Oxipng предпочтительнее там, где нужны современная многопоточность, параллельная работа с несколькими файлами, JSON и актуально развиваемый Rust-проект.
pngquant
pngquant решает другую задачу: это lossy-компрессор PNG, который переводит изображение в более компактный 8-битный вариант с палитрой и поддержкой прозрачности. Он способен уменьшать файлы значительно сильнее, но ценой изменения цветовых данных. Для иконок, иллюстраций и веб-графики с допустимой потерей оттенков pngquant часто логичнее; для строгого сохранения декодированных пикселей базовый профиль Oxipng безопаснее.
ImageOptim
ImageOptim — графическая программа для macOS, объединяющая несколько движков оптимизации, включая OxiPNG, Zopfli, PNGOUT, PNGCrush, pngquant и инструменты для JPEG, GIF и SVG. Она удобнее пользователю, который хочет перетаскивать файлы в окно и не настраивать командную строку. Oxipng лучше подходит для кроссплатформенного терминала, сервера и автоматической сборки, а ImageOptim — для ручной работы на Mac.
ZopfliPNG
ZopfliPNG использует Zopfli для очень тщательного DEFLATE-сжатия PNG и перебирает стратегии фильтрации. Его сильная сторона — ориентация на минимизацию потока при высокой вычислительной цене. Однако официальный репозиторий Google был архивирован в октябре 2025 года и теперь доступен только для чтения. Для нового автоматизированного процесса Oxipng практичнее как активно поддерживаемый проект; ZopfliPNG остаётся вариантом для существующих цепочек и специфических сравнений.
Частые проблемы и диагностика
Команда oxipng не найдена
Проблема относится не к PNG, а к установке. Нужно убедиться, что исполняемый файл действительно установлен и каталог с ним входит в PATH текущей оболочки. После установки через Cargo команда появляется в каталоге бинарников Cargo; после ручной распаковки Windows-бинарника путь к нему либо указывается полностью, либо добавляется в PATH.
Файл не уменьшается
Oxipng не обязан делать каждый PNG меньше. Исходник может быть уже хорошо оптимизирован, выбранный пресет может не найти более выгодного представления, а высокий уровень иногда даёт результат на несколько байтов хуже более низкого. По умолчанию программа не должна записывать вариант без улучшения; force существует специально для принудительной записи даже тогда, когда выход больше.
Диагностика начинается с dry-run и нескольких пресетов на копии файла. Если -o 2 и -o 4 дают одинаковый результат, дальнейший рост уровня может не окупать время. Zopfli также следует оценивать измерением, а не включать автоматически.
Обработка стала слишком медленной
Чаще всего причина — высокий пресет, широкий набор фильтров или Zopfli. Для ускорения нужно вернуться к -o 2, использовать fast, сократить фильтры или отказаться от Zopfli. При большой партии следует проверить число потоков и объём памяти: максимальная параллельность не всегда даёт лучшую общую производительность на ограниченной машине.
Резко выросло потребление памяти
PNG с высоким разрешением может распаковываться в большой массив пикселей, а параллельная обработка умножает нагрузку. Ограничить её можно threads, sequential и max-raw-size. Особенно это важно на CI-агентах и небольших виртуальных машинах, где превышение памяти приводит к завершению процесса.
Пропали EXIF, ICC или другие данные
Нужно проверить использованные strip и keep, а также преобразования типа цвета и глубины. Некоторые chunks становятся невалидными после структурного изменения и удаляются независимо от настроек. Для цветокритичного процесса стоит сначала протестировать файл без strip, затем отдельно проверить ICC и только после этого выбирать политику очистки.
APNG перестал анимироваться
Первое, что нужно проверить, — не использовался ли strip all. Он удаляет анимационные chunks и переводит файл в статический PNG. Для APNG следует оставлять safe или вовсе не удалять chunks без ясной причины.
После alpha изменились данные, хотя картинка выглядит так же
Это ожидаемое свойство флага alpha. Он меняет цветовые значения пикселей с нулевой прозрачностью. Если downstream-процесс позже делает эти пиксели видимыми, отличия проявятся. Для строгого сравнения пикселей alpha нужно отключить.
16-битный файл стал 8-битным
Нужно проверить scale16. Этот параметр специально выполняет принудительное уменьшение глубины и является lossy. Без него Oxipng снижает 16-битную глубину только при возможности сделать это без потери данных.
Изменился интерлейсинг
Текущий режим по умолчанию — выключение интерлейсинга. Для сохранения исходного состояния используется interlace keep. Если структура файла важна для теста или конкретного рендера, этот параметр следует задавать явно.
Результаты из рекурсивных папок оказались в одном каталоге
Так работает комбинация recursive и dir: исходная иерархия каталогов не воспроизводится. Для дерева ресурсов безопаснее оптимизировать на месте, запускать Oxipng отдельно для каждой ветки или использовать обвязку, которая сама создаёт соответствующие каталоги назначения.
Повреждённый PNG не обрабатывается
Обычная реакция на ошибку контрольной суммы — отказ. Флаг fix ослабляет проверку и иногда позволяет получить исправленный выход с корректными checksum, но не восстанавливает потерянные пиксели. Применять его следует к копии и только с последующей визуальной и структурной проверкой.
Практические профили без лишней настройки
Консервативный профиль
Для мастер-файлов, которые должны сохранить максимум структуры, разумно использовать умеренный уровень без alpha, scale16 и агрессивного strip. При необходимости сохраняется интерлейсинг. Такой профиль даёт меньше потенциальной экономии, зато минимизирует неожиданные изменения вспомогательных данных.
Финальный PNG для сайта
Для статических ресурсов можно начать с -o 4 и strip safe. Alpha добавляется только после подтверждения, что скрытые цвета полностью прозрачных пикселей не нужны. Если проект использует цветовые профили, safe предпочтительнее all, потому что он сохраняет chunks, влияющие на отображение.
Большая автоматическая партия
Для тысяч файлов лучше использовать -o 2, ограничение потоков и max-raw-size. Такой профиль снижает риск, что несколько тяжёлых изображений остановят сборку из-за памяти или времени. Более агрессивный пресет можно оставить для отдельного релизного шага.
Поиск минимального размера
Для небольшого числа конечных файлов можно сравнить -o 5, -o 6 и max с Zopfli. Результат оценивается на реальных изображениях, потому что более дорогой режим не гарантирует меньший файл. После выбора конфигурации имеет смысл закрепить её в скрипте, чтобы вся команда использовала одинаковый профиль.
FAQ
Сжимает ли Oxipng PNG без потери качества?
Базовая задача программы — lossless-оптимизация PNG. Однако отдельные параметры нарушают строгую идентичность данных: alpha меняет скрытые RGB-значения полностью прозрачных пикселей, scale16 принудительно уменьшает 16 бит до 8, а удаление метаданных меняет содержимое chunks. Поэтому «без потерь» относится к стандартной оптимизации пиксельного представления, а не ко всем возможным флагам.
Можно ли обработать JPEG и получить PNG?
Нет. Oxipng не является конвертером общего назначения и принимает PNG/APNG. Для преобразования JPEG, TIFF, WebP, AVIF или RAW сначала нужен другой инструмент.
Нужно ли загружать фотографии в интернет?
Нет. Официальная утилита работает локально. Сетевое соединение нужно только для скачивания или обновления программы, пакета либо контейнера.
Есть ли у Oxipng русская версия интерфейса?
Графического интерфейса у продукта нет. Документированные имена команд, параметров и консольная справка используются на английском; отдельный локализованный GUI в официальный пакет не входит.
Почему -o 6 не всегда даёт файл меньше, чем -o 4?
Oxipng не перебирает абсолютно все возможные кодировки. Более высокий уровень пробует более тяжёлые стратегии и обычно не хуже, но сам проект предупреждает о редких случаях, когда более низкий пресет получается немного компактнее.
Нужно ли всегда включать Zopfli?
Нет. Zopfli намного медленнее и не гарантирует выигрыш на каждом PNG. Он оправдан для небольшой группы конечных файлов, если измерение показывает дополнительную экономию, а время сборки не критично.
Что даёт JSON-режим?
Он выводит результаты оптимизации в машиночитаемом формате. Это удобно для CI и скриптов, которые должны собирать статистику размера, фиксировать результат обработки или автоматически выявлять ошибки без разбора обычных строк консоли.
Можно ли использовать Oxipng в собственном приложении?
Да. Помимо исполняемого файла существует Rust-библиотека. Проект предоставляет Options и функции оптимизации, поэтому движок можно вызывать программно. При встраивании рекомендуется отключать ненужные бинарные возможности и выбирать только требуемые features.
Сохраняет ли программа права и время файла?
Для этого есть preserve, который пытается сохранять права доступа и временные метки. В ветке 10 этот режим больше не сохраняет время последнего доступа. Если метаданные файловой системы критичны для процесса, их стоит проверять отдельно после массовой обработки.
Что происходит, если оптимизированный файл получается больше исходного?
По умолчанию принудительно записывать ухудшившийся результат не требуется. Параметр force существует для обратного поведения — записи даже без улучшения. Для обычной оптимизации его лучше не использовать.
Можно ли сохранить анимацию APNG?
Да, но поддержка ограничена. Oxipng способен рефильтровать и пересжимать кадры APNG, а также выполнять alpha-оптимизацию. Нельзя применять strip all, потому что он удалит анимационные chunks.
Подходит ли Oxipng для Content Credentials?
Требуется осторожность. C2PA-данные в caBX удаляются, а явная попытка сохранить такой блок через keep приводит к остановке оптимизации. Для архива, где цепочка происхождения обязательна, исходный файл нужно сохранять отдельно и не считать оптимизированную копию эквивалентной по аутентификационным данным.
Можно ли ограничить время обработки одного файла?
Есть timeout, но он проверяется между отдельными операциями и не способен мгновенно прервать уже начатый тяжёлый проход. Поэтому для крупного файла надёжнее дополнительно использовать умеренный пресет, ограничения потоков и max-raw-size.
Что лучше для веба: strip safe или strip all?
Safe консервативнее: он удаляет данные, не влияющие на отображение, и сохраняет важные цветовые и APNG-chunks. All сильнее очищает файл, но может удалить профиль, физические параметры и анимацию. Выбор зависит от того, какие данные реально нужны конечному ресурсу.
Итог
Oxipng имеет смысл выбирать, когда формат PNG уже задан и нужен локальный, автоматизируемый способ уменьшить файлы без перехода к облачному сервису. Для повседневной сборки достаточно умеренного пресета и консервативной политики метаданных; высокие уровни и Zopfli стоит оставлять для релизного этапа, где дополнительный размер важнее времени.
Для ручной работы без терминала удобнее GUI вроде ImageOptim. Когда допустима потеря цветовой точности ради значительно меньшего PNG, логичнее pngquant. Если требуется конвертация в WebP, AVIF или JPEG, нужен другой инструмент. Сильная сторона Oxipng — не универсальность, а предсказуемая специализация: PNG/APNG, командная строка, многопоточность, управляемые преобразования и возможность встроить тот же движок в автоматическую цепочку.
Главное ограничение связано не с качеством компрессии, а с вниманием к структуре файла. Alpha, scale16, interlace, strip и C2PA меняют разные уровни данных и не должны объединяться в один «максимальный» профиль без проверки. Если политика метаданных определена заранее, а результат контролируется dry-run, журналом и проверкой в целевом рендере, Oxipng хорошо подходит для регулярной технической оптимизации PNG.







