Oxipng: консольная утилита для оптимизации PNG-файлов и уменьшения
Oxipng — это специализированная программа для сжатия PNG и APNG без визуальной потери качества. Она не редактирует изображение, не меняет композицию, не дорисовывает детали и не превращает PNG в другой формат. Задача Oxipng уже: взять готовый PNG-файл, пересобрать его внутреннюю структуру, подобрать более удачные параметры сжатия, убрать лишние метаданные при необходимости и получить файл меньшего размера.
Содержание
- 1 Скачать Oxipng
- 2 Что делает Oxipng
- 3 Чем Oxipng отличается от обычных онлайн-сжимателей
- 4 Интерфейс программы: как устроена работа через командную строку
- 5 Первый запуск: как понять, что программа работает
- 6 Уровни оптимизации -o
- 7 Что происходит с PNG внутри
- 8 Удаление метаданных через --strip
- 9 Прозрачность и параметр --alpha
- 10 Interlace и параметр --interlace
- 11 Пакетная обработка PNG
- 12 Практическая инструкция: оптимизация PNG для сайта
- 13 Обработка вложенных папок
- 14 Сохранение результата без перезаписи исходников
- 15 JSON-вывод для автоматизации
- 16 Zopfli-сжатие
- 17 Расширенные параметры фильтрации
- 18 Ограничение крупных файлов через --max-raw-size
- 19 Что делать с 16-битными PNG
- 20 Работа с APNG
- 21 Oxipng для WordPress, Laravel и статических сайтов
- 22 Git и pre-commit
- 23 Docker-сценарии
- 24 Oxipng как библиотека
- 25 Примеры команд для разных задач
- 26 Какие файлы лучше всего сжимаются
- 27 Что Oxipng не делает
- 28 Сравнение с аналогами
- 29 История версий программы
- 30 Производительность на практике
- 31 Безопасность обработки
- 32 Частые ошибки при работе с Oxipng
- 33 Практические сценарии использования
- 34 Рекомендованные настройки
- 35 Плюсы Oxipng
- 36 Минусы Oxipng
- 37 Для кого подходит Oxipng
- 38 Для кого Oxipng не лучший выбор
- 39 Итоговая оценка
Скачать Oxipng
Новейшая версия для Windows и macOS. Удобный редактор с ИИ и профессиональными функциями.
Главная особенность Oxipng — ориентация на командную строку и автоматизацию. У программы нет графического окна с кнопками «Открыть», «Сохранить» или «Сжать». Весь интерфейс — это команда oxipng, параметры вроде -o, --strip, --alpha, --recursive, --out, --dir, --threads, а также текстовый вывод в терминале. Такой формат неудобен для тех, кто хочет просто перетащить картинку мышью, зато отлично подходит для веб-разработки, оптимизации ассетов сайта, CI/CD, pre-commit-хуков и пакетной обработки сотен PNG-файлов.

Oxipng написан на Rust и работает как мультипоточный lossless PNG/APNG compression optimizer: его можно запускать из командной строки или подключать как библиотеку в Rust-проектах. Программа использует несколько стратегий оптимизации PNG, умеет работать с уровнями сжатия, PNG-фильтрами, прозрачностью, метаданными, interlace-режимом, Zopfli и ограничением потоков.
Что делает Oxipng
Oxipng уменьшает размер PNG-файлов без изменения видимого изображения. Для обычного пользователя результат выглядит просто: была картинка image.png, после обработки она открывается так же, но занимает меньше места. Внутри процесс сложнее: программа анализирует PNG, пробует разные фильтры строк, пересжимает IDAT-данные, может убрать лишние chunks, может оптимизировать прозрачные пиксели и подобрать более компактное представление данных.
PNG — формат без потерь, но это не значит, что каждый PNG уже оптимален. Один и тот же набор пикселей можно сохранить по-разному: с разными фильтрами, разным уровнем Deflate-сжатия, лишними текстовыми блоками, профилями, служебными chunks, interlace-разметкой и палитрой. Oxipng работает именно с этой внутренней частью файла. Он не портит качество, как JPEG-компрессор, а ищет более экономное хранение тех же данных.
Типичные задачи, для которых используют Oxipng:
уменьшить вес PNG-скриншотов перед публикацией на сайте;
оптимизировать иконки, логотипы, элементы интерфейса;
сжать изображения в папке
assets,public,img,static;убрать безопасные метаданные из PNG;
подготовить графику для WordPress, Laravel, React, Vue, Astro, Hugo и других проектов;
автоматически прогонять PNG перед коммитом;
встроить оптимизацию в сборку проекта;
обработать APNG-файлы в пределах возможностей программы;
получить JSON-вывод для скриптов и автоматических проверок.
Oxipng особенно полезен там, где PNG используется массово: интерфейсные элементы, документация, скриншоты программ, изображения в статьях, пиктограммы, UI-kit, графика для лендингов. Если в проекте несколько десятков или сотен PNG, ручная загрузка каждого файла в онлайн-сервис становится слабым местом. Командная строка решает эту задачу быстрее и стабильнее.
Чем Oxipng отличается от обычных онлайн-сжимателей
Онлайн-сервисы для сжатия картинок удобны для разовой работы. Пользователь открывает сайт, загружает файл, получает результат. У Oxipng другая логика: программа запускается локально, не отправляет изображение на сторонний сервер и легко повторяется одной и той же командой. Это важное отличие для рабочих файлов, закрытых макетов, клиентских скриншотов, внутренних интерфейсов и графики, которую нельзя загружать в неизвестный веб-сервис.
Разница особенно заметна в рабочих процессах:
| Задача | Как это выглядит в онлайн-сервисе | Как это выглядит в Oxipng |
|---|---|---|
| Сжать один PNG | Загрузить файл вручную | oxipng image.png |
| Сжать папку | Загружать пачку через браузер | oxipng *.png |
| Сжать вложенные папки | Часто неудобно или невозможно | oxipng -r ./images |
| Повторять одинаковые настройки | Нужно помнить настройки сервиса | Команда хранится в скрипте |
| Встроить в Git | Обычно нельзя напрямую | pre-commit hook |
| Использовать в CI/CD | Нужны обходные решения | обычная shell-команда |
| Сохранить приватность | Файл уходит на сервер | обработка локально |
Oxipng не пытается заменить графический редактор. Это не Photoshop, не GIMP, не XnView и не универсальная программа для просмотра изображений. Он не показывает превью, не имеет панели слоев, не меняет размер, не кадрирует и не добавляет водяные знаки. Его сильная сторона — повторяемая, контролируемая, локальная оптимизация PNG без визуальной потери качества.
Интерфейс программы: как устроена работа через командную строку
У Oxipng нет привычного окна приложения. Вся работа строится вокруг команды:
oxipng [OPTIONS] <files>...Вместо кнопок используются параметры:
| Элемент CLI-интерфейса | Что делает |
|---|---|
oxipng | запускает программу |
<files> | указывает один или несколько PNG/APNG-файлов |
-o, --opt | задает уровень оптимизации |
-r, --recursive | включает обработку вложенных папок |
--out | записывает результат в отдельный файл |
--dir | записывает результаты в отдельную папку |
-s | включает безопасное удаление chunks, аналог --strip safe |
--strip | управляет удалением метаданных |
--keep | оставляет только выбранные chunks |
-a, --alpha | оптимизирует прозрачные пиксели |
-i, --interlace | управляет interlace-режимом PNG |
-d, --dry-run | показывает результат без записи файлов |
-p, --preserve | сохраняет права и временные атрибуты, где возможно |
-v, --verbose | выводит больше информации |
-q, --quiet | подавляет вывод |
-j, --json | печатает результат в JSON |
-z, --zopfli | использует более медленный, но сильный Zopfli-компрессор |
-t, --threads | ограничивает число потоков |
--sequential | обрабатывает несколько файлов последовательно |
--timeout | ограничивает время, отведенное на оптимизацию |
--max-raw-size | пропускает слишком крупные изображения |
Базовая команда выглядит так:
oxipng image.pngОна обрабатывает файл на настройках по умолчанию и перезаписывает его, если результат меньше исходника. Для осторожной работы лучше сначала использовать --out или --dry-run.
Пример с отдельным выходным файлом:
oxipng --out image.optimized.png image.pngПример проверки без записи результата:
oxipng -d image.pngПример для набора PNG в текущей папке:
oxipng -o 4 --strip safe --alpha *.pngКоманда выше — один из самых практичных вариантов для веб-графики: уровень -o 4 дает более глубокую оптимизацию, --strip safe убирает безопасно удаляемые служебные chunks, а --alpha помогает с прозрачными PNG, где полностью прозрачные пиксели могут хранить ненужные цветовые значения. Параметры Oxipng чувствительны к регистру, а короткие формы можно объединять: например, -s соответствует --strip safe, а -a соответствует --alpha.
Первый запуск: как понять, что программа работает
После установки Oxipng проверяется простой командой:
oxipng --versionили короткой формой:
oxipng -VЕсли программа доступна в системе, терминал выведет номер версии. Если команда не найдена, проблема не в PNG-файле, а в том, что исполняемый файл Oxipng не доступен из текущей командной оболочки.
Следующая проверка — справка:
oxipng --helpОна показывает доступные параметры, синтаксис и ожидаемый формат команды. Для повседневной работы чаще всего достаточно знать несколько опций: -o, --strip, --alpha, --recursive, --out, --dir, --dry-run, --threads.
Типовой безопасный первый запуск лучше делать не на единственном экземпляре важного файла, а на копии:
mkdir optimizedoxipng -o 4 --strip safe --alpha --dir optimized image.pngВ этом примере исходный файл остается на месте, а результат записывается в папку optimized. Если папки нет, Oxipng может создать ее при использовании --dir. При работе с одним конкретным файлом удобнее --out, при работе с группой файлов — --dir.
Уровни оптимизации -o
Параметр -o или --opt управляет уровнем оптимизации. Это не качество картинки и не процент сжатия. Уровень определяет, насколько активно Oxipng будет искать более компактное представление PNG.
Доступные уровни:
| Уровень | Назначение | Практическое применение |
|---|---|---|
-o 0 | минимальная быстрая оптимизация | быстрая проверка, легкая обработка |
-o 1 | быстрый режим с небольшим числом проб | регулярная массовая обработка |
-o 2 | стандартный баланс скорости и результата | повседневное использование |
-o 3 | более тщательный подбор параметров | подготовка изображений к публикации |
-o 4 | сильный практический режим | оптимизация ассетов сайта |
-o 5 | больше фильтров и попыток | финальная обработка важных PNG |
-o 6 | самый глубокий стандартный уровень | когда важен каждый килобайт |
-o max | стабильный псевдоним максимального уровня | скрипты, где не хочется менять команду при развитии пресетов |
Уровень по умолчанию — -o 2. Он быстрый и обычно дает заметное уменьшение веса без чрезмерной нагрузки на процессор. Уровни выше пробуют больше комбинаций, но выигрыш постепенно уменьшается. Это нормальная ситуация для PNG-оптимизации: первые шаги часто дают основной результат, а последние проценты требуют непропорционально больше времени.
Для сайта разумный стартовый вариант:
oxipng -o 4 --strip safe --alpha *.pngДля максимальной оптимизации отдельной важной картинки:
oxipng -o max --strip safe --alpha image.pngДля очень быстрой обработки большой папки:
oxipng -o 2 --strip safe *.pngУровни -o 0—-o 6 отличаются не только силой, но и наборами внутренних параметров: используются разные фильтры, уровни Deflate-сжатия и brute-стратегии. Например, более высокие уровни задействуют больше фильтров и более тяжелую проверку вариантов, а max работает как стабильная ссылка на максимальный preset.
Что происходит с PNG внутри
Чтобы понимать сильные стороны Oxipng, нужно коротко разобрать, что вообще хранится в PNG. Файл состоит из chunks — блоков данных. Есть критические блоки, без которых изображение нельзя корректно открыть, и есть дополнительные: текстовые комментарии, цветовые профили, физическое разрешение, служебные сведения, данные анимации и другие элементы.
Oxipng работает с несколькими направлениями оптимизации:
Пересжатие IDAT-данных.
Основные пиксельные данные PNG находятся в сжатом потоке. Oxipng может пересобрать его более эффективно.Подбор фильтров строк.
PNG применяет фильтры к строкам изображения перед сжатием. Разные фильтры дают разный итоговый размер. Oxipng пробует варианты и выбирает более выгодный.Сокращение глубины цвета, когда это безопасно.
Если изображение можно представить компактнее без изменения результата, программа может уменьшить битность или тип цвета.Работа с палитрой.
Для некоторых PNG полезны преобразования, связанные с индексированными цветами и палитрой.Оптимизация прозрачности.
В полностью прозрачных пикселях видимый цвет не важен. Параметр--alphaиспользует это для лучшего сжатия.Удаление метаданных.
Через--stripможно убрать chunks, которые не нужны для отображения изображения.Управление interlace.
Oxipng умеет удалять, включать или сохранять Adam7 interlacing через--interlace.
Важный момент: lossless-оптимизация не гарантирует огромную экономию на каждом файле. Если PNG уже был хорошо оптимизирован, размер может почти не измениться. Если это сырой скриншот, экспорт из редактора или файл с лишними метаданными, экономия может быть заметной.
Удаление метаданных через --strip
Параметр --strip отвечает за удаление служебных chunks. Это один из самых полезных параметров при подготовке PNG для сайта.
Основные режимы:
| Команда | Что делает |
|---|---|
--strip safe | удаляет безопасно удаляемые chunks, не влияющие на отображение |
-s | короткая форма --strip safe |
--strip all | удаляет все некритические chunks |
--strip bKGD,cHRM | удаляет конкретный список chunks |
--keep eXIf,display | удаляет лишнее, но сохраняет выбранные chunks |
Практический вариант для сайта:
oxipng -o 4 --strip safe image.pngТакой режим подходит для большинства веб-графики: кнопки, иконки, скриншоты, элементы интерфейса, декоративные PNG. Он не должен менять внешний вид изображения, потому что сохраняет chunks, которые влияют на отображение.
Более жесткий вариант:
oxipng -o 4 --strip all image.png--strip all нужно использовать осознанно. Он удаляет все некритические chunks, и для APNG это особенно важно: режим all может превратить APNG в стандартный PNG, потому что удаление chunks анимации нарушает анимированную структуру. Поэтому для анимированных PNG безопаснее начинать с --strip safe.
Точечное удаление:
oxipng --strip tEXt,zTXt,iTXt image.pngТакой подход удобен, когда нужно убрать только текстовые комментарии, но сохранить цветовой профиль или другие данные. Для автоматической обработки сайтов чаще используют не список chunks, а --strip safe, потому что он проще и предсказуемее.
Прозрачность и параметр --alpha
Прозрачные PNG часто содержат скрытые цветовые данные в полностью прозрачных пикселях. Эти цвета не видны пользователю, потому что альфа-канал делает пиксель прозрачным, но при сжатии они все равно могут мешать. Параметр --alpha позволяет Oxipng изменить такие невидимые цветовые значения, чтобы файл лучше сжимался.
Команда:
oxipng -o 4 --alpha icon.pngДля иконок, элементов интерфейса, PNG-кнопок, изображений с прозрачным фоном и UI-графики это один из самых полезных параметров. Визуально картинка обычно остается прежней: прозрачные области как были прозрачными, так и остаются. Но технически --alpha является преобразованием с потерями, потому что невидимые цветовые значения меняются. Это не влияет на обычное отображение, но может быть важно в специфических рабочих процессах, где прозрачные пиксели потом используются как скрытый слой данных, маска, промежуточный ресурс для дальнейшей обработки или источник для нестандартного рендера.
Практический вывод простой:
для обычных веб-иконок
--alphaобычно уместен;для PNG с прозрачным фоном в интерфейсе
--alphaчасто дает дополнительную экономию;для архивных, научных, технических или промежуточных файлов лучше сначала проверить результат;
если важна полная побайтовая сохранность невидимых данных,
--alphaне используют.
Оптимальный веб-сценарий:
oxipng -o 4 --strip safe --alpha *.pngInterlace и параметр --interlace
PNG поддерживает Adam7 interlacing — режим, при котором изображение может постепенно прорисовываться при загрузке. На практике для современных сайтов interlace у PNG часто не нужен, а итоговый файл может стать больше. Oxipng управляет этим через параметр --interlace.
Доступные режимы:
| Команда | Значение |
|---|---|
--interlace off | удалить interlace |
--interlace on | включить Adam7 interlacing |
--interlace keep | сохранить текущий режим файла |
По умолчанию Oxipng ориентирован на удаление interlace. Для большинства сайтов это разумно: современная загрузка изображений, lazy loading, CDN и браузерное кэширование обычно важнее старого эффекта постепенной прорисовки.
Пример:
oxipng -o 4 --interlace off image.pngСохранить текущий режим:
oxipng -o 4 --interlace keep image.pngВключать interlace стоит только тогда, когда это осознанное требование. В справке Oxipng отражен практический минус: interlacing может заметно увеличить размер оптимизированного изображения.
Пакетная обработка PNG
Oxipng особенно силен в пакетной обработке. Один файл можно оптимизировать любым графическим инструментом, но когда изображений много, командная строка выигрывает.
Оптимизация всех PNG в текущей папке:
oxipng -o 4 --strip safe --alpha *.pngОбработка одного каталога рекурсивно:
oxipng -o 4 --strip safe --alpha -r ./imagesРекурсивный режим -r или --recursive проходит по вложенным папкам и ищет файлы с расширениями .png и .apng. Это удобно для проектов, где изображения лежат в структуре вроде:
public/ images/ icons/ screenshots/ ui/src/ assets/ png/Сохранение результатов в отдельную папку:
oxipng -o 4 --strip safe --alpha --dir optimized *.pngДля одного файла с новым именем:
oxipng -o 4 --strip safe --alpha --out logo.optimized.png logo.pngПробный запуск без записи:
oxipng -o 4 --strip safe --alpha --dry-run *.pngили коротко:
oxipng -o 4 --strip safe --alpha -d *.png--dry-run полезен перед массовой обработкой. Он показывает потенциальный результат, но не меняет файлы. Это правильный первый шаг, если папка большая или изображения используются в рабочем проекте.

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

Практическая инструкция: оптимизация PNG для сайта
Для сайта чаще всего нужна не максимальная теоретическая компрессия, а стабильный баланс: хорошее уменьшение размера, отсутствие визуальных изменений, предсказуемая обработка и нормальная скорость. Поэтому базовая команда выглядит так:
oxipng -o 4 --strip safe --alpha *.pngРазбор команды:
| Фрагмент | Значение |
|---|---|
oxipng | запуск программы |
-o 4 | достаточно глубокая оптимизация |
--strip safe | безопасное удаление лишних chunks |
--alpha | улучшение сжатия PNG с прозрачностью |
*.png | все PNG в текущей папке |
Пошаговый сценарий:
Шаг 1. Перейти в папку с изображениями
cd public/imagesШаг 2. Проверить, какие PNG находятся в папке
Linux/macOS:
ls *.pngWindows PowerShell:
Get-ChildItem *.pngШаг 3. Выполнить пробный запуск
oxipng -o 4 --strip safe --alpha --dry-run *.pngНа этом шаге Oxipng покажет, какие файлы можно уменьшить, но ничего не перезапишет.
Шаг 4. Выполнить реальную оптимизацию
oxipng -o 4 --strip safe --alpha *.pngШаг 5. Проверить результат
Проверка размера в Linux/macOS:
ls -lh *.pngПроверка размера в PowerShell:
Get-ChildItem *.png | Select-Object Name, LengthШаг 6. Открыть изображения визуально
Это особенно важно для:
логотипов с прозрачностью;
иконок на прозрачном фоне;
скриншотов интерфейса;
изображений с мелким текстом;
PNG, экспортированных из дизайнерских программ;
файлов, где важны цветовые профили.
Для обычного сайта после такой проверки команду можно добавить в рабочий процесс. Например, перед публикацией новой статьи с большим количеством скриншотов можно обработать папку изображений один раз, а затем загрузить уже облегченные PNG.
Обработка вложенных папок
Когда изображения лежат в нескольких подпапках, удобен --recursive:
oxipng -r -o 4 --strip safe --alpha ./public/imagesВ таком режиме Oxipng проходит по дереву каталогов и обрабатывает PNG/APNG внутри. Это подходит для проектов, где изображения разнесены по типам:
public/images/iconspublic/images/screenshotspublic/images/bannerspublic/images/uiЕсли нужно ограничить нагрузку на компьютер, добавляют --threads:
oxipng -r -o 4 --strip safe --alpha --threads 4 ./public/imagesПараметр --threads задает максимальное число потоков. Oxipng использует многопоточность и для оценки оптимизаций, и для параллельной обработки нескольких файлов, но иногда полезно ограничить CPU: например, если параллельно идет сборка проекта, экспорт видео, работа IDE или другая тяжелая задача.
Если нужно, чтобы файлы обрабатывались строго последовательно, используется:
oxipng -r -o 4 --strip safe --alpha --sequential ./public/imagesТакой режим нужен не для скорости, а для предсказуемого порядка обработки и более спокойного вывода в логах.
Сохранение результата без перезаписи исходников
По умолчанию Oxipng ориентирован на оптимизацию файла на месте. Для рабочих проектов это нормально, если файлы лежат в Git и изменения можно откатить. Но при первичной проверке лучше сохранять результат отдельно.
Для одного файла:
oxipng -o 4 --strip safe --alpha --out logo.min.png logo.pngДля набора файлов:
oxipng -o 4 --strip safe --alpha --dir optimized *.pngНужно учитывать особенность --dir: при рекурсивной обработке он записывает результаты в указанную папку, но не сохраняет исходную структуру вложенных каталогов. Поэтому для больших проектов безопаснее сначала прогонять --dry-run, затем работать с Git или отдельной копией директории.
Практичная схема для сайта:
Сделать копию папки
images.Запустить Oxipng на копии.
Сравнить общий размер папок.
Открыть несколько изображений.
Заменить исходники оптимизированными файлами.
Зафиксировать изменения в Git.
JSON-вывод для автоматизации
Параметр --json или -j нужен не человеку, а скриптам. Он выводит результат в машинно-читаемом виде. Это удобно, если нужно автоматически анализировать экономию, строить отчеты, проверять пороги или интегрировать Oxipng в собственный инструмент.
Пример:
oxipng -o 4 --strip safe --alpha --json image.pngСценарии применения JSON:
проверка в CI, что PNG действительно оптимизированы;
сбор статистики по экономии размера;
вывод отчета в админке;
интеграция с Python/Node.js-скриптом;
автоматическое отклонение слишком тяжелых PNG.
Например, можно настроить процесс так, чтобы новая картинка не попадала в репозиторий, если после обработки Oxipng она уменьшается больше чем на заданный процент. Это означает, что файл был добавлен неоптимизированным и требует обработки.
Zopfli-сжатие
Oxipng поддерживает режим Zopfli через параметр -z или --zopfli. Это более тяжелый вариант сжатия, который может дать меньший PNG, но требует значительно больше времени.
Команда:
oxipng -o max --zopfli --strip safe --alpha image.pngДля контроля числа итераций используется --zi:
oxipng -o max --zopfli --zi 15 image.pngДля остановки после заданного числа итераций без улучшения применяется --ziwi:
oxipng -o max --zopfli --zi 50 --ziwi 5 image.pngZopfli уместен не всегда. Для ежедневной обработки папки сайта он может быть слишком медленным. Его логичнее использовать для:
финальной оптимизации редко меняющихся изображений;
PNG, которые будут долго лежать на сайте и часто скачиваться;
больших наборов статичных ассетов перед релизом;
файлов, где каждый килобайт действительно важен;
CI-задач, которые запускаются не при каждом локальном сохранении, а на финальной сборке.
Для обычной работы команда -o 4 --strip safe --alpha чаще практичнее. Она дает хороший баланс без чрезмерной задержки.
Расширенные параметры фильтрации
PNG использует фильтры строк, чтобы улучшить последующее сжатие. Oxipng позволяет управлять ими через -f или --filters.
Пример:
oxipng -o 4 -f 0,7,8,9 image.pngМожно указывать диапазон:
oxipng -o 4 -f 0-3 image.pngТипы фильтров включают классические PNG delta filters и эвристические стратегии. В Oxipng доступны варианты вроде None, Sub, Up, Average, Paeth, а также стратегии MinSum, Entropy, Bigrams, BigEnt, Brute. Brute-режим может дать хороший результат, но он медленнее, потому что пытается найти минимальный сжатый размер более прямым перебором.
Для большинства пользователей вручную задавать --filters не нужно. Уровни -o уже включают разумные наборы фильтров. Ручная настройка нужна тогда, когда:
оптимизируется большой набор похожих изображений;
нужно повторить конкретный результат;
проводится тестирование разных стратегий;
создается собственный pipeline оптимизации;
требуется выжать максимум из одного типа PNG.
Ограничение крупных файлов через --max-raw-size
Некоторые PNG выглядят небольшими на диске, но после распаковки занимают много памяти. Oxipng умеет ограничивать обработку через --max-raw-size.
Пример:
oxipng -r -o 4 --max-raw-size 50MB ./imagesЕсли изображение превышает лимит по распакованному размеру или размеру файла, оно будет пропущено. Это полезно в автоматических процессах, где нельзя допустить, чтобы один огромный PNG надолго занял CPU и память.
Сценарии применения:
обработка пользовательских загрузок;
CI/CD на ограниченном runner;
пакетная оптимизация старого архива изображений;
серверная обработка ассетов;
работа на слабом ноутбуке;
автоматизация, где время выполнения должно быть ограничено.
Дополнительно можно использовать --timeout:
oxipng -o max --timeout 30 image.pngЭтот параметр ограничивает время, которое Oxipng тратит на оптимизацию, но уже начатая тяжелая операция может не прерваться мгновенно. Поэтому --timeout полезен как защитный механизм, но не как точный таймер.
Что делать с 16-битными PNG
Параметр --scale16 принудительно уменьшает 16-битные изображения до 8 бит на канал. Это может сильно уменьшить размер, но это уже операция с потерями. Для обычных веб-скриншотов 16 бит на канал чаще всего не нужны, но для технических, медицинских, научных, цветокоррекционных или архивных изображений такое преобразование может быть недопустимым.
Команда:
oxipng --scale16 image.pngБез --scale16 Oxipng снижает глубину только тогда, когда это можно сделать без потерь. С --scale16 пользователь явно разрешает потерю 16-битной точности ради уменьшения файла.
Практический подход:
для веб-скриншотов — можно рассмотреть после проверки;
для иконок — обычно 16 бит не нужны;
для фотографической обработки — лучше не применять автоматически;
для научных и технических данных — не использовать без понимания последствий;
для массовой обработки чужих файлов — не включать по умолчанию.
Работа с APNG
Oxipng поддерживает APNG, но с ограничениями. APNG — это анимированный PNG, где кроме обычных chunks есть данные кадров. Программа может выполнять recompression, refiltering и alpha optimization для кадров, но часть трансформаций отключается, потому что анимационная структура требует осторожности.
Для APNG особенно важно не использовать бездумно:
oxipng --strip all animation.apngРежим --strip all может разрушить анимационную структуру и превратить APNG в обычный PNG. Для анимированных PNG безопаснее начинать с:
oxipng -o 4 --strip safe animation.apngили без удаления chunks:
oxipng -o 4 animation.apngAPNG в Oxipng — это не полноценный редактор анимации. Программа не меняет тайминги кадров, не удаляет кадры, не объединяет похожие кадры вручную и не предоставляет визуального редактора. Ее задача — аккуратно оптимизировать файл в рамках допустимых преобразований.
Oxipng для WordPress, Laravel и статических сайтов
Для сайтов Oxipng полезен в первую очередь как локальный этап подготовки изображений. Он не зависит от CMS и одинаково хорошо вписывается в разные проекты.
WordPress
В WordPress PNG обычно встречаются в:
wp-content/uploads/wp-content/themes/theme-name/assets/wp-content/plugins/plugin-name/assets/Практический сценарий:
oxipng -r -o 4 --strip safe --alpha ./wp-content/themes/theme-name/assetsОбрабатывать всю папку uploads нужно осторожно: там могут быть изображения, которые уже оптимизированы, а также файлы разных форматов. Oxipng работает с PNG/APNG, но перед массовой обработкой лучше сделать резервную копию или использовать Git/архив.
Laravel
В Laravel типичные папки:
public/imagesresources/imagesresources/assetsКоманда:
oxipng -r -o 4 --strip safe --alpha ./public/imagesЕсли проект использует Vite, изображения могут лежать в resources. Тогда Oxipng можно запускать до сборки или после экспорта ассетов, в зависимости от структуры проекта.
React, Vue, Astro, Next.js
Для frontend-проектов PNG часто лежат в:
src/assetspublicstaticКоманда:
oxipng -r -o 4 --strip safe --alpha ./src/assetsДля public:
oxipng -r -o 4 --strip safe --alpha ./publicВ таких проектах Oxipng особенно полезен для PNG-иконок, иллюстраций интерфейса, статичных скриншотов и изображений, которые попадают в bundle или копируются в директорию сборки.
Hugo, Jekyll, статические сайты
Для статических генераторов Oxipng можно запускать перед публикацией:
oxipng -r -o 4 --strip safe --alpha ./static/imagesили после генерации:
oxipng -r -o 4 --strip safe --alpha ./public/imagesВыбор зависит от того, где хранятся исходники и где появляется финальная папка сайта.
Git и pre-commit
Oxipng хорошо подходит для pre-commit-хука. Смысл простой: разработчик добавляет PNG в проект, а перед коммитом программа автоматически оптимизирует файл. В репозиторий не попадают лишние килобайты, а команда не забывает обрабатывать изображения вручную.
Пример конфигурации .pre-commit-config.yaml:
repos: - repo: rev: v10.0.0 hooks: - id: oxipng args: ["-o", "4", "--strip", "safe", "--alpha"]Такая схема удобна для командной разработки. Дизайнер или разработчик кладет PNG в проект, Git запускает hook, Oxipng сжимает файл, а в коммит попадает уже оптимизированная версия. В README Oxipng есть отдельный пример такой интеграции, а сама программа используется в инструментах вроде ImageOptim, Squoosh, FileOptimizer, Curtail, pyoxipng и jSquash.
Преимущества pre-commit-сценария:
изображения оптимизируются до попадания в репозиторий;
не нужно вручную запускать команду каждый раз;
настройки одинаковые у всей команды;
уменьшается размер истории Git;
легче поддерживать порядок в ассетах;
PNG не раздувают проект незаметно.
Минус тоже есть: если в коммит добавляется много крупных PNG, hook может замедлить фиксацию изменений. В таком случае можно использовать более быстрый уровень -o 2 в pre-commit, а -o 4 или -o max запускать перед релизом.
Docker-сценарии
Oxipng можно запускать в контейнере. Это удобно, когда не хочется настраивать окружение на рабочей машине или нужно одинаковое поведение в CI. Команда выглядит так:
docker run --rm -v $(pwd):/work ghcr.io/oxipng/oxipng -o 4 /work/file.pngТакой запуск монтирует текущую папку в контейнер как /work и обрабатывает файл внутри нее. Docker-образ поддерживает linux/amd64 и linux/arm64.
Практический вариант для папки:
docker run --rm -v $(pwd):/work ghcr.io/oxipng/oxipng -r -o 4 --strip safe --alpha /work/imagesDocker особенно уместен:
в CI/CD;
на сервере сборки;
в команде, где не хотят вручную ставить одинаковые версии инструментов;
в одноразовых задачах;
при обработке проекта в изолированном окружении.
На Windows нужно внимательно относиться к путям и монтированию каталогов. В PowerShell синтаксис может отличаться от Linux/macOS, поэтому команды с $(pwd) иногда требуют адаптации.
Oxipng как библиотека
Oxipng можно использовать не только как CLI, но и как Rust-библиотеку. Это нужно, если оптимизация PNG встраивается прямо в программу: например, в генератор ассетов, серверную утилиту, desktop-инструмент, pipeline обработки изображений или собственный статический генератор.
Типовая идея такая:
В проект добавляется зависимость
oxipng.Создается структура настроек.
Вызывается функция оптимизации.
На вход передается путь к PNG.
На выходе получается оптимизированный файл или данные о результате.
Для библиотечного использования важно отключать ненужные features, если не нужен CLI-бинарник. В конфигурации можно оставить только нужные возможности, например parallel, zopfli или filetime. Это уменьшает лишнюю нагрузку и делает зависимость более аккуратной для конкретного проекта.
Для обычного пользователя библиотечный режим не нужен. Он важен разработчикам, которые хотят не запускать внешний процесс, а работать с Oxipng из своего Rust-кода.
Примеры команд для разных задач
| Задача | Команда |
|---|---|
| Сжать один PNG | oxipng image.png |
| Сжать один PNG глубже | oxipng -o 4 image.png |
| Безопасная оптимизация для сайта | oxipng -o 4 --strip safe --alpha image.png |
| Все PNG в папке | oxipng -o 4 --strip safe --alpha *.png |
| Рекурсивная обработка | oxipng -r -o 4 --strip safe --alpha ./images |
| Проверить без записи | oxipng -o 4 --strip safe --alpha --dry-run *.png |
| Сохранить в другой файл | oxipng -o 4 --out result.png source.png |
| Сохранить в другую папку | oxipng -o 4 --dir optimized *.png |
| Удалить безопасные chunks | oxipng -s image.png |
| Удалить все некритические chunks | oxipng --strip all image.png |
| Оставить только важное для отображения | oxipng --keep display image.png |
| Оптимизировать прозрачность | oxipng --alpha image.png |
| Максимальный уровень | oxipng -o max image.png |
| Zopfli-режим | oxipng -o max --zopfli image.png |
| Ограничить потоки | oxipng -o 4 --threads 4 *.png |
| Последовательная обработка | oxipng -o 4 --sequential *.png |
| JSON-вывод | oxipng -o 4 --json image.png |
| Сохранить атрибуты | oxipng -o 4 --preserve image.png |
| Убрать interlace | oxipng -o 4 --interlace off image.png |
| Сохранить interlace как есть | oxipng -o 4 --interlace keep image.png |
Какие файлы лучше всего сжимаются
Oxipng не дает одинаковый процент экономии на всех PNG. Результат зависит от того, как файл был создан.
Хорошо подходят:
скриншоты интерфейсов;
PNG из графических редакторов без оптимизации;
изображения с прозрачным фоном;
иконки;
UI-элементы;
экспортированные PNG из Figma, Photoshop, GIMP, Inkscape;
PNG с лишними текстовыми chunks;
изображения из старых CMS;
ассеты, которые много раз пересохранялись.
Слабее уменьшаются:
уже оптимизированные PNG;
файлы, ранее прошедшие через ImageOptim, Squoosh или похожие инструменты;
маленькие иконки, где почти нечего сокращать;
PNG с уже удачно подобранной палитрой и фильтрами;
изображения, где основной объем неизбежен из-за сложной пиксельной структуры.
Если Oxipng пишет, что файл уже оптимален или уменьшение минимальное, это не ошибка. Иногда PNG действительно близок к лучшему размеру при сохранении исходного качества.
Что Oxipng не делает
Oxipng важно воспринимать правильно. Это не редактор изображений и не универсальный просмотрщик.
Программа не делает:
изменение размера изображения;
кадрирование;
поворот;
цветокоррекцию;
ретушь;
удаление фона;
добавление текста;
пакетное переименование;
конвертацию JPEG в PNG;
конвертацию PNG в WebP или AVIF;
визуальное сравнение до/после;
ручное редактирование прозрачности;
настройку качества как в JPEG;
работу через графические кнопки.
Oxipng не подходит для сценария открыл картинку, подвигал ползунок качества, посмотрел результат. В PNG без потерь нет привычного JPEG-ползунка качества. Здесь управляют уровнем оптимизации, фильтрами, метаданными, interlace, прозрачностью и сжатием.
Сравнение с аналогами
OptiPNG
OptiPNG — классический PNG-оптимизатор командной строки. Он близок по назначению: тоже ориентирован на lossless-оптимизацию PNG и подбор параметров сжатия. Oxipng исторически вырос как современная переработка подхода OptiPNG с фокусом на Rust и многопоточность.
OptiPNG остается понятным и проверенным инструментом, но в современных пайплайнах Oxipng часто удобнее за счет скорости, параллельной обработки, интеграций и активного развития CLI. Если в проекте уже давно используется OptiPNG и результат устраивает, срочной замены может не требоваться. Если нужно быстро обрабатывать много файлов в CI, Oxipng выглядит практичнее.
pngcrush
pngcrush — старый и гибкий инструмент для PNG-оптимизации. Его сильная сторона — множество вариантов обработки и тонкая настройка. Минус — менее дружелюбный CLI и более тяжелое восприятие для тех, кому нужна простая повторяемая команда.
pngcrush уместен для экспериментов и случаев, где нужно вручную управлять множеством PNG-параметров. Oxipng удобнее там, где нужна лаконичная команда и быстрый результат без долгого подбора.
ZopfliPNG
ZopfliPNG делает ставку на очень сильное Deflate-совместимое сжатие. Он может дать хороший размер, но обычно требует больше времени. В Oxipng Zopfli доступен как режим через --zopfli, поэтому не обязательно выбирать отдельный инструмент, если Zopfli нужен только иногда.
Для ежедневной обработки папок лучше обычный режим Oxipng. Для финального сжатия отдельных важных PNG можно использовать Zopfli-режим.
pngquant
pngquant — не прямой lossless-аналог. Он уменьшает PNG за счет квантования цветов, то есть может менять изображение. Результат часто намного меньше, особенно для сложных PNG, но это уже сжатие с потерями. Его используют, когда размер важнее строгой побайтовой точности цветов.
Практичный подход: сначала pngquant для допустимого уменьшения палитры, потом Oxipng для дополнительной lossless-оптимизации результата. Такой сценарий хорош для веба, но не подходит для файлов, где нельзя менять цвета.
ImageOptim
ImageOptim — удобное приложение для macOS с графическим интерфейсом. Оно подходит тем, кто хочет перетаскивать изображения мышью и не работать с терминалом. Внутри такие инструменты часто объединяют несколько оптимизаторов, поэтому для ручной обработки на Mac ImageOptim проще.
Oxipng выигрывает в автоматизации. Его проще добавить в скрипт, pre-commit, CI/CD, Docker и сборку проекта. ImageOptim удобнее для разовой ручной работы.
Squoosh
Squoosh — веб-приложение для оптимизации изображений. Оно удобно тем, что показывает визуальный результат и позволяет работать с разными форматами. Для пользователя, который хочет сжать пару картинок через браузер, Squoosh проще.
Oxipng лучше там, где нужна локальная пакетная обработка PNG, повторяемая команда и интеграция в проект. Squoosh — это ручной визуальный инструмент, Oxipng — рабочий CLI-инструмент для потока.
FileOptimizer
FileOptimizer — Windows-программа для оптимизации разных типов файлов. Она шире по охвату, потому что работает не только с PNG. Это удобно, когда нужно сжимать разные форматы через одну оболочку.
Oxipng уже по назначению, зато точнее вписывается в задачи PNG-оптимизации и автоматизации. Если нужно оптимизировать все подряд через GUI, FileOptimizer удобнее. Если нужна контролируемая оптимизация PNG в проекте, Oxipng практичнее.
| Программа | Интерфейс | Тип обработки | Пакетная работа | Автоматизация | Где удобнее |
|---|---|---|---|---|---|
| OptiPNG | CLI | lossless PNG | есть | возможна | классическая PNG-оптимизация |
| pngcrush | CLI | lossless PNG | есть | возможна | тонкая настройка PNG |
| ZopfliPNG | CLI | lossless PNG | есть | возможна | максимальное сжатие ценой времени |
| pngquant | CLI/GUI-обертки | lossy PNG | есть | возможна | сильное уменьшение веса за счет палитры |
| ImageOptim | GUI | разные оптимизаторы | есть | ограниченная | ручная работа на macOS |
| Squoosh | Web UI | разные форматы | ограниченная | слабая | ручная визуальная оптимизация |
| FileOptimizer | GUI | разные форматы | есть | частичная | Windows и разные типы файлов |
История версий программы
Oxipng развивается не как одноразовая утилита, а как живой инструмент с изменениями в CLI, API, алгоритмах сжатия, обработке альфа-канала, APNG, Zopfli, фильтрах и производительности.
Ранний этап и версия 1.x
Ветка 1.x закрепила Oxipng как самостоятельный инструмент. Важным изменением стало удаление C-зависимости miniz и переход на Rust-реализацию, что улучшило скорость распаковки и упростило внутреннюю архитектуру. Также менялись presets оптимизации: уровни стали активнее проверять фильтры и варианты alpha-optimization.
Для пользователя это означало более быстрый и предсказуемый инструмент. Уже на этом этапе программа была не просто оберткой, а самостоятельным PNG-оптимизатором с собственной логикой пресетов.
Ветка 2.x
В 2.x появились изменения, связанные с ошибками, производительностью и дополнительными возможностями. Важным параметром стал --keep, который работает как обратный вариант --strip: пользователь задает, какие chunks нужно оставить, а остальное удаляется. Также развивалась возможность ограничивать время, затрачиваемое на оптимизационные прогоны.
С практической точки зрения это сделало Oxipng удобнее в автоматизации: можно точнее управлять метаданными и ограничивать тяжелые операции.
Ветка 3.x
В 3.x произошел внутренний рефакторинг публичных структур и добавление -o max. Псевдоним max важен для скриптов: вместо привязки к конкретному числу можно указывать максимальный уровень оптимизации. Если логика максимального preset меняется, команда остается читаемой и понятной.
Также в этой ветке усиливалась детерминированность вывода. Для автоматических процессов это важно: один и тот же входной файл должен давать предсказуемый результат.
Ветка 4.x
В 4.x развивалась работа с зависимостями и optional-компонентами. Для пользователей библиотеки стало важным то, что libdeflater и zopfli можно использовать более гибко. Также улучшалась работа на разных архитектурах и исправлялись проблемы с рекурсивным обходом.
Для CLI-пользователя эти изменения менее заметны, но они укрепили Oxipng как инструмент, который можно не только запускать вручную, но и встраивать в другие решения.
Ветка 5.x
В 5.x добавили --ng, который запрещает переход к grayscale, и улучшили сохранение временных атрибутов через --preserve. Также были оптимизации unfiltering и copying, исправления race condition и обработка битых файлов.
Эти изменения важны для пакетной работы: чем лучше программа ведет себя на нестандартных и поврежденных файлах, тем надежнее ее можно запускать на больших архивах.
Ветка 6.x
В 6.x появился параметр --check/-c, обновились зависимости, была затронута безопасность зависимостей и Rust edition. Ветка также включала исправление проблемы, при которой Zopfli-режим мог создавать поврежденные изображения.
Для пользователя это этап стабилизации: Zopfli и внутренние компоненты стали безопаснее и надежнее.
Ветка 7.x
В 7.x произошел крупный сдвиг: libdeflater стал стандартным вариантом, были переработаны presets, появились новые filter strategies, возможность задавать уровень libdeflate-сжатия и опциональная dockerization. Также улучшились alpha reductions, deinterlace для 8-битных изображений и общий результат уменьшения размера.
Это один из важных этапов развития Oxipng как современного PNG-оптимизатора. Программа стала сильнее не только по скорости, но и по качеству подбора вариантов.
Ветка 8.x
В 8.x переработали alpha optimization, исправили grayscale depth reduction с tRNS pixel, улучшили fast mode с zopfli, доработали interlacing и отображение формата, а также ускорили colorspace reduction.
Для обычного пользователя это означает более аккуратную работу с прозрачностью и цветовым представлением PNG.
Ветка 9.x
В 9.x появились базовая поддержка APNG, --scale16, обработка нескольких файлов в параллельном режиме, улучшения reductions, рекомпрессия iCCP chunks, поддержка glob patterns в Windows и более тихий стандартный вывод. Также default-поведение стало удалять interlacing, а для сохранения режима используется -i keep.
В 9.1.x развивались APNG-оптимизация, --zi, --sequential, улучшение Zopfli-производительности, снижение потребления памяти, --keep display, man page generation и исправления wildcard-поведения на Windows.
Ветка 10.x
В 10.x изменились некоторые короткие параметры CLI: короткий Zopfli-флаг стал -z, прежний --pretend/-P заменен на --dry-run/-d, а interlace-режимы стали записываться как on, off, keep. Появились --ziwi, --max-raw-size, --brute-level, --brute-lines, цветной help output и улучшения памяти для fast mode.
В 10.1.x добавлен JSON-вывод, изменен стандартный вывод с счетчиком файлов и summary, улучшена производительность Bigrams, доработано поведение --np, улучшена работа с ICC-профилями и уменьшен размер бинарных файлов.
Производительность на практике
Oxipng быстрый не потому, что магически сжимает PNG одним приемом, а потому что умеет эффективно распараллеливать работу. Он может использовать несколько логических ядер процессора, проверять разные варианты оптимизации и обрабатывать несколько файлов параллельно.
На практике скорость зависит от:
размера PNG;
количества файлов;
выбранного уровня
-o;наличия прозрачности;
количества фильтров;
включенного или выключенного Zopfli;
числа потоков;
скорости диска;
того, насколько файл уже оптимизирован.
Для повседневной работы стоит держаться трех режимов:
| Сценарий | Команда | Комментарий |
|---|---|---|
| Быстро и безопасно | oxipng -o 2 --strip safe *.png | хорошее решение для частого запуска |
| Баланс для сайта | oxipng -o 4 --strip safe --alpha *.png | лучший практический вариант |
| Максимум для релиза | oxipng -o max --zopfli --strip safe --alpha *.png | медленнее, использовать выборочно |
Если запускать Oxipng на ноутбуке во время другой работы, разумно ограничить потоки:
oxipng -o 4 --threads 4 --strip safe --alpha *.pngЕсли обработка идет на CI-runner, можно оставить автоматическое число потоков или задать его явно, чтобы не мешать другим задачам.
Безопасность обработки
Oxipng работает локально. Это важный плюс для файлов, которые не должны уходить в браузерные онлайн-сервисы: клиентские скриншоты, закрытые интерфейсы, внутренние схемы, изображения из админок, материалы до публикации.
Однако безопасность результата зависит от выбранных параметров. Наиболее осторожная команда:
oxipng -o 2 image.pngОна не удаляет chunks через --strip, не включает alpha-optimization и просто оптимизирует PNG.
Более практичная веб-команда:
oxipng -o 4 --strip safe --alpha image.pngОна обычно подходит для сайта, но уже включает изменение невидимых цветовых значений прозрачных пикселей.
Агрессивные параметры:
oxipng -o max --zopfli --strip all --scale16 image.pngТакой вариант нельзя применять вслепую ко всем файлам. --strip all может удалить важные некритические chunks, а --scale16 снижает точность 16-битных изображений. Это уже не универсальная safe-команда.
Частые ошибки при работе с Oxipng
Команда oxipng не найдена
Терминал пишет ошибку, потому что система не видит исполняемый файл. Нужно проверить путь, переменную PATH и то, из какой оболочки запускается программа. На Windows часто бывает, что программа лежит в папке, но эта папка не добавлена в PATH.
Запуск не в той папке
Команда:
oxipng *.pngобрабатывает PNG только в текущей директории. Если пользователь находится не там, где лежат изображения, программа не найдет нужные файлы. Нужно перейти в папку через cd или указать полный путь.
Wildcard ведет себя не так, как ожидалось
В разных оболочках *.png обрабатывается по-разному. В Linux/macOS wildcard чаще раскрывает сама оболочка. В Windows поведение зависит от cmd, PowerShell и поддержки glob patterns. Если возникают проблемы, можно указывать путь к папке и использовать -r.
Ожидание огромной экономии на каждом PNG
Если файл уже был оптимизирован, Oxipng может уменьшить его на доли процента или вообще не перезаписать. Это нормальное поведение. Программа не обязана находить экономию там, где ее почти нет.
Бездумное использование --strip all
--strip all может удалить chunks, которые важны для конкретного сценария. Особенно осторожно нужно работать с APNG, цветовыми профилями и файлами, где метаданные имеют значение.
Использование --alpha для файлов, где важны скрытые данные
Для обычных прозрачных иконок --alpha полезен. Но если полностью прозрачные пиксели используются как скрытый слой информации, этот параметр может быть нежелателен.
Максимальный уровень для ежедневной работы
-o max --zopfli не нужен для каждого сохранения PNG. Он может тормозить workflow. Лучше использовать -o 2 или -o 4 в ежедневной работе, а тяжелые режимы оставлять для финальной оптимизации.
Практические сценарии использования
Оптимизация скриншотов для обзора программы
Скриншоты часто сохраняются в PNG и могут занимать много места. Перед загрузкой на сайт их можно обработать так:
oxipng -o 4 --strip safe screenshots/*.pngЕсли скриншоты с прозрачностью:
oxipng -o 4 --strip safe --alpha screenshots/*.pngОптимизация иконок интерфейса
oxipng -o 4 --strip safe --alpha icons/*.pngИконки часто содержат прозрачность, поэтому --alpha здесь уместен.
Подготовка PNG перед публикацией лендинга
oxipng -r -o 4 --strip safe --alpha ./public/imagesПосле обработки нужно проверить визуально важные изображения: логотип, hero-графику, кнопки, схемы.
Быстрая проверка папки без изменений
oxipng -r -o 4 --strip safe --alpha --dry-run ./public/imagesТак можно увидеть потенциальную экономию до записи.
Финальный релиз статических ассетов
oxipng -r -o max --zopfli --strip safe --alpha ./dist/assetsЭтот вариант лучше запускать не при каждом сохранении, а перед публикацией.
Рекомендованные настройки
Для большинства задач не нужно вручную перебирать все параметры. Достаточно нескольких готовых профилей.
| Профиль | Команда | Когда использовать |
|---|---|---|
| Осторожный | oxipng -o 2 image.png | первый запуск, важные файлы |
| Веб-базовый | oxipng -o 4 --strip safe image.png | скриншоты и графика без прозрачности |
| Веб-прозрачность | oxipng -o 4 --strip safe --alpha image.png | иконки, UI, прозрачные PNG |
| Массовый | oxipng -r -o 4 --strip safe --alpha ./images | папка сайта |
| Быстрый | oxipng -o 2 --strip safe *.png | частый запуск |
| Финальный | oxipng -o max --zopfli --strip safe --alpha image.png | отдельные важные файлы |
| Проверочный | oxipng -o 4 --dry-run image.png | оценка без записи |
Для сайта оптимальная команда чаще всего такая:
oxipng -o 4 --strip safe --alpha *.pngОна достаточно сильная, но не чрезмерная. Она не превращает процесс оптимизации в долгий brute-force и при этом обычно убирает лишний вес.
Плюсы Oxipng
Сжимает PNG без визуальной потери качества.
Поддерживает APNG в ограниченном, но полезном режиме.
Работает быстро за счет многопоточности.
Подходит для пакетной обработки.
Хорошо встраивается в Git, pre-commit, CI/CD и Docker.
Позволяет управлять метаданными через
--stripи--keep.Имеет практичный параметр
--alphaдля прозрачных PNG.Поддерживает уровни оптимизации от быстрых до максимальных.
Может выводить JSON для автоматизации.
Работает локально, без отправки изображений в онлайн-сервис.
Может использоваться как Rust-библиотека.
Подходит для веб-разработчиков, администраторов сайтов и командных проектов.
Минусы Oxipng
Нет графического интерфейса.
Нет визуального предпросмотра.
Не подходит тем, кто не хочет работать с терминалом.
Не конвертирует изображения в WebP, AVIF, JPEG.
Не изменяет размер и не редактирует изображение.
Максимальные режимы могут быть медленными.
--alphaтехнически меняет невидимые цветовые данные прозрачных пикселей.--strip allтребует понимания PNG chunks.APNG поддерживается не как полноценный редактор анимации.
Для разовой ручной обработки новичку может быть проще GUI-инструмент.
Для кого подходит Oxipng
Oxipng подходит тем, кто регулярно работает с PNG и хочет контролировать процесс.
Веб-мастер
Для сайта программа полезна при подготовке скриншотов, иллюстраций, иконок и PNG-графики. Меньший размер файлов помогает снизить вес страниц и ускорить загрузку.
Frontend-разработчик
Oxipng удобно добавлять в npm-скрипты, pre-commit, CI/CD или build pipeline. Он хорошо работает с папками public, assets, static, src/assets.
Backend-разработчик
Программа подходит для серверных задач: обработка загруженных PNG, подготовка ассетов, генерация изображений в фоне, автоматическая оптимизация файлов.
Разработчик Rust
Oxipng можно подключать как библиотеку и использовать внутри собственных приложений. Это особенно полезно, если нужен не внешний CLI-вызов, а прямой контроль из кода.
Автор технической документации
Скриншоты интерфейсов часто занимают много места. Oxipng помогает уменьшить папки документации без ухудшения читаемости.
SEO-специалист
При аудите сайта PNG часто оказываются тяжелыми. Oxipng позволяет быстро обработать набор файлов и уменьшить общий вес страниц.
Администратор сайта
Если на сайте много старых PNG, можно обработать их локально, проверить результат и загрузить облегченные файлы.
Для кого Oxipng не лучший выбор
Oxipng не подойдет пользователю, которому нужен визуальный интерфейс и кнопка «сжать». Если человек не хочет открывать терминал, ему проще использовать ImageOptim, Squoosh или FileOptimizer.
Программа также не лучший выбор, если основная задача — конвертировать изображения в современные форматы. Для WebP и AVIF нужны другие инструменты. Oxipng работает с PNG/APNG и не пытается быть универсальным конвертером.
Если допустима потеря качества ради минимального размера, pngquant, WebP или AVIF могут дать более сильную экономию. Oxipng сохраняет визуальную точность PNG, поэтому не всегда способен уменьшить файл так же радикально, как lossy-инструменты.
Итоговая оценка
Oxipng — сильный инструмент для тех, кто понимает ценность автоматизации. Его главное преимущество не в красивом интерфейсе, а в том, что одну и ту же команду можно надежно повторять на одном файле, папке, проекте, сервере сборки или pre-commit-хуке.
Для ручной разовой обработки одного изображения проще взять приложение с графическим интерфейсом. Для рабочего сайта, репозитория, документации, frontend-проекта или регулярной оптимизации PNG Oxipng заметно практичнее. Он сжимает PNG без визуальной потери качества, умеет работать с прозрачностью, метаданными, interlace, Zopfli, потоками, APNG и JSON-выводом.
Оптимальная команда для большинства веб-задач:
oxipng -o 4 --strip safe --alpha *.pngДля осторожной проверки:
oxipng -o 4 --strip safe --alpha --dry-run *.pngДля финальной обработки важных файлов:
oxipng -o max --zopfli --strip safe --alpha image.pngOxipng стоит использовать не как случайный сжиматель картинок, а как постоянный технический инструмент в цепочке подготовки PNG. В этом формате он раскрывается лучше всего: один раз настроенная команда экономит место, время, трафик и избавляет от ручной рутины.
