oxipng

Организация oxipng на GitHub, программу начал Joshua Holmer · лицензия MIT

Сжимает PNG без потери качества перед выкладкой на сайт. Агент ужмёт снимки экрана, значки и баннеры, уберёт служебные метаданные и сложит результат в отдельную папку.

macOS · Windows · LinuxНа компьютере, на сервере и в контейнереБесплатно, MIT

✓ Проверено 15.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: oxipng 10.2.1 из готового архива со страницы выпуска на GitHub, потом пакет .deb того же выпуска. Что именно проверяли

Установить агентом ↓

Какую задачу решает

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

  • Сжимает пачку PNG в новую папку (--dir). В прогоне три тестовые картинки ужались с 669 180 до 474 720 байт, пиксели совпали с исходниками.
  • Убирает служебные метаданные ключом --strip safe: текстовые подписи и метка времени последнего изменения (tIME) ушли из тестового баннера, а без ключа остались на месте.
  • Показывает, сколько получится сэкономить, ничего не записывая (--dry-run), и отдаёт итог в JSON (--json), чтобы агент сверил каждый файл.
  • С ключом --alpha дополнительно меняет цвет полностью прозрачных пикселей. Видимая картинка та же, а значок с прозрачным фоном в прогоне ужался с 480 842 до 1 182 байт.

Пример результата

Говоришь агенту

Сожми все PNG из папки images для сайта без потери качества, служебные метаданные убери, исходники не трогай. Результат сложи в images-opt и скажи, сколько сэкономили.

Что получится

Мы прогнали этот сценарий на трёх тестовых картинках: снимке экрана 1200x800, значке 512x512 с прозрачным фоном и баннере 640x480 с текстовыми метаданными. Команда oxipng -o 4 --strip safe --dir images-opt images/*.png за 273 мс уменьшила их с 669 180 до 474 720 байт, снимок экрана с 20 929 до 1 449 байт. Отдельная проверка сверила все пиксели с исходниками и расхождений не нашла. Метаданные баннера ушли, исходные файлы не изменились.

Паспорт

Кто делает
Организация oxipng на GitHub, программу начал Joshua Holmer
Исходный код
github.com/oxipng/oxipng
Лицензия
MIT
Версия
10.2.1 на 15.10.2026
Системы
macOS · Windows · Linux
Где работает
На компьютере, на сервере и в контейнере
Цена
Бесплатно
Проверка
Проверено 15.10

Установить агентом

Для Claude Code, Codex, Hermes и любого агента с терминалом
Установи программу «oxipng». Работай по шагам и после каждого коротко говори, что сделал.

Что это за программа (каталог smyslokod.ru, официальные источники сверены 15.10.2026):
- исходный код: https://github.com/oxipng/oxipng
- инструкция по установке: https://github.com/oxipng/oxipng/blob/v10.2.1/MANUAL.txt
- актуальная версия на 15.10.2026: 10.2.1
- лицензия: MIT
- для работы нужно (в отдельных случаях): curl - только чтобы скачать готовый файл или пакет .deb на Linux, в минимальных контейнерах его может не быть
- для работы нужно (в отдельных случаях): Homebrew - только для установки на Mac через brew

Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
5. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
6. Всегда пиши результат в новую папку через --dir или в новый файл через --out. Сжимать на месте, поверх исходников, можно только после «да» человека и после копии.
7. Ключи --alpha, --scale16 и --strip all ставь, только если человек просил или согласился.
8. Чужие и скачанные файлы сжимай с ключом --max-raw-size 100m, чтобы испорченный заголовок не съел память.
9. После пачки сверь «Files processed: N/M» или --json: код 0 бывает и тогда, когда часть файлов не обработана.

Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
   - на компьютере: ужать картинки сайта или документации перед выкладкой.
   - на сервере: сжатие загруженных картинок по расписанию или при сборке сайта, без окон и вопросов в терминале.
   - в контейнере: мы проверяли в контейнере Ubuntu 24.04 от root, установка заняла 1 секунду.
1. Проверь, не стоит ли программа уже: oxipng --version ; which -a oxipng. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Обязательных зависимостей у программы нет, то, что нужно в отдельных случаях, перечислено выше. Проверь свободное место на диске: нужно Архив для Linux x86-64 весит 504 871 байт, распакованный oxipng занимает 1 032 120 байт, других файлов программа не ставит. Пакет .deb весит 408 248 байт, по его полю Installed-Size после установки займёт 1052 КиБ. Сколько займёт Homebrew, мы не мерили..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
   Способы из официальных источников:
   - macOS, Homebrew: brew install oxipng (формула того же проекта: в ней указан адрес github.com/oxipng/oxipng, на 15.10.2026 ставит 10.2.1. Ни установку, ни удаление через Homebrew мы не проверяли, команда удаления взята из справки Homebrew)
   - Windows, готовый файл с GitHub: Invoke-WebRequest -Uri https://github.com/oxipng/oxipng/releases/download/v10.2.1/oxipng-10.2.1-x86_64-pc-windows-msvc.zip -OutFile $env:TEMP\oxipng.zip; if ((Get-FileHash $env:TEMP\oxipng.zip -Algorithm SHA256).Hash -ne '7E940F83EE46874B73F53031F96A15834CB70B220AF27391FB06FE7B4DD798E1') { throw 'sha256 mismatch' }; Expand-Archive $env:TEMP\oxipng.zip -DestinationPath $env:LOCALAPPDATA\oxipng -Force; Remove-Item $env:TEMP\oxipng.zip (так советует README проекта: скачать архив со страницы выпуска. Команда для PowerShell, 64-битная Windows; программа ляжет в %LOCALAPPDATA%\oxipng\oxipng-10.2.1-x86_64-pc-windows-msvc\oxipng.exe, запускать по полному пути или добавить папку в PATH. На Windows мы не проверяли)
   - Linux, готовый файл с GitHub: mkdir -p ~/.local/bin && cd /tmp && curl -fsSLO https://github.com/oxipng/oxipng/releases/download/v10.2.1/oxipng-10.2.1-x86_64-unknown-linux-gnu.tar.gz && echo "46e3c4beb9aae57290ad809dd3374b07153579d3322a3778c53900633618b7c6  oxipng-10.2.1-x86_64-unknown-linux-gnu.tar.gz" | sha256sum -c - && tar xzf oxipng-10.2.1-x86_64-unknown-linux-gnu.tar.gz && install -m 755 oxipng-10.2.1-x86_64-unknown-linux-gnu/oxipng ~/.local/bin/ && rm -rf oxipng-10.2.1-x86_64-unknown-linux-gnu.tar.gz oxipng-10.2.1-x86_64-unknown-linux-gnu (архив для x86-64, сумму мы сверили с той, что показывает страница выпуска. Для ARM64 там же лежит oxipng-10.2.1-aarch64-unknown-linux-gnu.tar.gz. Команда кладёт один файл oxipng в ~/.local/bin, эта папка должна быть в PATH. Мы ставили так же, только архив скачивали и распаковывали под другими путями в /tmp)
   - Linux, пакет .deb с GitHub: curl -fsSL -o /tmp/oxipng_10.2.1-1_amd64.deb https://github.com/oxipng/oxipng/releases/download/v10.2.1/oxipng_10.2.1-1_amd64.deb && echo "4c3e7440c3ebf94b0d5a67d3add25b9a40897c7f14678ecdb5db3c7b77ff816f  /tmp/oxipng_10.2.1-1_amd64.deb" | sha256sum -c - && sudo dpkg -i /tmp/oxipng_10.2.1-1_amd64.deb && rm /tmp/oxipng_10.2.1-1_amd64.deb (для Debian и Ubuntu на x86-64, пакет требует libc6 версии 2.34 или новее. Мы проверили только Ubuntu 24.04. Пакет кладёт /usr/bin/oxipng, справку man и документацию. Установку и удаление мы проверили, в контейнере команды шли от root без sudo)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
   - oxipng --version: программа запускается без ошибки;
   - Сделай во временной папке три тестовых PNG: снимок экрана, значок с прозрачным фоном и баннер с текстовыми метаданными. Сожми их командой oxipng -o 4 --strip safe --dir в новую папку, сверь размеры и все пиксели с исходниками отдельной программой, проверь, что метаданные ушли, а исходные файлы не изменились. Проверь --dry-run, --json, --alpha, -r и коды ошибок на испорченных файлах. Делай это во временной папке и не трогай мои файлы.
     export PATH=$HOME/.local/bin:$PATH
     oxipng --version
     oxipng -o 4 --strip safe --dir images-opt images/*.png
     oxipng -o 2 --out banner-keep.png images/banner.png
     oxipng -o 4 --strip safe --alpha --out icon-alpha.png images/icon.png
     oxipng --dry-run -o 4 dry/screen.png
     oxipng --dry-run --json -o 4 images/*.png
     oxipng -o 2 inplace/banner.png
     oxipng -r -o 2 --dir tree-opt tree
     oxipng -o 4 --strip safe --dir images-opt2 images-opt/*.png
     oxipng -o 2 --dir errout images/nope.png
     oxipng -o 2 --dir errout badcrc.png
     oxipng -o 2 --fix --dir fixed badcrc.png
     oxipng -o 2 --fix --dir errout badheight.png
     oxipng -o 2 --fix --max-raw-size 100m --dir errout badheight.png
     oxipng -o 2 --dir errout notpng.png
   - если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, Homebrew: brew uninstall oxipng; Windows, готовый файл с GitHub: Remove-Item -Recurse -Force $env:LOCALAPPDATA\oxipng; Linux, готовый файл с GitHub: rm -f ~/.local/bin/oxipng; Linux, пакет .deb с GitHub: sudo dpkg -r oxipng).

Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/oxipng#problemy

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

Как ставят вручную

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

  • macOS · Homebrew · источник

    brew install oxipng

    формула того же проекта: в ней указан адрес github.com/oxipng/oxipng, на 15.10.2026 ставит 10.2.1. Ни установку, ни удаление через Homebrew мы не проверяли, команда удаления взята из справки Homebrew

  • Windows · готовый файл с GitHub · источник

    Invoke-WebRequest -Uri https://github.com/oxipng/oxipng/releases/download/v10.2.1/oxipng-10.2.1-x86_64-pc-windows-msvc.zip -OutFile $env:TEMP\oxipng.zip; if ((Get-FileHash $env:TEMP\oxipng.zip -Algorithm SHA256).Hash -ne '7E940F83EE46874B73F53031F96A15834CB70B220AF27391FB06FE7B4DD798E1') { throw 'sha256 mismatch' }; Expand-Archive $env:TEMP\oxipng.zip -DestinationPath $env:LOCALAPPDATA\oxipng -Force; Remove-Item $env:TEMP\oxipng.zip

    так советует README проекта: скачать архив со страницы выпуска. Команда для PowerShell, 64-битная Windows; программа ляжет в %LOCALAPPDATA%\oxipng\oxipng-10.2.1-x86_64-pc-windows-msvc\oxipng.exe, запускать по полному пути или добавить папку в PATH. На Windows мы не проверяли

  • Linux · готовый файл с GitHub · источник

    mkdir -p ~/.local/bin && cd /tmp && curl -fsSLO https://github.com/oxipng/oxipng/releases/download/v10.2.1/oxipng-10.2.1-x86_64-unknown-linux-gnu.tar.gz && echo "46e3c4beb9aae57290ad809dd3374b07153579d3322a3778c53900633618b7c6 oxipng-10.2.1-x86_64-unknown-linux-gnu.tar.gz" | sha256sum -c - && tar xzf oxipng-10.2.1-x86_64-unknown-linux-gnu.tar.gz && install -m 755 oxipng-10.2.1-x86_64-unknown-linux-gnu/oxipng ~/.local/bin/ && rm -rf oxipng-10.2.1-x86_64-unknown-linux-gnu.tar.gz oxipng-10.2.1-x86_64-unknown-linux-gnu

    архив для x86-64, сумму мы сверили с той, что показывает страница выпуска. Для ARM64 там же лежит oxipng-10.2.1-aarch64-unknown-linux-gnu.tar.gz. Команда кладёт один файл oxipng в ~/.local/bin, эта папка должна быть в PATH. Мы ставили так же, только архив скачивали и распаковывали под другими путями в /tmp

  • Linux · пакет .deb с GitHub · источник

    curl -fsSL -o /tmp/oxipng_10.2.1-1_amd64.deb https://github.com/oxipng/oxipng/releases/download/v10.2.1/oxipng_10.2.1-1_amd64.deb && echo "4c3e7440c3ebf94b0d5a67d3add25b9a40897c7f14678ecdb5db3c7b77ff816f /tmp/oxipng_10.2.1-1_amd64.deb" | sha256sum -c - && sudo dpkg -i /tmp/oxipng_10.2.1-1_amd64.deb && rm /tmp/oxipng_10.2.1-1_amd64.deb

    для Debian и Ubuntu на x86-64, пакет требует libc6 версии 2.34 или новее. Мы проверили только Ubuntu 24.04. Пакет кладёт /usr/bin/oxipng, справку man и документацию. Установку и удаление мы проверили, в контейнере команды шли от root без sudo

Как удалить

  • macOS, Homebrew: brew uninstall oxipng
  • Windows, готовый файл с GitHub: Remove-Item -Recurse -Force $env:LOCALAPPDATA\oxipng
  • Linux, готовый файл с GitHub: rm -f ~/.local/bin/oxipng
  • Linux, пакет .deb с GitHub: sudo dpkg -r oxipng

Что нужно для работы

  • curl (в отдельных случаях) - только чтобы скачать готовый файл или пакет .deb на Linux, в минимальных контейнерах его может не быть
  • Homebrew (в отдельных случаях) - только для установки на Mac через brew

Системы

  • macOS - ставится через Homebrew, на странице выпуска есть готовые файлы для Apple Silicon и Intel. На Mac мы не проверяли.
  • Windows - готовый oxipng.exe в архиве со страницы выпуска, для 64- и 32-битной Windows. README советует для Windows этот архив. На Windows мы не проверяли.
  • Linux - мы проверяли на Ubuntu 24.04 x86-64 готовый архив и пакет .deb со страницы выпуска. В репозитории Ubuntu 24.04 пакета oxipng нет. Для ARM64 в выпуске лежат свои файлы.

Где запускать

Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.

  • На компьютере - ужать картинки сайта или документации перед выкладкой.
  • На сервере - сжатие загруженных картинок по расписанию или при сборке сайта, без окон и вопросов в терминале.
  • В контейнере - мы проверяли в контейнере Ubuntu 24.04 от root, установка заняла 1 секунду.

Сколько ресурсов нужно

Место на диске
Архив для Linux x86-64 весит 504 871 байт, распакованный oxipng занимает 1 032 120 байт, других файлов программа не ставит. Пакет .deb весит 408 248 байт, по его полю Installed-Size после установки займёт 1052 КиБ. Сколько займёт Homebrew, мы не мерили.
Память
Память мы не мерили. По справке программа сжимает несколько файлов параллельно, число потоков по умолчанию равно числу логических процессоров. Ограничить нагрузку можно ключами -t и --max-raw-size.
Сеть
Сеть нужна только для установки: в прогоне соединения шли к github.com (140.82.121.4) и адресам скачивания GitHub 185.199.108.133-185.199.111.133, плюс DNS контейнера 127.0.0.11. Сжатие картинок и установка пакета .deb соединений не открывали.

Лицензия и платные замены

Лицензия MIT. Пользоваться можно бесплатно, и лично, и в работе компании. Кто распространяет копии программы, сохраняет уведомление об авторских правах и текст разрешения. Текст лицензии

Цена: Бесплатно. Программа бесплатная, лицензия MIT.

Платные замены

  • TinyPNG API - Облачный сервис: картинку отправляют на его сервер, он уменьшает число цветов, то есть сжимает с потерями. Первые 500 сжатий в месяц бесплатно, следующие 9 500 стоят 0,009 доллара за сжатие, ещё 10 000 обойдутся по 0,002 доллара. Оплата картой или PayPal.

Бесплатные замены

  • libvips - Уменьшает, обрезает и сохраняет картинки в WebP, AVIF, JPEG или PNG. Подойдёт, если формат можно сменить, oxipng оставляет PNG.
  • ImageMagick - Сжимает картинки и переводит их в WebP, меняет размер, обрезает, ставит водяной знак. Подойдёт, когда картинку нужно ещё и переделать.

О чём помнить

  • Безопасность. Агент запускает oxipng в терминале сам (exec). Программа читает файлы, которые ей передали, а с ключом -r все файлы .png и .apng в папке и подпапках (read). Пишет файлы по пути, который задаёт агент: в папку --dir (создаёт её, если нет) или в файл --out (write). Без --dir и --out программа записывает результат поверх исходного файла, и прежнюю версию уже не вернуть (acts). Файлов настроек у oxipng нет. При сжатии программа не выходит в сеть и не просит ни входа в учётные записи, ни ключей.
  • Ключ --alpha меняет цвет полностью прозрачных пикселей, ключ --scale16 сводит 16 бит на канал к 8, и справка называет оба преобразованиями с потерями. В прогоне --alpha видимую картинку не изменил. Если файл потом обрабатывает программа, которой нужны исходные данные, эти ключи не ставь.
  • Если в пачке часть файлов испорчена, oxipng вернёт код 0, когда хотя бы один файл обработан без ошибки, даже если его размер не уменьшился. Так задумано в исходном коде. Смотри строку «Files processed: N/M» или вывод --json, там у каждого файла свой статус.
  • С ключами -r и --dir все файлы ложатся в одну папку без подпапок. По исходному коду файлы с одинаковым именем из разных подпапок получат один и тот же путь, и один результат может затереть другой. Мы это не проверяли, поэтому перед таким запуском проверь, что имена не совпадают.
  • Анимированные PNG программа сжимает ограниченно, а --strip all превращает их в обычные PNG с одним кадром. Это по документации, мы не проверяли.

Частые проблемы

badcrc.png: CRC mismatch in IHDR chunk; May be recoverable by using --fix

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

Illegal instruction (core dumped), код выхода 132, сообщения от oxipng нет

В прогоне так закончился запуск с --fix на файле, где в заголовке испорчена высота картинки: вышло 4 278 190 880 строк. Добавь --max-raw-size 100m. Тогда oxipng пишет «Skipped: Inflated data would exceed the maximum size» и выходит с кодом 3. Такой файл лучше пересохранить из исходника.

notpng.png: Missing data in the file; the file is truncated

Файл с расширением .png на деле не PNG или обрезан. Код выхода 1. Проверь, что это картинка PNG и что файл скачан целиком.

Проверка

✓ Проверено 15.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: oxipng 10.2.1 из готового архива со страницы выпуска на GitHub, потом пакет .deb того же выпуска.

Когда
15.10.2026
Среда
Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: oxipng 10.2.1 из готового архива со страницы выпуска на GitHub, потом пакет .deb того же выпуска
Объём
Установили и прогнали задачу на тестовых данных
Что именно сделали
  1. Одноразовый контейнер Ubuntu 24.04 без данных и ключей. Скачали архив oxipng-10.2.1-x86_64-unknown-linux-gnu.tar.gz и пакет .deb со страницы выпуска, суммы совпали с теми, что показывает выпуск. Положили oxipng в ~/.local/bin за 1 секунду, oxipng --version вывел «oxipng 10.2.1».
  2. Скрипт прогона сам нарисовал три PNG: снимок экрана 1200x800, значок 512x512 с прозрачным фоном и баннер 640x480 с двумя текстовыми подписями и меткой времени последнего изменения (tIME). Вместе 669 180 байт.
  3. Команда oxipng -o 4 --strip safe --dir images-opt images/*.png за 273 мс уменьшила их до 474 720 байт: снимок экрана с 20 929 до 1 449 байт, баннер с 167 409 до 1 723, значок с 480 842 до 471 548.
  4. Отдельный декодер PNG без сторонних библиотек сверил все пиксели каждого результата с исходником, включая цвет прозрачных, и расхождений не нашёл. Подписи и метка времени у баннера ушли, без --strip они остались. Контрольные суммы исходных файлов не изменились.
  5. С ключом --alpha значок ужался до 1 182 байт. Видимые пиксели те же, а у 136 535 полностью прозрачных сменился цвет. --dry-run показал итог и ничего не записал, --json дал размеры по каждому файлу.
  6. Без --dir программа переписала копию баннера на месте, пиксели совпали. С -r и --dir два файла из папки и подпапки легли в одну папку. Повторное сжатие уже сжатых файлов ничего не дало.
  7. Нет файла, текст вместо PNG и испорченная сумма блока дали код 1 и понятную ошибку, с --fix файл с испорченной суммой сжался без потерь. На файле с испорченной высотой --fix упал с кодом 132, а с --max-raw-size 100m файл пропущен с кодом 3.
  8. Пакет .deb того же выпуска поставил /usr/bin/oxipng 10.2.1, dpkg -r его убрал. Сжатие соединений не открывало. Удалили oxipng из ~/.local/bin, команда больше не находится. Скрипт сверил каждый результат сам и только после этого напечатал TASK_OK.
ДатаВерсияОбъёмГдеИтог
15.10.202610.2.1задачаконтейнер, Linuxполучилось
15.10.202610.2.1задачаконтейнер, Linuxполучилось
15.10.202610.2.1задачаконтейнер, Linuxполучилось
15.10.202610.2.1задачаконтейнер, Linuxполучилось

«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.

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

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