Как уменьшить размер PNG без потери качества: полное руководство
PNG слишком тяжёлый, тормозит сайт и не лезет в письмо? Хорошая новость: чаще всего его можно ужать на 60–70% так, что разницу не заметит ни один глаз. Разбираем по шагам — что делать прямо сейчас, какими инструментами и до каких цифр реально дойти.
Почему PNG бывает таким тяжёлым
Чтобы правильно сжимать, нужно понять причину. PNG использует сжатие без потерь: он обязан сохранить каждый пиксель в точности таким, каким его нарисовали. Это его суперсила — идеально резкие края, текст и логотипы — и одновременно его слабость.
Сжатие без потерь хорошо работает там, где много повторов: ровные заливки, плоские иконки, скриншоты интерфейса. А вот фотография или плавный градиент — это миллионы чуть-чуть разных оттенков, где «схлопывать» практически нечего. Поэтому фото в PNG может весить в 5–10 раз больше, чем то же фото в JPG.
Есть и три типичных «утяжелителя», которые легко устранить:
- Избыточная битность. Иконка из десятка цветов часто сохраняется как полноцветный PNG-24/32 (16,7 млн цветов), хотя ей хватило бы палитры из 256.
- Метаданные. Редакторы зашивают внутрь файла дату, имя ПО, цветовой ICC-профиль, иногда XMP и превью. Для скриншота это лишние байты.
- Слишком большое разрешение. Картинка 4000 px шириной, которая на сайте отображается в 800 px, несёт впятеро больше данных, чем нужно.
Коротко
PNG тяжёлый не потому что «плохой», а потому что честный — он хранит всё до последнего пикселя. Наша задача — убрать из него то, что глазу не нужно: лишние цвета, служебные данные и избыточный размер.
Два пути: lossless-оптимизация vs квантизация
Все способы ужать PNG делятся на два лагеря. Понять разницу — это половина дела, потому что от выбора зависит, насколько сильно похудеет файл.
Путь 1. Оптимизация без потерь (lossless)
Инструмент не меняет ни одного пикселя. Он лишь перебирает фильтры строк и заново упаковывает данные более эффективным алгоритмом DEFLATE/Zopfli, а заодно выкидывает лишние служебные чанки. Результат пиксель-в-пиксель идентичен оригиналу. Экономия скромнее — обычно 10–25%, — но абсолютно безопасна. Это утилиты optipng, oxipng и zopflipng.
Путь 2. Квантизация палитры (с потерями)
Инструмент сокращает число цветов до палитры (максимум 256) и превращает PNG-24/32 в компактный PNG-8. Это формально «с потерями», но умные алгоритмы подбирают палитру и добавляют дизеринг так, что на типичной графике разницу не видно. Зато экономия огромная — 60–70%. Это pngquant и онлайн-сервисы вроде TinyPNG.
Самый быстрый способ: онлайн, за 30 секунд
Если не хочется ставить программы и разбираться с командной строкой — всё делается в браузере. Самый эффективный приём для веба: не просто сжать PNG, а сразу пересохранить его в WebP. WebP без потерь примерно на 26% меньше PNG и при этом полностью сохраняет прозрачность.
Загрузите PNG
Перетащите файл (или сразу несколько) в онлайн-конвертер PNG → WebP. Ничего устанавливать не нужно, файлы обрабатываются прямо в браузере.
Получите WebP
Конвертер пересохранит изображение в WebP, сохранив альфа-канал. Это даёт меньший размер при том же визуальном качестве.
Скачайте результат
Готовый файл подключайте на сайт. Для старых браузеров можно оставить PNG-запасной вариант через тег <picture>.
Нужна именно прозрачность и максимальная совместимость со всем подряд? Тогда оставайтесь в PNG, но прогоните файл через квантизатор. А если прозрачность не важна и это фотография — посмотрите в сторону конвертера PNG → JPG: он ужмёт снимок в разы сильнее.
Сожмите свой PNG прямо сейчас
Бесплатный конвертер FormatZ пересохранит PNG в лёгкий WebP за пару секунд — в браузере, без установки и регистрации. Прозрачность сохраняется.
Сжать PNG в WebP
Инструменты для профи: pngquant, optipng, oxipng
Если вы оптимизируете десятки файлов или хотите встроить сжатие в сборку проекта, удобнее командная строка. Вот рабочий набор и точная роль каждого.
pngquant — квантизация (главный выигрыш)
Самый результативный инструмент. Сокращает цвета до палитры и в среднем урезает файл примерно на 64% при высоком визуальном качестве. Флаг --quality задаёт допустимый коридор: если уложиться не удаётся, файл не пересохраняется.
# один файл, результат — image-fs8.png рядом с оригиналом
pngquant --quality=65-85 image.png
# перезаписать на месте все PNG в папке
pngquant --quality=65-85 --ext .png --force *.png
optipng / oxipng — добивка без потерь
Запускают после pngquant, чтобы выжать ещё несколько процентов абсолютно безопасно. optipng — классика; oxipng — его современная переписка на Rust: многопоточный, быстрее и часто сжимает плотнее. Флаг -strip заодно вычищает метаданные.
# optipng: максимальный уровень + удалить метаданные
optipng -o7 -strip all image.png
# oxipng: быстро, в несколько потоков, с чисткой
oxipng -o max --strip safe image.png
zopflipng — когда нужен самый маленький файл
Использует алгоритм Zopfli от Google: сжимает плотнее почти всех остальных (выигрывает примерно в 87% случаев), но работает заметно дольше. Идеален для финальной сборки, где время не критично, а каждый килобайт на счету.
zopflipng --iterations=60 image.png image-min.png
Совет: соберите конвейер
Цепочка «pngquant → oxipng» в одном скрипте даёт лучший баланс размера и качества. На пакете иконок и UI-графики это стабильно −70% к весу — без видимой деградации.
А что с метаданными?
Удаление служебных чанков (дата, имя ПО, XMP, иногда ICC-профиль) — отдельный маленький рычаг. Для обычного скриншота это экономит лишь пару килобайт, но если редактор зашил тяжёлый ICC-профиль или XMP-блок, можно срезать 5–15 КБ. Чистят метаданные те же optipng/oxipng (флаг -strip) или ImageMagick.
Осторожнее с цветом
Если в файле есть осмысленный ICC-профиль (например, для печати или широкого цветового охвата), полная чистка -strip all может сместить цвета на экранах с управлением цветом. Для веба это обычно безопасно; для печати используйте --strip safe или сохраняйте профиль.
PNG-8 против PNG-24: в чём разница
Когда говорят «перевести PNG в PNG-8», имеют в виду именно квантизацию. Разница между режимами — ключ к пониманию, почему файл худеет так сильно.
| Параметр | PNG-8 (палитра) | PNG-24 / 32 (truecolor) |
|---|---|---|
| Число цветов | до 256 | до 16,7 млн |
| Размер файла | Маленький | Большой |
| Прозрачность | Да (в т.ч. полупрозрачность*) | Полная (альфа-канал) |
| Идеален для | Иконки, логотипы, UI, плоская графика | Фото, сложные градиенты |
| Потери | Да (квантизация) | Нет |
* Современные квантизаторы (pngquant, TinyPNG) умеют сохранять плавную полупрозрачность в PNG-8, а не только «вкл/выкл» прозрачность, как в старых редакторах.
Вывод простой: иконку, логотип или скриншот интерфейса смело гоните в PNG-8 — потерь вы не увидите, а файл усохнет в разы. А вот фотографию или картинку с тонкими градиентами в 256 цветов лучше не зажимать: появится «полосатость» (бэндинг). Для таких изображений правильнее перейти на WebP или JPG.
Когда пора переходить на WebP или JPG
Иногда самый честный способ уменьшить PNG — это перестать использовать PNG. Не для всего, но для многих задач другой формат справится лучше.
- WebP — для веба по умолчанию. Без потерь он примерно на 26% меньше PNG при идентичном качестве, поддерживает прозрачность и анимацию, и работает в 96%+ браузеров. Для логотипов, иконок и UI это почти всегда правильный выбор. Самый быстрый путь — конвертер PNG → WebP.
- JPG — для фотографий без прозрачности. Снимок в PNG почти всегда избыточен. JPG ужмёт ту же фотографию в 5–10 раз сильнее. Минус один: прозрачность не поддерживается (прозрачные области станут белыми). Инструмент — конвертер PNG → JPG.
- AVIF — на острие. Сжимает ещё примерно на 10% плотнее WebP, но поддержка чуть скромнее. Хороший вариант с PNG/WebP-фолбэком для самых тяжёлых изображений.
- Оставить PNG. Если нужна абсолютная точность пикселей и совместимость со всем подряд (печать, e-mail, старый софт) — PNG, но обязательно прогнанный через оптимизатор.
Правило большого пальца
Нужна прозрачность и сайт → WebP. Фото без прозрачности → JPG. Резкая графика/логотип/печать → PNG (оптимизированный). Это покрывает 95% реальных случаев.
Чек-лист: ужать PNG за 5 минут
Короткий алгоритм, который работает почти всегда. Идите сверху вниз и остановитесь там, где результат вас устроил.
- ✅ Это фото без прозрачности? → переведите в JPG (PNG → JPG) и закончите.
- ✅ Это графика для веба? → пересохраните в WebP (PNG → WebP) — минус ~26% бесплатно.
- ✅ Нужен именно PNG? → прогоните через квантизатор (pngquant / TinyPNG) — минус 60–70%.
- ✅ Добейте без потерь. → optipng/oxipng с
-strip— ещё минус несколько процентов и долой метаданные. - ✅ Проверьте разрешение. → если картинка крупнее, чем показывается, уменьшите её перед сжатием — это часто даёт больше, чем все оптимизаторы вместе.
- ✅ Сравните глазами. → откройте оригинал и результат рядом. Не видите разницы? Значит, всё сделано правильно.
Хотите конвертировать пачкой или попробовать другие форматы? Полный список преобразований — на странице всех форматов FormatZ.
Частые вопросы о сжатии PNG
Читайте также
ОсновыЧто такое PNG: всё о формате простыми словами
Как устроен PNG, зачем нужна прозрачность и почему он без потерь.
СравнениеPNG или JPG: что выбрать и когда
Прозрачность, качество и размер — где каждый формат сильнее.
ГайдПрозрачность в PNG: как работает альфа-канал
Почему PNG умеет в прозрачный фон и как им пользоваться.