Oxipng

Oxipng

Последняя версия: 9.1
Скачали: 7

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

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

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

Oxipng не заменяет GIMP, Paint.NET, XnView MP или IrfanView. Эти программы нужны для просмотра, редактирования, пакетного преобразования, кадрирования, изменения размера и работы с разными форматами. Oxipng решает более узкую задачу: сжатие PNG через командную строку без ручного изменения изображения.

Сравнение размера PNG-файлов после обработки Oxipng и Pngout в свойствах файла Windows

Важное отличие Oxipng от браузерных компрессоров — локальная обработка. Файлы не передаются в веб-интерфейс, если утилита запущена на компьютере, сервере или в CI-среде. Это удобно для проектов с внутренними скриншотами, изображениями интерфейса, ассетами продукта и файлами, которые не нужно отправлять во внешние онлайн-сервисы.

Краткая карточка Oxipng

ПараметрОписание
НазваниеOxipng
Тип программыCLI-оптимизатор PNG/APNG
Основной сценарийОптимизация PNG без потери качества
ИнтерфейсКомандная строка
Поддерживаемые форматы на входеPNG, APNG
Пакетная обработкаЕсть
Рекурсивная обработка папокЕсть, через -r / --recursive
МногопоточностьЕсть, через автоматический выбор потоков или -t / --threads
Сохранение результатаПерезапись, --out, --dir, --stdout
Проверочный запуск-d / --dry-run
Вывод для автоматизации-j / --json
ЛицензияMIT
Язык разработкиRust

Oxipng лучше всего раскрывается там, где PNG-файлы нужно обрабатывать регулярно: при сборке статического сайта, подготовке документации, обновлении каталога изображений, оптимизации скриншотов, проверке pull request или настройке pre-commit-хука. Для одиночной картинки утилита тоже подходит, но её основная сила — автоматизация и пакетная обработка изображений.

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

У Oxipng нет графического окна, меню Файл, кнопки Открыть, панели предпросмотра и отдельной кнопки Сохранить. Интерфейс программы — это команда в терминале. Все действия задаются параметрами: уровень оптимизации, режим удаления метаданных, обработка альфа-канала, сохранение результата в отдельный файл, рекурсивный обход папок, ограничение потоков и формат вывода.

Базовая команда выглядит так:

oxipng image.png

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

oxipng --dry-run image.png

Параметр --dry-run не записывает новый файл, а показывает, сколько можно сэкономить. Это полезно перед массовой обработкой папки, особенно если внутри есть изображения с важными метаданными, цветовым профилем или анимацией.

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

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

Здесь -o 4 задаёт уровень оптимизации, --strip safe удаляет только безопасно удаляемые служебные блоки, --alpha дополнительно оптимизирует полностью прозрачные пиксели, а *.png передаёт программе набор PNG-файлов в текущей папке. Такая команда подходит для подготовки иконок, скриншотов и интерфейсной графики, если проекту не нужны лишние текстовые комментарии внутри PNG.

Рабочий процесс в Oxipng обычно состоит из пяти шагов:

  1. пользователь открывает терминал в папке с изображениями;

  2. запускает oxipng --dry-run для оценки результата;

  3. выбирает уровень -o и параметры обработки;

  4. сохраняет результат на месте, через --out или через --dir;

  5. проверяет размер файла, внешний вид изображения и поведение в браузере или приложении.

Такой интерфейс кажется строгим для новичка, но хорошо подходит для повторяемых операций. Команду можно сохранить в package.json, Makefile, shell-скрипте, CI-конфигурации или pre-commit-настройке. В отличие от графических программ, Oxipng не требует каждый раз открывать окно, выбирать файлы мышью и подтверждать экспорт.

Основные функции Oxipng

Оптимизация одного PNG-файла

Самый простой сценарий — оптимизация одного PNG:

oxipng screenshot.png

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

Для более выраженного сжатия задают уровень:

oxipng -o 4 screenshot.png

Уровень -o управляет балансом между скоростью и глубиной перебора вариантов. Значение по умолчанию — 2; более низкие уровни работают быстрее, более высокие пробуют больше комбинаций и требуют больше времени. Уровень max является стабильным обозначением максимального уровня оптимизации.

Пакетная обработка PNG

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

oxipng -o 4 --strip safe *.png

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

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

Рекурсивная обработка папок

Для обработки вложенных каталогов используется -r или --recursive:

oxipng -r -o 4 --strip safe ./images

Когда входом передана папка, --recursive обходит дерево каталогов и оптимизирует найденные PNG и APNG-файлы. Это удобно для сайтов, где изображения лежат в подпапках icons, screenshots, assets, docs, themes.

Рекурсивная оптимизация не делает Oxipng универсальным файловым менеджером. Программа работает именно с PNG/APNG, поэтому для JPEG, WebP, SVG, TIFF или AVIF нужны другие инструменты. Для широкой работы с изображениями можно использовать Converseen, XnView, Picosmos Tools или раздел графических программ на FreeEXE.

Сохранение результата в отдельный файл

Если исходный PNG нельзя перезаписывать, используется --out:

oxipng --out screenshot.optimized.png screenshot.png

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

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

oxipng --dir ./optimized -o 4 *.png

Если папка не существует, Oxipng создаёт её. При сочетании --dir и --recursive нужно учитывать важное ограничение: структура исходных подпапок не сохраняется. Программа записывает результаты в указанную директорию, но не воспроизводит вложенное дерево каталогов.

Проверка без записи файла

Параметр -d / --dry-run показывает результат без изменения файлов:

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

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

--dry-run особенно полезен перед параметрами --strip all, --alpha, --scale16, --zopfli и --force. Эти режимы затрагивают разные аспекты файла: метаданные, прозрачные пиксели, битовую глубину, алгоритм сжатия и поведение при увеличении размера.

Удаление метаданных

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

oxipng --strip safe image.png

--strip safe удаляет только блоки, которые не влияют на отображение изображения. Режим сохраняет важные для визуального результата данные, включая цветовые и физические параметры из списка исключений: cICP, iCCP, sRGB, pHYs, а для APNG — acTL, fcTL, fdAT.

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

oxipng --strip all image.png

--strip all удаляет все некритические блоки. Для обычного статичного PNG это может дополнительно уменьшить файл, но для APNG такой режим критичен: all превращает APNG в стандартный PNG. Поэтому для анимированных PNG безопаснее использовать --strip safe или точно заданный список блоков.

Для обратной логики есть --keep:

oxipng --keep eXIf,display image.png

--keep удаляет все некритические блоки, кроме перечисленных. Специальное значение display сохраняет блоки, влияющие на внешний вид, и соответствует безопасной логике --strip safe.

Оптимизация прозрачности

Параметр -a / --alpha включает дополнительную обработку изображений с альфа-каналом:

Oxipng скриншот 1

oxipng --alpha icon.png

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

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

Interlacing и режим Adam7

PNG поддерживает чересстрочную загрузку Adam7. В Oxipng настройка задаётся через -i / --interlace:

oxipng -i off image.pngoxipng -i on image.pngoxipng -i keep image.png

Режим off удаляет interlacing, on включает Adam7, keep сохраняет исходный режим каждого файла. По умолчанию Oxipng использует off. Interlacing может увеличить размер оптимизированного изображения на 25–50%, поэтому для большинства веб-ассетов и скриншотов его отключают.

-i keep нужен тогда, когда у проекта уже есть требования к progressive-отображению PNG или когда команда не хочет менять это свойство при массовой обработке старого архива.

Управление выводом в терминале

Oxipng поддерживает несколько режимов вывода:

oxipng -v image.pngoxipng -vv image.pngoxipng -q image.pngoxipng --json image.png

-v показывает информацию по файлу, несколько v увеличивают подробность. -q подавляет сообщения. --json печатает результат в машинно-читаемом формате, что важно для скриптов, CI и автоматической проверки результата.

Для ручного запуска удобнее обычный вывод или -v. Для пайплайна сборки, отчёта в CI или проверки, не увеличился ли размер PNG после изменения, лучше использовать --json, потому что его можно разобрать программно.

Ограничение потоков и последовательная обработка

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

oxipng -t 4 -o 4 *.png

-t / --threads полезен на рабочем компьютере, где параллельно открыты редактор, браузер, сборка проекта и другие процессы. На CI-сервере ограничение потоков помогает удержать потребление CPU и памяти в пределах выделенного окружения.

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

oxipng --sequential *.png

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

Уровни оптимизации и параметры сжатия

Что означает -o

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

УровеньВнутренняя логикаКогда использовать
-o 0--zc 5, быстрый выбор фильтраБыстрая проверка, большие партии файлов
-o 1--zc 10, быстрый выбор фильтраБыстрая регулярная обработка
-o 2--zc 11, фильтры 0,1,6,7, --fastОбычный баланс скорости и сжатия
-o 3--zc 11, фильтры 0,7,8,9, Brute-настройкиБолее плотное сжатие без максимального перебора
-o 4--zc 12, фильтры 0,7,8,9, усиленный BruteХороший вариант для веб-ассетов
-o 5--zc 12, расширенный набор фильтровКогда время обработки не критично
-o 6--zc 12, фильтры 0-9, более глубокий BruteФинальная обработка важного набора PNG
-o maxстабильный псевдоним максимального уровняРазовая максимальная оптимизация

Ручные параметры сжатия, например --zc или -f, переопределяют настройки пресета независимо от порядка записи аргументов. Поэтому команда oxipng -o 4 --zc 10 image.png не равна чистому -o 4: пользователь вручную меняет часть пресета.

PNG-фильтры

PNG использует фильтрацию строк перед Deflate-сжатием. Oxipng может пробовать разные фильтры через -f / --filters:

oxipng -f 0,1,6,7 image.pngoxipng -f 0-9 image.png

Доступны прямые delta-фильтры:

  • 0None;

  • 1Sub;

  • 2Up;

  • 3Average;

  • 4Paeth.

Есть и эвристические стратегии:

  • 5MinSum;

  • 6Entropy;

  • 7Bigrams;

  • 8BigEnt;

  • 9Brute.

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

Deflate и --zc

Параметр --zc задаёт уровень Deflate-сжатия для основных проб:

oxipng --zc 12 image.png

Oxipng использует уровни 0–12, определённые библиотекой libdeflate. Чем выше значение, тем больше усилий тратится на сжатие, но это не гарантирует пропорционального выигрыша. Пресеты -o уже подбирают --zc автоматически: например, уровни 4–6 используют --zc 12.

Zopfli-режим

Для более медленного, но потенциально более плотного Deflate-сжатия используется -z / --zopfli:

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

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

Количество итераций задаётся через --zi, а остановка после серии итераций без улучшения — через --ziwi:

oxipng --zopfli --zi 30 --ziwi 5 image.png

--zi требует включённого --zopfli. Меньшее число итераций ускоряет сжатие крупных файлов, а --ziwi помогает не тратить время на дальнейшие проходы, если улучшения прекратились.

Ограничение больших файлов

Для контроля времени и памяти есть --timeout и --max-raw-size:

oxipng --timeout 10 image.pngoxipng --max-raw-size 20MB *.png

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

--max-raw-size пропускает файлы, у которых сырой распакованный размер или размер файла превышает заданный предел. Это важно для больших PNG, где декомпрессированные данные занимают много памяти. Примерная оценка сырого размера рассчитывается как ширина × высота × битовая глубина / 8.

Инструкция: как пользоваться Oxipng

Проверить, что команда доступна

Первый шаг — убедиться, что терминал видит команду:

oxipng --version

Параметр -V / --version выводит версию программы. Для справки по параметрам используется:

oxipng --help

Справка показывает синтаксис команды, список параметров и поддерживаемые режимы. В Oxipng нет отдельного графического справочного окна: описание доступно прямо в консоли.

Сжать один файл без лишних настроек

Для обычного PNG достаточно:

oxipng picture.png

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

Если нужно сохранить исходник рядом, используется --out:

oxipng --out picture.optimized.png picture.png

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

Oxipng скриншот 2

Сжать все PNG в папке

Для текущей папки:

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

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

Сравнение итогового размера PNG после обработки Oxipng и Pngout

Перед обработкой большой папки лучше выполнить сухой запуск:

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

После него видно, какие файлы будут уменьшены. Если экономия небольшая, можно оставить стандартный уровень -o 2; если папка содержит важные публичные ассеты, можно обработать её на -o 4 или -o 6.

Обработать папку с подпапками

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

oxipng --recursive -o 4 --strip safe ./assets

Oxipng проходит по каталогу ./assets и находит PNG/APNG во вложенных папках. Такой режим подходит для структуры сайта:

assets/  icons/  screenshots/  ui/  docs/

Если нужно не изменять исходники, можно направить результат в отдельную папку:

oxipng --recursive --dir ./optimized -o 4 ./assets

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

Удалить безопасные метаданные

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

oxipng --strip safe image.png

Для папки:

oxipng --strip safe *.png

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

Получить машинно-читаемый результат

Для автоматизации:

oxipng --json -o 4 image.png

JSON-вывод можно использовать в скриптах: проверить экономию, записать отчёт, остановить сборку при ошибке, собрать статистику по размеру ассетов. Это удобнее, чем разбирать обычный текстовый вывод терминала.

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

Если Oxipng запускается параллельно со сборкой проекта, браузером, IDE или другим тяжёлым процессом, число потоков можно ограничить:

oxipng --threads 2 -o 4 *.png

На CI-сервере такой подход делает поведение предсказуемее. На рабочем компьютере он оставляет ресурсы для других задач.

Когда использовать --force

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

oxipng --force image.png

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

Практические сценарии использования

Оптимизация изображений для сайта

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

Типичная команда для папки с ассетами:

oxipng -r -o 4 --strip safe --alpha ./public/images

Она сочетает рекурсивную обработку, средне-высокий уровень оптимизации, безопасное удаление метаданных и работу с прозрачными пикселями. Для сайта с большим числом PNG это сокращает объём передаваемых данных и размер репозитория.

Документация и скриншоты

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

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

oxipng -o 4 --strip safe docs/**/*.png

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

oxipng --recursive -o 4 --strip safe ./docs

Для скриншотов лучше избегать --strip all, если в проекте важны цветовые профили или служебные данные. --strip safe даёт более аккуратный баланс.

Репозиторий с интерфейсными ассетами

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

Oxipng удобно добавить в pre-commit. Пример конфигурации использует репозиторий Oxipng, hook id: oxipng и аргументы -o, 4, --strip, safe, --alpha.

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

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

CI и GitHub Actions

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

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

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

  • -o 4 — даёт разумный баланс времени и размера;

  • *.png — обрабатывает набор файлов;

  • --json — подходит для машинного отчёта;

  • --threads — ограничивает нагрузку в CI.

Docker-сценарий

Oxipng можно запускать в контейнерной среде. Контейнерный образ доступен для linux/amd64 и linux/arm64, а типичный запуск монтирует текущую папку в /work и обрабатывает файл внутри неё.

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

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

Использование как Rust-библиотеки

Oxipng можно подключать к Rust-проектам как библиотеку. Простейший подход строится вокруг Options и функции optimize: программа формирует набор параметров и передаёт входной файл на обработку. Для библиотечного использования рекомендуется отключать feature binary и явно указывать нужные features, например parallel, zopfli, filetime.

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

Поддержка APNG

Oxipng работает с APNG, но поддержка анимированных PNG ограничена. Программа выполняет alpha-optimization, refiltering и recompression кадров, однако transformations для APNG отключаются. Для лучшего результата перед Oxipng используют специализированный APNG-инструмент вроде apngopt.

Главное практическое правило: APNG нельзя обрабатывать теми же агрессивными параметрами, что и обычный PNG, без проверки. Особенно опасен --strip all, потому что он превращает APNG в стандартный PNG. Если анимация должна сохраниться, используйте --strip safe или точечное управление блоками через --keep.

Для APNG уместна такая команда:

oxipng -o 4 --strip safe animation.apng

После обработки нужно проверить:

Oxipng скриншот 3

  • воспроизводится ли анимация;

  • не исчезли ли кадры;

  • не изменился ли цвет;

  • не нарушилась ли прозрачность;

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

Системные требования

Oxipng — лёгкая консольная программа, но её требования зависят от способа запуска. Для готового бинарного файла важна совместимость с операционной системой и архитектурой. Для сборки из исходного кода нужен Rust toolchain; минимально поддерживаемая версия Rust для проекта — 1.85.1.

Пример работы OxiPNG-режима в интерфейсе Squoosh при сравнении исходного и оптимизированного PNG

СценарийЧто требуетсяЧто учитывать
Локальный запуск на WindowsКонсольное окружение и бинарный файл под WindowsУдобно добавить путь к oxipng.exe в PATH
Локальный запуск на macOSТерминал и совместимая сборкаПодходит для автоматизации в shell-скриптах
Локальный запуск на LinuxТерминал и пакет под нужный дистрибутивУдобен для серверной оптимизации и CI
КонтейнерDocker-совместимое окружениеОбработка файлов через примонтированную папку
Сборка из исходниковRust toolchainНужна разработчикам и тем, кто собирает программу самостоятельно
CIДоступ к команде oxipng в runner-средеЖелательно ограничивать потоки и использовать проверочный режим

Oxipng активно использует CPU при высоких уровнях оптимизации. На небольших PNG это почти незаметно, но при большом архиве скриншотов, высоком -o, Zopfli-режиме и обработке нескольких файлов параллельно нагрузка становится ощутимой. Для контроля применяют --threads, --sequential, --timeout и --max-raw-size.

По памяти важен не только размер PNG на диске, но и распакованный размер изображения. Большой скриншот может занимать немного места в сжатом виде, но при обработке разворачиваться в десятки мегабайт данных. Для таких случаев --max-raw-size помогает заранее пропускать слишком крупные изображения.

Преимущества и ограничения

Плюсы

  • Многопоточность. Oxipng использует параллельную обработку для проб внутри файла и для нескольких файлов, поэтому хорошо подходит для больших папок с PNG.

  • Lossless-ориентация. Основной сценарий — оптимизация PNG без изменения видимого изображения.

  • Командная строка. Программу легко встроить в скрипты, CI, pre-commit, сборку сайта и автоматическую обработку ассетов.

  • Пакетная обработка. Можно обрабатывать один файл, список файлов, маску *.png и дерево папок через --recursive.

  • Гибкое управление метаданными. Есть --strip safe, --strip all, список блоков и --keep.

  • Контроль нагрузки. --threads, --sequential, --timeout, --max-raw-size помогают ограничивать CPU, память, время и порядок обработки.

  • Поддержка APNG. Программа умеет работать с анимированными PNG, хотя и с ограничениями.

  • JSON-вывод. --json подходит для автоматических отчётов и проверки результатов.

  • MIT-лицензия. Oxipng можно использовать в разных проектах с учётом условий лицензии.

  • Rust-библиотека. Разработчики могут встроить оптимизацию PNG прямо в Rust-приложение.

Минусы

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

  • Фокус только на PNG/APNG. JPEG, WebP, SVG, AVIF, TIFF и RAW не входят в задачу Oxipng.

  • Некоторые параметры требуют осторожности. --strip all ломает APNG-анимацию, --alpha меняет невидимые RGB-значения прозрачных пикселей, --scale16 принудительно снижает глубину цвета.

  • Высокие уровни занимают больше времени. -o 6, -o max и --zopfli не подходят для каждого ежедневного запуска.

  • Миграция с OptiPNG не механическая. У программ похожая область применения, но Oxipng не является drop-in replacement.

  • Нет визуального сравнения до и после. Проверять изображение нужно в отдельной программе, браузере или просмотрщике.

  • Рекурсивный --dir не сохраняет структуру папок. При одинаковых именах файлов это важно учитывать заранее.

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

Oxipng и OptiPNG

OptiPNG — ближайший исторический ориентир для Oxipng: именно с идеи переписывания OptiPNG начался проект. Разница в том, что Oxipng изначально строился вокруг Rust и многопоточности, а не вокруг старой C-кодовой базы.

КритерийOxipngOptiPNG
Основной форматPNG/APNGPNG и ряд входных форматов в логике OptiPNG
ИнтерфейсCLICLI
МногопоточностьЕстьНет как базовая сильная сторона
ПодходСовременный Rust-инструментКлассический PNG-оптимизатор
Миграция командТребует проверки параметровОтдельный синтаксис
СценарийCI, pre-commit, массовая оптимизация PNGКонсольная оптимизация PNG в привычных старых процессах

Oxipng лучше подходит там, где важны параллельная обработка, интеграция с современным pipeline и гибкие режимы вывода. OptiPNG остаётся понятным вариантом для пользователей, у которых уже есть старые команды и скрипты, но при переносе на Oxipng нужно сверить параметры, особенно interlacing, dry-run и Zopfli.

Oxipng и pngquant

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

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

Если пиксельный результат должен остаться прежним, выбирают Oxipng. Если важнее минимальный размер и допустима аккуратная потеря цветов, рассматривают pngquant.

Oxipng и ImageOptim

ImageOptim — графическое приложение для macOS и веб-сервис, а Oxipng — CLI-утилита. ImageOptim входит в список программ, использующих Oxipng.

КритерийOxipngImageOptim
ИнтерфейсТерминалГрафический интерфейс / web
АвтоматизацияСильная сторонаВозможна, но основной сценарий ручной
ФорматыPNG/APNGРазные форматы изображений
ПлатформаКроссплатформенный CLIMac-приложение и сервис
Целевая аудиторияРазработчики, DevOps, технические пользователиДизайнеры, редакторы, пользователи macOS

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

Oxipng и FileOptimizer

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

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

Oxipng и Squoosh

Squoosh — веб-приложение для оптимизации изображений. Оно тоже использует Oxipng.

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

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

Oxipng и графические программы FreeEXE

Внутри экосистемы обычных графических программ Oxipng занимает узкое место. FastStone Image Viewer, XnView MP, IrfanView, Converseen и Picosmos Tools помогают просматривать, сортировать, пакетно преобразовывать, менять размеры и работать с коллекциями изображений. Oxipng подключается после этого этапа, когда PNG уже готов и нужно уменьшить его технический размер.

СценарийЛучше подходит
Оптимизировать PNG в CIOxipng
Сжать папку PNG через терминалOxipng
Просмотреть и отсортировать фотоXnView MP, FastStone Image Viewer
Пакетно конвертировать разные форматыConverseen, XnView MP
Отредактировать изображение вручнуюGIMP, Paint.NET
Быстро обработать PNG без терминалаImageOptim, FileOptimizer, Squoosh
Снизить размер с потерей цветовpngquant
Встроить PNG-оптимизацию в Rust-кодOxipng как библиотека

Отзывы пользователей и профильных изданий

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

Технические авторы обычно отмечают Oxipng как современную Rust-альтернативу pngcrush и OptiPNG. Главные аргументы — многопоточность, удобная работа в pre-commit, предсказуемые параметры и хороший результат на PNG-скриншотах.

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

В технических обзорах по веб-производительности Oxipng выделяют за Rust-основу, concurrency, CLI/API-подход и удобство для web development, game development, CI/CD и CMS.

Oxipng скриншот 4

Усреднённое мнение по открытым техническим обсуждениям выглядит так:

Что нравится:

  • команда короткая и легко запоминается;

  • пакетная обработка PNG не требует графического интерфейса;

  • многопоточность ускоряет обработку папок;

  • --strip safe удобен для веб-изображений;

  • --alpha помогает с прозрачными PNG;

  • --json упрощает автоматизацию;

  • программа хорошо вписывается в Git, CI и скрипты.

Что вызывает сложности:

  • новичкам не хватает окна с кнопками и предпросмотром;

  • неочевидно, когда выбирать -o 2, -o 4, -o 6 или -o max;

  • APNG требует осторожности;

  • --strip all и --scale16 нельзя применять без понимания последствий;

  • при переходе со старых команд OptiPNG нужно проверять синтаксис;

  • Zopfli может быть слишком медленным для регулярной обработки.

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

Безопасность, лицензия и приватность

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

Проект распространяется под MIT license. Репозиторий открыт, а программа может использоваться как CLI и как библиотека в Rust-приложениях.

Безопасная работа с Oxipng строится не вокруг антивирусной защиты, а вокруг контроля параметров:

  • --dry-run перед массовой обработкой;

  • --out или --dir перед перезаписью важных файлов;

  • --strip safe вместо --strip all, если нужно сохранить корректное отображение;

  • отказ от --scale16, если 16-битная глубина нужна для дальнейшей обработки;

  • осторожное применение --alpha для файлов, где невидимые RGB-значения прозрачных пикселей имеют значение;

  • проверка APNG после оптимизации.

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

Типичные ошибки при использовании Oxipng

Массовая перезапись без проверки

Команда вида:

oxipng -r -o max --strip all ./images

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

Безопаснее начать так:

oxipng -r -o 4 --strip safe --dry-run ./images

После оценки результата можно убрать --dry-run.

Неправильный выбор уровня -o

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

Практическая логика:

  • -o 2 — быстрый ежедневный вариант;

  • -o 4 — баланс для веб-ассетов и документации;

  • -o 6 — финальная обработка, если время не критично;

  • -o max — разовая максимальная оптимизация;

  • --zopfli — только когда дополнительное время оправдано.

Смешивание lossless и lossy-ожиданий

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

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

Неверная работа с APNG

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

Ожидание поддержки всех форматов

Oxipng не оптимизирует JPEG, WebP, SVG, GIF, TIFF или RAW. Для разных форматов нужны другие программы. На FreeEXE для смежных задач подойдут раздел графических редакторов, раздел просмотрщиков изображений, XnView MP, Converseen и GIMP.

Слишком высокая нагрузка на рабочую машину

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

oxipng --threads 2 -o 4 *.png

Для предсказуемого порядка:

Oxipng скриншот 5

oxipng --sequential *.png

Сохранение результатов в --dir без учёта имён

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

Как проверить результат после оптимизации

Сравнить размер файла

Первый показатель — размер до и после. Для одиночного файла это видно в файловом менеджере или через консоль. Для папки удобнее использовать обычный вывод Oxipng или JSON-режим.

Команда для оценки без записи:

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

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

Открыть изображение в просмотрщике

После --alpha, --scale16, --strip all, -i on и работы с APNG изображение нужно открыть. Для ручной проверки подойдут FastStone Image Viewer, XnView или системный просмотрщик.

Проверяйте:

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

  • цвет;

  • границы иконок;

  • мелкий текст на скриншотах;

  • фон у прозрачных элементов;

  • корректность анимации APNG;

  • отображение в браузере.

Сравнить в браузере или приложении

Для веб-ассетов недостаточно открыть PNG в просмотрщике. Изображение нужно проверить там, где оно будет использоваться: в браузере, интерфейсе приложения, документации, теме сайта или компоненте UI.

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

Использовать JSON-отчёт

Для автоматической проверки:

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

JSON-вывод можно сохранить в файл и обработать скриптом. Такой подход подходит для CI: можно собрать статистику по экономии, вывести список изменённых файлов, запретить коммит неоптимизированных PNG или предупредить, если оптимизация не дала результата.

Проверить Git-diff

После пакетной оптимизации PNG в репозитории нужно посмотреть список изменённых файлов:

git status

Если изменились неожиданные APNG, архивные изображения или файлы, которые не должны трогаться, их лучше откатить и уточнить команду. Для регулярной работы полезно ограничивать область обработки конкретными папками: assets/icons, docs/screenshots, public/images.

Кому стоит использовать Oxipng

Разработчикам

Oxipng особенно удобен разработчикам, потому что работает через командную строку и хорошо встраивается в привычные процессы. Команду можно добавить в Makefile, npm script, CI pipeline, pre-commit или Docker-сборку. Для репозитория с PNG-ассетами это снижает ручной контроль и делает обработку повторяемой.

Подходящий сценарий:

oxipng -r -o 4 --strip safe --alpha ./public

Разработчик получает оптимизированные ассеты без ручного открытия графических программ.

Веб-мастерам

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

Для веб-публикации обычно подходят:

  • -o 4;

  • --strip safe;

  • --alpha;

  • --recursive для каталога;

  • --dry-run перед первым запуском.

Техническим авторам

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

Командам

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

Дизайнерам и контент-менеджерам

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

Для пользователей, которым нужен визуальный интерфейс, логичнее рассмотреть XnView MP, Converseen, Picosmos Tools или другие программы из раздела Фото и графика.

Кому лучше выбрать другой инструмент

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

Если нужно пакетно конвертировать изображения из JPEG в WebP, уменьшать размер по пикселям, менять формат и применять фильтры, Oxipng тоже не является основным инструментом. Он работает с PNG/APNG. Для конвертации и пакетной обработки разных форматов лучше подходят Converseen, XnView MP или IrfanView.

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

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

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

Oxipng — специализированная программа для тех, кто хочет уменьшать PNG и APNG предсказуемо, локально и автоматически. Её сильные стороны раскрываются не в графическом интерфейсе, а в точных параметрах: -o, --strip safe, --alpha, --recursive, --out, --dir, --dry-run, --json, --threads, --zopfli, --max-raw-size.

Для разработчика, веб-мастера, технического автора и команды с Git-репозиторием Oxipng подходит лучше многих графических компрессоров: команду можно повторить, встроить в сборку, ограничить по потокам, запустить в CI и проверить через JSON. Для новичка без опыта терминала программа менее удобна, потому что не даёт визуального окна и предпросмотра.

Оптимальный стартовый набор для большинства веб-изображений:

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

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

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

Для папки с подпапками:

oxipng --recursive -o 4 --strip safe ./images

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

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

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

Список изменений

Происхождение проекта:

  • Oxipng начался в 2015 году как переписывание OptiPNG. Главной целью была многопоточность, которую было сложно внедрить в существующую C-кодовую базу OptiPNG. Одновременно проект перешёл на Rust как более современный и безопасный язык для новой архитектуры.
  • Это происхождение важно для понимания характера программы. Oxipng не является простым графическим компрессором и не повторяет OptiPNG один к одному. Часть параметров похожа, но архитектура, параллельная обработка, внутренние оптимизации и API развивались отдельно. При миграции с OptiPNG команды нужно сверять, а не механически заменять одно имя программы другим.

Переход к стабильной архитектуре:

  • В версии 1.0.0 из проекта была удалена C-зависимость miniz и заменена Rust-реализацией. Это ускорило decompression на 15%, изменило пресеты и сделало уровни -o3 и выше заметно быстрее. В той же ветке были скорректированы пресеты, -o3 стал тестировать все типы фильтров, а -o4 и выше получили дополнительные проверки для альфа-канала.
  • Этот этап закрепил идею Oxipng как самостоятельного Rust-инструмента, а не оболочки вокруг старых C-компонентов. Для пользователя это проявилось не в новом окне интерфейса, а в скорости обработки и более понятном поведении пресетов.

Развитие веток 2.x и 3.x:

  • В ветке 2.0.0 появились важные возможности: --keep , ограничение времени оптимизационных проб, опциональный Rayon, чтение из stdin и возможность задавать больше двух типов фильтров через CLI.
  • Ветка 2.3.0 добавила поддержку WASM, сортировку палитры для улучшения сжатия и снижение расхода памяти при фильтрации. В этой же ветке alpha-оптимизации были отключены по умолчанию, что сделало поведение осторожнее: пользователь явно включает --alpha , если ему нужна дополнительная работа с полностью прозрачными пикселями.
  • Версия 3.0.0 добавила -o max , стандартную библиотеку log , libdeflater как опцию и детерминированный вывод. -o max удобен тем, что указывает на максимальный пресет без привязки к конкретному числу: если в будущем максимальный уровень меняется, alias сохраняет смысл.

Ветки 4.x–7.x:

  • В версии 4.0.0 libdeflater и zopfli стали опциональными для API-пользователей, Rayon сделали действительно опциональным, а рекурсивный обход перестал завершаться при встрече не-PNG-файла. Это улучшило библиотечные и автоматизационные сценарии.
  • Версия 5.0.0 добавила --ng , оптимизации unfiltering и copying, а также сохранение timestamps при --preserve . Ветка 6.0.0 принесла --check / -c , переход на Rust edition 2021 и обновление внутренних зависимостей.
  • Версия 7.0.0 стала крупным шагом в сторону новых стратегий: libdeflater стал default, пресеты были перебалансированы, появились новые filter strategies, настройка уровня libdeflate, Docker-вариант и улучшенные alpha reductions.

Ветки 8.x и 9.x:

  • Версия 8.0.0 переработала alpha optimization, улучшила interlacing и формат вывода, добавила возможность сокращать alpha channel до tRNS pixel и ускорила colorspace reduction.
  • Версия 9.0.0 изменила ряд важных вещей: --backup был удалён в пользу --out и --dir , --check заменён связкой --nx --nz для не оптимизирующего запуска, появилась базовая поддержка APNG, добавлен --scale16 , несколько файлов стали обрабатываться параллельно, рекурсивный режим стал работать только с .png и .apng , а interlacing по умолчанию стал удаляться.
  • Ветка 9.1 добавила --keep display , улучшения палитры и man page, deb-архивы для Linux, параметр --zi , улучшения APNG, системный libdeflate как build feature, а затем --sequential и обновлённый Zopfli с уменьшением расхода памяти.

Ветка 10.x:

  • Ветка 10.0.0 изменила CLI: короткий флаг Zopfli стал -z , старый --pretend / -P был заменён на --dry-run / -d , а параметры interlacing перешли от 1 / 0 к on / off . Также появились --ziwi , --max-raw-size , --brute-level , --brute-lines , улучшения памяти для fast mode и цветной help output.
  • Ветка 10.1.0 добавила --json для машинно-читаемого вывода, новый стандартный вывод со счётчиком файлов и summary, а также исправление fast mode для небольших indexed images. В дальнейшем были улучшены Bigrams performance, поведение --np , recompressing ICC profiles с высокой степенью сжатия и размер бинарных файлов.
  • История Oxipng показывает, что программа развивалась не как простой сжиматель PNG, а как инженерный инструмент: менялись пресеты, уточнялись безопасные режимы, добавлялась поддержка APNG, расширялись параметры для CI и API, появлялись средства контроля времени, памяти и вывода.

Выберите ссылку для загрузки Oxipng

Всего скачали: 7 | сегодня: 0

Скачать бесплатно
Oxipng

Похожие программы на Oxipng

из раздела "Графические редакторы"

Оставте свой отзыв о Oxipng