Oxipng: консольная утилита для оптимизации PNG-файлов и уменьшения

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

Содержание

Скачать Oxipng

Бесплатно
В реестре программного обеспечения РФ
Чистая установка

Новейшая версия для Windows и macOS. Удобный редактор с ИИ и профессиональными функциями.

⬇ Скачать ФотоМАСТЕР бесплатно

⬇ Скачать Oxipng (Windows)

Главная особенность Oxipng — ориентация на командную строку и автоматизацию. У программы нет графического окна с кнопками «Открыть», «Сохранить» или «Сжать». Весь интерфейс — это команда oxipng, параметры вроде -o, --strip, --alpha, --recursive, --out, --dir, --threads, а также текстовый вывод в терминале. Такой формат неудобен для тех, кто хочет просто перетащить картинку мышью, зато отлично подходит для веб-разработки, оптимизации ассетов сайта, CI/CD, pre-commit-хуков и пакетной обработки сотен PNG-файлов.

Страница Oxipng с описанием программы и базовой информацией

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 работает с несколькими направлениями оптимизации:

  1. Пересжатие IDAT-данных.
    Основные пиксельные данные PNG находятся в сжатом потоке. Oxipng может пересобрать его более эффективно.

  2. Подбор фильтров строк.
    PNG применяет фильтры к строкам изображения перед сжатием. Разные фильтры дают разный итоговый размер. Oxipng пробует варианты и выбирает более выгодный.

  3. Сокращение глубины цвета, когда это безопасно.
    Если изображение можно представить компактнее без изменения результата, программа может уменьшить битность или тип цвета.

  4. Работа с палитрой.
    Для некоторых PNG полезны преобразования, связанные с индексированными цветами и палитрой.

  5. Оптимизация прозрачности.
    В полностью прозрачных пикселях видимый цвет не важен. Параметр --alpha использует это для лучшего сжатия.

  6. Удаление метаданных.
    Через --strip можно убрать chunks, которые не нужны для отображения изображения.

  7. Управление 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 *.png

Interlace и параметр --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 полезен перед массовой обработкой. Он показывает потенциальный результат, но не меняет файлы. Это правильный первый шаг, если папка большая или изображения используются в рабочем проекте.

Сравнение исходных PNG-файлов перед обработкой: одинаковый размер у файлов, подготовленных для проверки Oxipng и Pngout

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

Результат после обработки: файл Oxipng.png стал меньше, чем файл, обработанный альтернативным инструментом в этом тесте

Практическая инструкция: оптимизация 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 *.png

Windows 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 или отдельной копией директории.

Практичная схема для сайта:

  1. Сделать копию папки images.

  2. Запустить Oxipng на копии.

  3. Сравнить общий размер папок.

  4. Открыть несколько изображений.

  5. Заменить исходники оптимизированными файлами.

  6. Зафиксировать изменения в 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.png

Zopfli уместен не всегда. Для ежедневной обработки папки сайта он может быть слишком медленным. Его логичнее использовать для:

  • финальной оптимизации редко меняющихся изображений;

  • 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.apng

APNG в 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/images

Docker особенно уместен:

  • в CI/CD;

  • на сервере сборки;

  • в команде, где не хотят вручную ставить одинаковые версии инструментов;

  • в одноразовых задачах;

  • при обработке проекта в изолированном окружении.

На Windows нужно внимательно относиться к путям и монтированию каталогов. В PowerShell синтаксис может отличаться от Linux/macOS, поэтому команды с $(pwd) иногда требуют адаптации.

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

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

Типовая идея такая:

  1. В проект добавляется зависимость oxipng.

  2. Создается структура настроек.

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

  4. На вход передается путь к PNG.

  5. На выходе получается оптимизированный файл или данные о результате.

Для библиотечного использования важно отключать ненужные features, если не нужен CLI-бинарник. В конфигурации можно оставить только нужные возможности, например parallel, zopfli или filetime. Это уменьшает лишнюю нагрузку и делает зависимость более аккуратной для конкретного проекта.

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

Примеры команд для разных задач

ЗадачаКоманда
Сжать один PNGoxipng 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
Удалить безопасные chunksoxipng -s image.png
Удалить все некритические chunksoxipng --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
Убрать interlaceoxipng -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 практичнее.

ПрограммаИнтерфейсТип обработкиПакетная работаАвтоматизацияГде удобнее
OptiPNGCLIlossless PNGестьвозможнаклассическая PNG-оптимизация
pngcrushCLIlossless PNGестьвозможнатонкая настройка PNG
ZopfliPNGCLIlossless PNGестьвозможнамаксимальное сжатие ценой времени
pngquantCLI/GUI-оберткиlossy PNGестьвозможнасильное уменьшение веса за счет палитры
ImageOptimGUIразные оптимизаторыестьограниченнаяручная работа на macOS
SquooshWeb UIразные форматыограниченнаяслабаяручная визуальная оптимизация
FileOptimizerGUIразные форматыестьчастичная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.png

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


Ваш адрес email не будет опубликован. Обязательные поля помечены *