oxipng
Организация oxipng на GitHub, программу начал Joshua Holmer · лицензия MIT
Сжимает PNG без потери качества перед выкладкой на сайт. Агент ужмёт снимки экрана, значки и баннеры, уберёт служебные метаданные и сложит результат в отдельную папку.
✓ Проверено 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
Установить агентом
Установи программу «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 того же выпуска
- Объём
- Установили и прогнали задачу на тестовых данных
- Что именно сделали
- Одноразовый контейнер 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».
- Скрипт прогона сам нарисовал три PNG: снимок экрана 1200x800, значок 512x512 с прозрачным фоном и баннер 640x480 с двумя текстовыми подписями и меткой времени последнего изменения (tIME). Вместе 669 180 байт.
- Команда 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.
- Отдельный декодер PNG без сторонних библиотек сверил все пиксели каждого результата с исходником, включая цвет прозрачных, и расхождений не нашёл. Подписи и метка времени у баннера ушли, без --strip они остались. Контрольные суммы исходных файлов не изменились.
- С ключом --alpha значок ужался до 1 182 байт. Видимые пиксели те же, а у 136 535 полностью прозрачных сменился цвет. --dry-run показал итог и ничего не записал, --json дал размеры по каждому файлу.
- Без --dir программа переписала копию баннера на месте, пиксели совпали. С -r и --dir два файла из папки и подпапки легли в одну папку. Повторное сжатие уже сжатых файлов ничего не дало.
- Нет файла, текст вместо PNG и испорченная сумма блока дали код 1 и понятную ошибку, с --fix файл с испорченной суммой сжался без потерь. На файле с испорченной высотой --fix упал с кодом 132, а с --max-raw-size 100m файл пропущен с кодом 3.
- Пакет .deb того же выпуска поставил /usr/bin/oxipng 10.2.1, dpkg -r его убрал. Сжатие соединений не открывало. Удалили oxipng из ~/.local/bin, команда больше не находится. Скрипт сверил каждый результат сам и только после этого напечатал TASK_OK.
| Дата | Версия | Объём | Где | Итог |
|---|---|---|---|---|
| 15.10.2026 | 10.2.1 | задача | контейнер, Linux | получилось |
| 15.10.2026 | 10.2.1 | задача | контейнер, Linux | получилось |
| 15.10.2026 | 10.2.1 | задача | контейнер, Linux | получилось |
| 15.10.2026 | 10.2.1 | задача | контейнер, Linux | получилось |
«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.
Похожие программы
- libvipsПачкой ужимает, обрезает и переводит картинки для сайта в WebP и AVIF. Агент сам сделает копии нужной ширины без лишних метаданных, большие фото обрабатывает быстро и с малым расходом памяти.
- ImageMagickСжимает картинки и переводит их в WebP, меняет размер, делает обложки с надписью и водяные знаки. Агенту нужна, чтобы обработать всю папку картинок сайта за один раз.
Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.