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
- Ретушь фото
- Русский интерфейс
- Просто для новичков
- Только командная строка
- Не для ретуши фото
- Только PNG-сжатие
Для чего нужна программа
Основная цель 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 может быть избыточным: выигрыш в размере часто становится меньше, а время обработки растет.
Пошагово работа выглядит так:
-
Открывается терминал.
-
Выполняется переход в папку с PNG-файлом.
-
Запускается команда
oxipng logo.pngили вариант с параметрами. -
Программа выводит информацию о найденных вариантах оптимизации.
-
Пользователь проверяет итоговый размер файла.
-
При необходимости повторяет запуск с другим уровнем
-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 и отправляет их на оптимизацию через быстрый системный сценарий.

На скриншоте видно действие Run Shell Script, где запускается команда:
for f in "$@"do /usr/local/bin/oxipng -pD -o max "$f"done
Такой подход превращает консольную утилиту в удобный пункт контекстной обработки. Сам Oxipng при этом остается CLI-программой, но запуск становится ближе к привычному графическому workflow: пользователь выделяет изображения, вызывает действие и получает оптимизированные PNG.
В Shortcuts логика похожая: входные файлы передаются в shell script, затем Oxipng проходит по каждому файлу и применяет заданный набор параметров.

Такой вариант удобен для пользователей macOS, которым нравится пакетная обработка из Finder, но при этом нужен именно Oxipng, а не отдельная графическая программа.
Oxipng как библиотека Rust
Oxipng можно использовать не только как исполняемую CLI-программу, но и как библиотеку в Rust-проектах. Это нужно, если оптимизация PNG должна быть частью собственного приложения, сервиса, сборщика или внутреннего инструмента.
В таком сценарии разработчик подключает Oxipng как зависимость, создает структуру настроек и вызывает функцию оптимизации из кода. Это отличается от запуска внешней команды: приложение может напрямую управлять параметрами, обрабатывать ошибки и встраивать результат в собственный workflow.
Примерная логика использования:
-
Приложение получает путь к PNG.
-
Создаются параметры оптимизации.
-
Вызывается оптимизация.
-
Результат сохраняется или возвращается пользователю.
-
Ошибки обрабатываются внутри приложения.
Такой подход применим для внутренних панелей загрузки изображений, статических генераторов, десктопных утилит и 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 часто перезаписывает исходный файл. Это нормально для автоматизированной оптимизации, но требует аккуратности при первом запуске.
Безопасные подходы:
-
Использовать Git.
Если файлы в репозитории, изменения легко посмотреть через diff и откатить. -
Запускать
--dry-run.
Сначала проверить потенциальный результат:oxipng --dry-run -r -o 4 assets -
Использовать
--dir.
Сохранять результат отдельно:oxipng --dir optimized -o 4 *.png -
Не применять
--strip allк APNG.
Для animated PNG лучше использовать--strip safe. -
Не включать
--forceбез причины.
Обычная логика Oxipng защищает от записи результата, который не меньше исходника.--forceэту защиту отключает. -
Осторожно использовать
--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 |

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