Oxipng — это консольная программа для оптимизации PNG-изображений и APNG-анимаций. Она уменьшает размер файлов за счет более эффективной структуры PNG, подбора фильтров, повторного сжатия IDAT-данных, удаления лишних метаданных и ряда безопасных преобразований. Главная задача программы — сделать PNG меньше без видимого ухудшения изображения. Oxipng работает через командную строку, поэтому у нее нет классического окна с кнопками Открыть, Сохранить или Экспорт. Ее интерфейс — это команда oxipng и набор параметров: --opt, --strip, --alpha, --recursive, --dir, --out, --dry-run, --json, --threads и другие.

Oxipng подходит для тех случаев, когда нужно сжать PNG без превращения изображения в JPEG, WebP или AVIF. Это важно для иконок, интерфейсной графики, скриншотов, схем, пиксельной графики, изображений с прозрачностью и ассетов, где нельзя допустить заметных артефактов. Программа не является редактором: она не меняет композицию, не добавляет эффекты, не кадрирует изображение и не предназначена для рисования. Ее задача — оптимизация готового PNG-файла.

На практике Oxipng используют веб-разработчики, технические авторы, дизайнеры интерфейсов, авторы документации, разработчики игр и те, кто хранит большое количество PNG-изображений в проектах. Программа хорошо вписывается в автоматизированную обработку: ее можно запускать вручную в терминале, добавлять в скрипты, использовать в pre-commit, CI/CD, Docker-контейнерах и сборочных пайплайнах.

Скачать Oxipng

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

Для чего нужна программа

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

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

Задача Как помогает Oxipng
Оптимизация изображений для сайта Уменьшает PNG-ассеты, ускоряет загрузку страниц и снижает вес статики
Сжатие скриншотов Делает скриншоты интерфейсов легче без визуального ухудшения
Подготовка иконок Оптимизирует PNG с прозрачностью и может дополнительно обработать полностью прозрачные пиксели
Работа с документацией Позволяет пакетно сжать изображения в папке docs, assets, screenshots
Автоматизация в Git Может запускаться перед коммитом, чтобы тяжелые PNG не попадали в репозиторий
CI/CD Подходит для проверки и оптимизации изображений в автоматической сборке
Пакетная обработка Обрабатывает несколько файлов и папки с рекурсивным обходом
Контроль метаданных Может удалять безопасно удаляемые или все некритичные metadata chunks

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

Программа не пытается заменить универсальные конвертеры. Она не предназначена для пакетного перевода PNG в WebP, AVIF или JPEG. Для такой задачи нужны другие инструменты. Oxipng нужен именно тогда, когда итоговый файл должен остаться PNG или APNG, но стать компактнее.

Основные возможности Oxipng

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

Ключевые возможности Oxipng:

  • оптимизация PNG и APNG;

  • сжатие без видимой потери качества;

  • уровни оптимизации от -o 0 до -o 6, а также -o max;

  • стандартный уровень -o 2;

  • удаление метаданных через --strip safe, --strip all или список chunks;

  • сохранение нужных chunks через --keep;

  • оптимизация прозрачности через --alpha;

  • управление interlacing через --interlace off, --interlace on, --interlace keep;

  • рекурсивная обработка папок через --recursive;

  • вывод результата в другую папку через --dir;

  • запись результата в отдельный файл через --out;

  • вывод результата в stdout через --stdout;

  • тестовый запуск без изменения файлов через --dry-run;

  • подробный режим через --verbose;

  • тихий режим через --quiet;

  • JSON-вывод через --json;

  • ограничение потоков через --threads;

  • последовательная обработка через --sequential;

  • Zopfli-сжатие через --zopfli;

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

  • ограничение размера входных данных через --max-raw-size.

В обычной работе чаще всего достаточно трех параметров: -o, --strip safe и --alpha. Они дают понятный результат без необходимости разбираться в PNG-фильтрах и IDAT-структуре. Более сложные флаги вроде --filters, --zc, --brute-level, --brute-lines, --zi и --ziwi нужны для тонкой настройки или для автоматизированных процессов, где каждый процент размера имеет значение.

Как устроен интерфейс Oxipng

У Oxipng нет графического интерфейса. Это важно понимать сразу: программа не открывается как Photoshop, XnView, ImageOptim или FileOptimizer. Вместо окна используется терминал. В Windows это может быть Windows Terminal, PowerShell или Command Prompt. В macOS — Terminal. В Linux — любой shell, например Bash, Zsh или Fish.

Интерфейс Oxipng состоит из команды и параметров:

oxipng [OPTIONS] <files>...

Здесь:

  • oxipng — имя исполняемой программы;

  • [OPTIONS] — параметры оптимизации;

  • <files>... — один или несколько файлов PNG/APNG.

Например:

oxipng image.png

Это базовая команда. Она берет файл image.png, оптимизирует его и записывает результат поверх исходного файла, если итоговый размер меньше.

Более практичный вариант для веб-ассетов:

oxipng -o 4 --strip safe --alpha *.png

Эта команда обрабатывает все PNG-файлы в текущей папке, использует уровень оптимизации 4, удаляет безопасно удаляемые metadata chunks и включает дополнительную оптимизацию прозрачных пикселей.

Точные элементы интерфейса Oxipng — это не кнопки, а флаги:

Элемент Oxipng Назначение
-o, --opt <level> Выбор уровня оптимизации
-r, --recursive Рекурсивный обход папок
--dir <directory> Запись результата в указанную папку
--out <file> Запись результата в конкретный файл
--stdout Вывод оптимизированного PNG в stdout
-d, --dry-run Проверка результата без записи файлов
-s Короткая форма для --strip safe
--strip <mode> Удаление метаданных
--keep <list> Сохранение выбранных chunks
-a, --alpha Оптимизация полностью прозрачных пикселей
-i, --interlace <mode> Управление interlacing
-v, --verbose Подробный вывод
-q, --quiet Минимальный вывод
-j, --json JSON-результат
-z, --zopfli Использование Zopfli
-t, --threads <num> Максимальное число потоков
--sequential Последовательная обработка файлов
-h, --help Справка
-V, --version Версия программы

Такой формат удобен для повторяемых задач. Команду можно сохранить в скрипт, добавить в npm script, Makefile, pre-commit hook или CI workflow. Это сильная сторона Oxipng: программа не зависит от кликов мышью и не требует ручной обработки каждого файла.

Как сжать один PNG-файл

Базовая обработка одного PNG выполняется одной командой:

oxipng logo.png

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

Для более сильной оптимизации используется -o:

oxipng -o 4 logo.png

Уровень -o 4 часто подходит для рабочих изображений сайта: он заметно тщательнее стандартного режима, но еще не превращает обработку в слишком долгий процесс.

Для максимального режима можно использовать:

oxipng -o max logo.png

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

Пошагово работа выглядит так:

  1. Открывается терминал.

  2. Выполняется переход в папку с PNG-файлом.

  3. Запускается команда oxipng logo.png или вариант с параметрами.

  4. Программа выводит информацию о найденных вариантах оптимизации.

  5. Пользователь проверяет итоговый размер файла.

  6. При необходимости повторяет запуск с другим уровнем -o.

Пример для файла с прозрачностью:

oxipng -o 4 --strip safe --alpha icon.png

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

Как сжать несколько PNG-файлов

Oxipng хорошо подходит для пакетной обработки. В текущей папке можно обработать все PNG-файлы через маску:

oxipng *.png

Для более практичного результата:

oxipng -o 4 --strip safe --alpha *.png

Команда применяет одинаковые настройки ко всем подходящим файлам. Это удобно для папок icons, screenshots, img, images, assets, public и похожих каталогов.

Если нужно обработать только часть файлов, можно указать их явно:

oxipng -o 4 header.png footer.png logo.png

Для имен с пробелами используются кавычки:

oxipng -o 4 "main banner.png"

При пакетной обработке полезен --dry-run:

oxipng --dry-run -o 4 --strip safe *.png

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

Как оптимизировать папку с изображениями

Для обработки папки используется --recursive или короткая форма -r:

oxipng -r images

Так Oxipng проходит по дереву папок и ищет файлы с расширением .png и .apng. Такой режим подходит для проектов, где изображения лежат не в одной директории, а распределены по подпапкам:

assets/  icons/  screenshots/  ui/  banners/

Практичный вариант для сайта:

oxipng -r -o 4 --strip safe --alpha assets

Эта команда рекурсивно обрабатывает папку assets, применяет уровень 4, удаляет безопасные metadata chunks и оптимизирует прозрачные пиксели.

Для документации:

oxipng -r -o 3 --strip safe docs

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

Для релизной папки:

oxipng -r -o max --strip safe public

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

Как сохранить результат в отдельную папку

По умолчанию Oxipng оптимизирует файлы на месте. Это удобно, но не всегда безопасно для первого запуска. Для отдельной папки используется --dir:

oxipng --dir optimized image.png

Результат будет записан в папку optimized. Если папки нет, Oxipng создаст ее.

Для нескольких файлов:

oxipng --dir optimized -o 4 --strip safe *.png

Такой подход удобен, когда нужно сравнить исходники и оптимизированные версии вручную. Например, можно держать исходные PNG в папке source, а результат складывать в optimized.

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

oxipng image.png --out image-optimized.png

--out подходит для сценария один входной файл — один выходной файл. Для массовой обработки удобнее --dir.

Важно учитывать поведение --dir вместе с --recursive: структура исходных подпапок не сохраняется. Если входные файлы лежат глубоко в разных папках, результат будет складываться в указанную директорию без повторения всей исходной иерархии.

Как проверить сжатие без изменения файлов

Для безопасной проверки используется --dry-run:

oxipng --dry-run -o 4 image.png

или для папки:

oxipng --dry-run -r -o 4 --strip safe assets

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

--dry-run полезен в трех случаях:

  • перед первым запуском на большой папке;

  • перед включением Oxipng в автоматизацию;

  • при подборе уровня оптимизации.

Например, можно сравнить:

oxipng --dry-run -o 2 *.pngoxipng --dry-run -o 4 *.pngoxipng --dry-run -o max *.png

После этого проще решить, какой уровень дает лучший баланс между временем обработки и размером файла.

Уровни оптимизации -o: что выбрать

Параметр -o управляет уровнем оптимизации. Чем выше уровень, тем больше вариантов Oxipng пробует. Более высокий уровень обычно дает файл меньшего размера, но требует больше времени. Важно понимать: это не качество изображения, как у JPEG. Уровень -o не означает, что картинка станет хуже. Он определяет, насколько тщательно программа будет искать более компактное представление PNG.

Уровень Назначение Когда использовать
-o 0 Самый быстрый режим Быстрая проверка, большие партии файлов, слабый компьютер
-o 1 Быстрый режим Ежедневная легкая оптимизация
-o 2 Стандартный уровень Универсальный вариант по умолчанию
-o 3 Более тщательный режим Скриншоты, документация, веб-графика
-o 4 Сильный практичный режим Ассеты сайта, иконки, UI-графика
-o 5 Медленнее, тщательнее Подготовка релизных материалов
-o 6 Один из самых тяжелых встроенных режимов Небольшие наборы важных файлов
-o max Максимальный стабильный пресет Редкие финальные запуски, когда время менее важно

Для большинства рабочих задач хорошо подходит:

oxipng -o 4 --strip safe --alpha *.png

Для ежедневной обработки в проекте:

oxipng -o 2 --strip safe *.png

Для финального прохода:

oxipng -o max --strip safe *.png

Oxipng не является грубым brute-force оптимизатором, поэтому редкие ситуации, когда более низкий уровень даст немного меньший файл, возможны. Это не ошибка: разные комбинации PNG-фильтров и deflate-сжатия иногда ведут себя не идеально линейно.

Удаление метаданных: --strip safe, --strip all, --keep

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

Oxipng умеет удалять metadata chunks через --strip.

Самый практичный вариант:

oxipng --strip safe image.png

Короткая форма:

oxipng -s image.png

--strip safe удаляет только те некритичные chunks, которые не влияют на отображение изображения. Это хороший вариант для сайтов, интерфейсных ассетов и документации.

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

oxipng --strip all image.png

--strip all удаляет все некритичные chunks. Такой режим может дать дополнительную экономию, но он менее осторожен. Его не стоит применять без понимания последствий, особенно к APNG. При --strip all APNG может быть превращен в обычный PNG, потому что chunks анимации относятся к некритичным блокам.

Можно удалить конкретные chunks:

oxipng --strip bKGD,cHRM image.png

Можно действовать от обратного и оставить только нужные chunks через --keep:

oxipng --keep eXIf,display image.png

display означает chunks, влияющие на внешний вид изображения. Такой подход удобен, когда нужно сохранить EXIF или конкретные технические данные, но удалить остальное.

Практическое правило:

Сценарий Настройка
Безопасная оптимизация для сайта --strip safe
Максимальное удаление лишнего для обычных PNG --strip all
APNG-анимации избегать --strip all
Нужно сохранить EXIF использовать --keep eXIf,display
Нужно удалить только выбранные chunks использовать --strip <list> 

Оптимизация прозрачности: параметр --alpha

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

Параметр --alpha позволяет Oxipng изменить цветовые значения полностью прозрачных пикселей так, чтобы файл лучше сжимался:

oxipng --alpha icon.png

Практичный вариант:

oxipng -o 4 --strip safe --alpha icons/*.png

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

Пример, когда --alpha уместен:

oxipng -o 4 --strip safe --alpha public/icons/*.png

Пример, когда стоит быть осторожнее:

oxipng -o 4 --strip safe archival-image.png

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

Работа с interlace: --interlace off, on, keep

PNG поддерживает Adam7 interlacing. Это режим, при котором изображение может постепенно проявляться при загрузке. Раньше такая возможность была важнее: при медленном интернете пользователь видел грубую версию картинки раньше полной загрузки. Сейчас interlacing чаще мешает, потому что увеличивает размер оптимизированного файла.

Oxipng управляет этим через --interlace:

oxipng --interlace off image.png

Варианты:

Режим Что делает
--interlace off Убирает interlacing
--interlace on Включает Adam7 interlacing
--interlace keep Сохраняет текущий режим каждого файла 

По умолчанию применяется off, то есть interlacing удаляется. Это разумно для большинства сайтов и приложений: меньший размер файла обычно важнее постепенного отображения.

Пример:

oxipng -o 4 --interlace off --strip safe screenshot.png

Включать interlacing стоит только при конкретной причине. Он может заметно увеличить размер оптимизированного изображения, поэтому для современных веб-ассетов off чаще является правильным выбором.

Продвинутые параметры сжатия

Большинству пользователей достаточно -o, --strip safe, --alpha и --recursive. Но Oxipng дает доступ и к более низкоуровневым параметрам.

--filters

PNG использует фильтры строк, которые помогают последующему deflate-сжатию. Oxipng может пробовать разные варианты:

oxipng --filters 0-9 image.png

или:

oxipng -f 0,7,8,9 image.png

Фильтры 0–4 — классические PNG delta filters: None, Sub, Up, Average, Paeth. Фильтры 5–9 — эвристические стратегии, где Oxipng пытается выбрать лучший вариант построчно.

--fast

--fast делает предварительную быструю оценку включенных фильтров и затем выполняет основную компрессию для лучшего результата:

oxipng -o 4 --fast image.png

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

--zc

--zc задает уровень deflate-сжатия для основных попыток:

oxipng --zc 12 image.png

Обычному пользователю не нужно выставлять --zc вручную: пресеты -o уже выбирают подходящие значения.

--zopfli

Zopfli дает более сильное, но медленное сжатие:

oxipng -o max --zopfli --fast image.png

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

--timeout

Ограничивает время оптимизации:

oxipng -o max --timeout 30 image.png

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

--max-raw-size

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

oxipng --max-raw-size 20MB -r images

Такой флаг защищает автоматические пайплайны от чрезмерного потребления памяти и времени на огромных PNG.

Многопоточность и производительность

Oxipng — многопоточный PNG optimizer. Он использует параллелизм в двух направлениях: может оценивать несколько вариантов оптимизации одного файла и одновременно обрабатывать несколько файлов. Для больших папок это важное преимущество: программа лучше использует многоядерный процессор, чем старые однониточные утилиты.

Ограничить число потоков можно так:

oxipng --threads 4 *.png

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

oxipng --threads 2 -r images

Для последовательной обработки:

oxipng --sequential *.png

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

Практические рекомендации:

Условия Команда
Нужно использовать все ресурсы oxipng -r -o 4 images
Нужно снизить нагрузку oxipng --threads 2 -r images
Нужен предсказуемый порядок oxipng --sequential *.png
Слишком крупные файлы oxipng --max-raw-size 20MB -r images
Нельзя долго обрабатывать один файл oxipng --timeout 30 -r images 

JSON-вывод для автоматизации

Для скриптов и CI/CD удобен --json:

oxipng --json -o 4 image.png

Вместо обычного человекочитаемого вывода программа печатает результат в формате JSON. Это нужно, когда данные должны анализироваться автоматически: например, чтобы собрать отчет, проверить экономию, записать статистику или принять решение, пропускать сборку или нет.

Сценарии использования --json:

  • отчет по размеру PNG до и после оптимизации;

  • автоматическая проверка в pull request;

  • сбор статистики по ассетам;

  • контроль изображений в дизайн-системе;

  • интеграция в собственный CLI-инструмент;

  • проверка, что PNG не превышает допустимый размер.

Пример:

oxipng --json --dry-run -o 4 public/images/*.png

Такой запуск ничего не перезаписывает, но дает машинно-читаемые данные о потенциальной оптимизации.

Использование Oxipng в Docker

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

Пример команды:

docker run --rm -v $(pwd):/work ghcr.io/oxipng/oxipng -o 4 /work/file.png

Здесь текущая папка подключается внутрь контейнера как /work, а Oxipng оптимизирует файл /work/file.png. Такой способ удобен для серверной автоматизации, где окружение должно быть воспроизводимым. Docker-образ доступен для linux/amd64 и linux/arm64.

Для папки:

docker run --rm -v $(pwd):/work ghcr.io/oxipng/oxipng -r -o 4 --strip safe /work/assets

При контейнерном запуске нужно внимательно работать с путями. Файл должен быть виден внутри контейнера, иначе Oxipng не сможет его открыть.

Интеграция с pre-commit

Oxipng хорошо подходит для pre-commit: PNG-файлы оптимизируются до того, как попадут в коммит. Это защищает репозиторий от тяжелых скриншотов, неаккуратно сохраненных иконок и лишних метаданных.

Пример .pre-commit-config.yaml:

repos:  - repo: https://github.com/oxipng/oxipng    rev: v10.0.0    hooks:      - id: oxipng        args: ["-o", "4", "--strip", "safe", "--alpha"]

Такой hook запускает Oxipng для PNG-файлов и применяет практичный набор настроек: уровень 4, безопасное удаление метаданных и оптимизацию прозрачности.

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

Использование Oxipng в GitHub Actions и CI/CD

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

Проверочный режим:

oxipng --dry-run -o 4 --strip safe *.png

Оптимизация:

oxipng -o 4 --strip safe *.png

Для рекурсивной папки:

oxipng -r -o 4 --strip safe public

Практические задачи в CI:

  • проверять PNG в pull request;

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

  • уменьшать размер изображений перед публикацией сайта;

  • контролировать, чтобы в репозиторий не попадали большие неоптимизированные файлы;

  • создавать отчет о размере ассетов;

  • запускать финальную оптимизацию перед релизом.

В автоматизации особенно важны --dry-run, --json, --quiet, --threads, --timeout и --max-raw-size. Эти параметры позволяют сделать запуск предсказуемым, ограничить нагрузку и получить данные в удобном формате.

Oxipng в автоматизации macOS

Oxipng можно использовать не только в терминале, но и как основу для быстрых действий macOS. В таком сценарии команда запускается через Automator или Shortcuts, а пользователь выбирает PNG-файлы в Finder и отправляет их на оптимизацию через быстрый системный сценарий.

Quick Action с командой oxipng в Automator

На скриншоте видно действие Run Shell Script, где запускается команда:

for f in "$@"do  /usr/local/bin/oxipng -pD -o max "$f"done

Такой подход превращает консольную утилиту в удобный пункт контекстной обработки. Сам Oxipng при этом остается CLI-программой, но запуск становится ближе к привычному графическому workflow: пользователь выделяет изображения, вызывает действие и получает оптимизированные PNG.

В Shortcuts логика похожая: входные файлы передаются в shell script, затем Oxipng проходит по каждому файлу и применяет заданный набор параметров.

Shortcuts workflow с запуском oxipng через Run Shell Script

Такой вариант удобен для пользователей macOS, которым нравится пакетная обработка из Finder, но при этом нужен именно Oxipng, а не отдельная графическая программа.

Oxipng как библиотека Rust

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

В таком сценарии разработчик подключает Oxipng как зависимость, создает структуру настроек и вызывает функцию оптимизации из кода. Это отличается от запуска внешней команды: приложение может напрямую управлять параметрами, обрабатывать ошибки и встраивать результат в собственный workflow.

Примерная логика использования:

  1. Приложение получает путь к PNG.

  2. Создаются параметры оптимизации.

  3. Вызывается оптимизация.

  4. Результат сохраняется или возвращается пользователю.

  5. Ошибки обрабатываются внутри приложения.

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

Поддержка APNG и ограничения

Oxipng поддерживает APNG, но оптимизация animated PNG ограничена. Программа может выполнять alpha optimization, refiltering и recompression кадров, но не применяет все преобразования, доступные для обычных PNG. Это логично: APNG хранит последовательность кадров и служебные chunks анимации, поэтому агрессивные изменения могут повредить структуру анимации.

Главное правило для APNG: не использовать --strip all, если нужно сохранить анимацию. Этот режим удаляет все некритичные chunks, а APNG-данные относятся к таким блокам. В результате animated PNG может превратиться в обычное статичное PNG-изображение.

Для APNG безопаснее:

oxipng -o 3 --strip safe animation.apng

или:

oxipng -o 4 --strip safe --alpha animation.apng

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

Примеры рабочих сценариев

Оптимизация иконок сайта

Иконки часто имеют прозрачность и ограниченную палитру. Для них хорошо подходит:

oxipng -o 4 --strip safe --alpha public/icons/*.png

Что делает команда:

  • -o 4 — тщательно оптимизирует без чрезмерного замедления;

  • --strip safe — убирает безопасно удаляемые метаданные;

  • --alpha — улучшает сжатие прозрачных областей;

  • public/icons/*.png — обрабатывает все PNG в папке иконок.

Оптимизация скриншотов документации

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

oxipng -r -o 3 --strip safe docs/screenshots

Здесь уровень 3 дает хороший баланс. Если скриншотов очень много, можно ограничить нагрузку:

oxipng -r -o 3 --strip safe --threads 2 docs/screenshots

Максимальное сжатие перед релизом

Для финальной сборки:

oxipng -r -o max --zopfli --fast --strip safe assets

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

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

Перед массовой оптимизацией:

oxipng --dry-run -r -o 4 --strip safe assets

Так видно, есть ли смысл запускать реальную обработку.

Ограничение нагрузки на компьютер

Для работы параллельно с другими задачами:

oxipng --threads 2 -r -o 4 images

Сохранение результата отдельно

Для сравнения исходников и результата:

oxipng --dir optimized -o 4 --strip safe *.png

Один файл с новым именем

oxipng source.png --out source.optimized.png

Качество результата: что меняется, а что нет

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

Что может меняться:

  • способ deflate-сжатия;

  • фильтры PNG;

  • порядок и состав metadata chunks;

  • цветовой тип, если преобразование безопасно;

  • битовая глубина, если сокращение возможно без потери;

  • значения полностью прозрачных пикселей при --alpha;

  • interlacing;

  • структура APNG при опасных настройках вроде --strip all.

Что не должно меняться при обычных безопасных настройках:

  • видимое изображение;

  • прозрачность;

  • размеры в пикселях;

  • содержимое непрозрачных областей;

  • назначение файла как PNG.

Особые случаи:

Параметр Риск
--alpha Визуально без потерь, но меняет невидимые RGB-значения полностью прозрачных пикселей
--strip all Может удалить важные некритичные chunks, опасен для APNG
--scale16 Принудительно снижает 16 бит на канал до 8 бит, это lossy-операция
--force Может записать файл даже тогда, когда он стал больше
--interlace on Может увеличить размер файла

Для большинства сайтов безопасный пресет выглядит так:

oxipng -o 4 --strip safe --alpha *.png

Для максимально осторожного сценария:

oxipng -o 2 --strip safe *.png

Безопасность оригиналов и перезапись файлов

Oxipng часто перезаписывает исходный файл. Это нормально для автоматизированной оптимизации, но требует аккуратности при первом запуске.

Безопасные подходы:

  1. Использовать Git.
    Если файлы в репозитории, изменения легко посмотреть через diff и откатить.

  2. Запускать --dry-run.
    Сначала проверить потенциальный результат:

    oxipng --dry-run -r -o 4 assets
  3. Использовать --dir.
    Сохранять результат отдельно:

    oxipng --dir optimized -o 4 *.png
  4. Не применять --strip all к APNG.
    Для animated PNG лучше использовать --strip safe.

  5. Не включать --force без причины.
    Обычная логика Oxipng защищает от записи результата, который не меньше исходника. --force эту защиту отключает.

  6. Осторожно использовать --scale16.
    Это не просто оптимизация, а снижение глубины цвета.

Для рабочих проектов оптимальный подход такой: сначала --dry-run, затем запуск на отдельной ветке Git, потом просмотр изменений, и только после этого добавление команды в автоматизацию.

Ошибки и типичные проблемы

Команда oxipng не найдена

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

Файл не является PNG

Oxipng работает с PNG/APNG. Если передать JPEG, WebP, AVIF или другой формат, программа не будет выполнять обычную оптимизацию PNG.

Неправильно:

oxipng photo.jpg

Правильно:

oxipng screenshot.png

Файл почти не уменьшился

Это нормально. Если PNG уже был хорошо оптимизирован, выигрыш может быть минимальным. Особенно часто это бывает после ImageOptim, Squoosh, FileOptimizer, zopflipng или предыдущего запуска Oxipng.

Обработка идет слишком долго

Причины:

  • выбран -o max;

  • включен --zopfli;

  • файл очень большой;

  • много фильтров;

  • много файлов;

  • мало CPU-ресурсов.

Решения:

oxipng -o 4 image.png

или:

oxipng --threads 2 -r images

или:

oxipng --timeout 30 -r images

После --strip all APNG перестал быть анимированным

--strip all удаляет некритичные chunks, включая chunks, необходимые для APNG-анимации. Для animated PNG нужно использовать --strip safe.

Файл стал больше после interlace

Adam7 interlacing может увеличить размер. Для веб-ассетов обычно лучше:

oxipng --interlace off image.png

Нужно сохранить метаданные

Не используйте --strip all. Используйте --strip safe или --keep:

oxipng --keep eXIf,display image.png

Нужно обработать папки, но сохранить структуру

--dir вместе с --recursive не сохраняет исходную структуру папок. Для сохранения структуры лучше использовать внешний скрипт, который сам проходит по файлам и вызывает Oxipng для каждого пути.

Плюсы Oxipng

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

Плюс Почему это важно
Многопоточность Быстрее обрабатывает партии файлов и лучше использует CPU
Консольный формат Легко встраивается в скрипты и CI/CD
Lossless-ориентация Подходит для иконок, скриншотов, UI-графики
Поддержка APNG Может работать не только со статичными PNG
Гибкое удаление метаданных Есть safe, all, списки chunks и --keep
Режим --dry-run Можно проверить результат без перезаписи
JSON-вывод Удобен для автоматизации и отчетов
Docker-запуск Подходит для воспроизводимых окружений
pre-commit Позволяет автоматически чистить PNG до коммита
Rust-библиотека Можно встроить в собственные Rust-проекты
MIT license Удобная open-source лицензия 

Oxipng не перегружен лишними функциями. В этом его сила: он не пытается быть редактором, просмотрщиком, конвертером и менеджером файлов одновременно. Он решает одну задачу — оптимизирует PNG.

Минусы Oxipng

Минусы Oxipng связаны не с качеством оптимизации, а с форматом работы.

Минус Что это значит на практике
Нет GUI Пользователю нужно работать с терминалом
Только PNG/APNG Для JPEG, WebP, AVIF нужны другие программы
-o max может быть медленным Максимальные режимы не подходят для постоянного ручного запуска
Есть опасные параметры --strip all, --scale16, --force требуют понимания
APNG поддерживается ограниченно Не все преобразования доступны для анимированных PNG
Нужно следить за метаданными Агрессивное удаление chunks может быть нежелательно
Нет визуального сравнения Программа не показывает картинку до/после, как Squoosh
Не конвертирует форматы Это именно PNG optimizer, а не универсальный конвертер 

Для пользователя, который хочет перетащить файл в окно и получить результат, Oxipng менее удобен, чем ImageOptim, FileOptimizer, Curtail или Squoosh. Для разработчика, которому нужна автоматизация, он обычно удобнее графических программ.

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

Oxipng корректнее сравнивать не с любыми программами для картинок, а с конкретными инструментами оптимизации изображений. Его ближайшая зона — PNG optimization, lossless PNG compression, автоматизация и командная строка.

Программа Тип Чем отличается от Oxipng
OptiPNG CLI PNG optimizer Классический PNG-оптимизатор. Oxipng начинался как переписывание идей OptiPNG с акцентом на многопоточность и Rust, но сейчас отличается архитектурой и не является полной drop-in заменой
pngquant CLI и библиотека Использует lossy-сжатие PNG через уменьшение палитры. Часто дает сильное уменьшение, но меняет изображение. Oxipng в основном выбирают, когда нужен PNG без видимой потери качества
ImageOptim GUI для macOS Удобен для drag-and-drop и объединяет несколько движков оптимизации. Внутри экосистемы ImageOptim может использоваться OxiPNG, но сам ImageOptim — графическая оболочка для разных инструментов
FileOptimizer GUI для Windows Универсальный оптимизатор множества форматов. Шире по типам файлов, но менее специализирован как CLI-инструмент для PNG-пайплайнов
Squoosh Веб-приложение Удобен для ручного визуального сравнения и работы в браузере. В Squoosh есть OxiPNG как один из кодеков, но для пакетной автоматизации локальный Oxipng проще и прямее
zopflipng CLI PNG optimizer Часто ориентирован на очень плотное lossless-сжатие, но может быть медленнее. В Oxipng Zopfli доступен через --zopfli
Curtail GUI для Linux Удобнее для пользователей Linux-десктопа, которым нужен графический интерфейс. Oxipng лучше подходит для терминала, скриптов и CI

 

OxiPNG в меню инструментов ImageOptim

ImageOptim удобнее, когда нужно быстро бросить несколько файлов в окно и не думать о параметрах. Но Oxipng дает более прямой контроль: пользователь сам задает -o, --strip, --alpha, --threads, --dry-run, --json и другие параметры. Поэтому Oxipng чаще выбирают там, где важна повторяемость, а ImageOptim — там, где важнее визуальная простота.

Упоминание OxiPNG в окне About ImageOptim

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

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

Когда лучше выбрать Oxipng

Oxipng стоит выбирать, если задача выглядит так:

  • нужно уменьшить PNG без видимого ухудшения;

  • нужно обработать много PNG-файлов;

  • изображения лежат в проекте, репозитории или папке ассетов;

  • важна командная строка;

  • нужна автоматизация в CI/CD;

  • нужно встроить оптимизацию в pre-commit;

  • нужно сохранить формат PNG;

  • нужно контролировать удаление метаданных;

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

  • нужно получать JSON-результат;

  • нужна повторяемая команда, а не ручная работа в GUI.

Типичный пользователь Oxipng — не тот, кто ищет кнопку сжатия, а тот, кто хочет один раз настроить команду и затем использовать ее постоянно.

Лучший универсальный пресет:

oxipng -o 4 --strip safe --alpha *.png

Лучший осторожный пресет:

oxipng -o 2 --strip safe *.png

Лучший пресет для папки:

oxipng -r -o 4 --strip safe --alpha assets

Лучший пресет для проверки:

oxipng --dry-run -r -o 4 --strip safe assets

Когда лучше выбрать другую программу

Oxipng не универсален. В некоторых задачах другой инструмент будет логичнее.

Задача Лучше подойдет
Нужен графический интерфейс ImageOptim, FileOptimizer, Curtail
Нужно визуально сравнить качество Squoosh
Нужно очень сильное уменьшение с потерями pngquant
Нужно конвертировать PNG в WebP/AVIF Squoosh, ImageMagick, cwebp, avifenc
Нужно оптимизировать JPEG MozJPEG, jpegtran, ImageOptim, FileOptimizer
Нужно обработать много разных форматов FileOptimizer, ImageMagick
Нужно редактировать изображение GIMP, Photoshop, Krita, Affinity Photo
Нужно изменить размер ImageMagick, Squoosh, графический редактор 

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

Практические рекомендации по настройкам

Безопасный вариант для сайта

oxipng -o 4 --strip safe --alpha *.png

Этот набор подходит для иконок, элементов интерфейса, скриншотов и большинства веб-ассетов.

Быстрый вариант для ежедневной работы

oxipng -o 2 --strip safe *.png

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

Вариант для документации

oxipng -r -o 3 --strip safe docs/screenshots

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

Максимальное сжатие для релиза

oxipng -r -o max --zopfli --fast --strip safe assets

Такой вариант лучше запускать не постоянно, а перед финальной публикацией.

Осторожная проверка

oxipng --dry-run -r -o 4 --strip safe assets

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

Обработка с ограничением CPU

oxipng --threads 2 -r -o 4 images

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

Сохранение копий в отдельную папку

oxipng --dir optimized -o 4 --strip safe *.png

Удобно для проверки результата до замены исходников.

APNG без опасного удаления chunks

oxipng -o 3 --strip safe animation.apng

Для animated PNG не стоит использовать --strip all.

Частые вопросы

Oxipng портит качество?

При обычных настройках Oxipng сохраняет видимое изображение. Он оптимизирует внутреннее представление PNG, а не ухудшает картинку как JPEG-компрессор. Но отдельные параметры нужно понимать: --alpha визуально безопасен, но технически меняет невидимые цветовые значения полностью прозрачных пикселей; --scale16 снижает глубину цвета; --strip all может удалить важные chunks.

Можно ли сжимать JPEG?

Нет. Oxipng предназначен для PNG и APNG. Для JPEG нужны другие инструменты.

Есть ли у Oxipng графический интерфейс?

Нет. Oxipng — консольная программа. Рабочий интерфейс — команда oxipng и параметры. В графических программах вроде ImageOptim OxiPNG может использоваться как один из внутренних движков, но сам Oxipng остается CLI-инструментом.

Что выбрать: --strip safe или --strip all?

Для большинства случаев — --strip safe. Он удаляет безопасно удаляемые chunks. --strip all агрессивнее и может повредить APNG-анимацию как анимацию, превратив ее в обычный PNG.

Что делает --alpha?

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

Почему файл почти не уменьшился?

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

Почему -o max не всегда лучший выбор?

-o max медленнее. Прирост по сравнению с -o 4 может быть небольшим, особенно на уже оптимизированных файлах. Для регулярной работы лучше -o 2, -o 3 или -o 4, а максимальный режим оставить для финальных запусков.

Можно ли запускать Oxipng на сервере?

Да. Oxipng хорошо подходит для серверной автоматизации, CI/CD, Docker и скриптов. Для серверов особенно полезны --threads, --timeout, --max-raw-size, --quiet и --json.

Подходит ли Oxipng для WordPress-проектов?

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

Чем Oxipng отличается от OptiPNG?

Обе программы оптимизируют PNG, но Oxipng написан на Rust, использует многопоточность и имеет собственную архитектуру. Он исторически связан с идеей переписывания OptiPNG, но не является полной заменой с идентичными параметрами.

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

Oxipng — один из лучших вариантов для тех, кому нужен быстрый, гибкий и автоматизируемый оптимизатор PNG-изображений. Его сильная сторона — не красивое окно, а предсказуемая командная строка. Программа хорошо подходит для сжатия PNG без видимого ухудшения, оптимизации скриншотов, подготовки ассетов сайта, обработки иконок, удаления лишних метаданных и встраивания в pre-commit или CI/CD.

Оптимальный пользователь Oxipng — разработчик, веб-мастер, технический автор, дизайнер интерфейсов с базовым пониманием терминала или любой человек, которому нужно обрабатывать много PNG не вручную, а повторяемой командой. Для ручной разовой работы с drag-and-drop удобнее ImageOptim, FileOptimizer или Squoosh. Для агрессивного lossy-сжатия лучше pngquant. Для конвертации в WebP или AVIF нужны другие инструменты.

Главная практическая команда для большинства задач:

oxipng -o 4 --strip safe --alpha *.png

Главная осторожная команда:

oxipng --dry-run -o 4 --strip safe *.png

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