Zopflipng: консольная утилита Google для оптимизации PNG-файлов
ZopfliPNG, чаще запускаемый по имени исполняемого файла zopflipng, — это узкоспециализированная программа для оптимизации PNG-изображений. Она не редактирует картинку как графический редактор, не накладывает фильтры, не делает ретушь и не превращает PNG в новый формат. Ее задача уже: взять готовый PNG-файл и попытаться записать его компактнее, сохранив совместимость с обычными просмотрщиками, браузерами и библиотеками, которые умеют читать PNG.
Содержание
- 1 Скачать Zopflipng
- 2 Что такое ZopfliPNG
- 3 Главное назначение программы
- 4 Чем ZopfliPNG отличается от обычного сжатия PNG
- 5 Интерфейс программы
- 6 Что программа умеет делать
- 7 Основные параметры ZopfliPNG
- 8 Практическая инструкция: как сжать один PNG
- 9 Практическая инструкция: пакетная оптимизация папки
- 10 Как работает ZopfliPNG внутри
- 11 Почему ZopfliPNG может быть медленным
- 12 Работа с прозрачностью
- 13 Работа с 16-битными PNG
- 14 Работа с метаданными и color management
- 15 Типовые команды для разных задач
- 16 Пример рабочего сценария для сайта
- 17 ZopfliPNG в автоматизации
- 18 Что ZopfliPNG не делает
- 19 Качество результата
- 20 История версий программы
- 21 Сравнение с аналогами
- 22 Преимущества ZopfliPNG
- 23 Недостатки ZopfliPNG
- 24 Оптимальные настройки по сценариям
- 25 Частые ошибки при работе с ZopfliPNG
- 26 ZopfliPNG для WordPress и CMS
- 27 ZopfliPNG для разработчика
- 28 ZopfliPNG для дизайнера
- 29 ZopfliPNG для технического SEO
- 30 Безопасность и лицензия
- 31 Когда ZopfliPNG стоит использовать
- 32 Когда программа не подойдет
- 33 Итоговая оценка
Скачать Zopflipng
Новейшая версия для Windows и macOS. Удобный редактор с ИИ и профессиональными функциями.
Главная идея ZopfliPNG — более плотное Deflate-сжатие внутри PNG. Сам PNG использует сжатые блоки IDAT, а zopflipng заново подбирает способ упаковки данных изображения: применяет Zopfli-сжатие, перебирает стратегии PNG-фильтров, может выбрать более подходящий color type, удаляет необязательные chunks и при необходимости меняет скрытые цвета у полностью прозрачных пикселей. Это делает программу полезной для веб-графики, интерфейсных PNG, иконок, скриншотов, ассетов сайтов и финальной подготовки статичных изображений перед публикацией.

Скриншот хорошо показывает реальный характер программы: это не окно с кнопками, а терминальный инструмент. Вся работа идет через команды, параметры и вывод в консоль. Для ZopfliPNG это нормальный формат интерфейса, потому что программа рассчитана на точную настройку и автоматизацию, а не на ручное редактирование изображения мышью.
Что такое ZopfliPNG
ZopfliPNG — командная утилита для оптимизации Portable Network Graphics, то есть PNG-файлов. Полное название программы обычно пишут как ZopfliPNG, а команда запуска — zopflipng. Это различие важно: в обзорах, документации, пакетах и статьях можно встретить оба названия, но на практике пользователь чаще работает именно с командой zopflipng.
Программа относится к классу PNG optimizer, но внутри этого класса занимает отдельное место. Она не просто запускает стандартное zlib-сжатие с высоким уровнем компрессии, а использует алгоритм Zopfli, ориентированный на получение более плотного Deflate-потока. Zopfli создавался как медленный, но эффективный компрессор Deflate/zlib/gzip: результат обычно распаковывается стандартными средствами, а дополнительная нагрузка ложится именно на этап сжатия.
В PNG это особенно логично. Формат PNG уже построен вокруг lossless-сжатия, поэтому ZopfliPNG не меняет сам формат файла. На выходе остается обычный .png, который открывается в браузере, графическом редакторе, CMS, мобильном приложении или системном просмотрщике. Пользователь получает не специальный закрытый файл, а стандартный PNG с более тщательно упакованными данными.
ZopfliPNG особенно хорошо вписывается в рабочие процессы, где изображение уже подготовлено, но его нужно уменьшить перед публикацией. Это не программа для творчества, а программа для финальной технической доводки файла.
Главное назначение программы
ZopfliPNG нужен там, где PNG уже выбран как формат, а задача состоит в уменьшении веса файла без визуальной потери качества. Программа особенно полезна для изображений, которые редко меняются, но много раз загружаются пользователями.
Типичные сценарии:
PNG-иконки интерфейса;
логотипы с прозрачностью;
скриншоты программ;
элементы UI;
декоративные изображения сайта;
изображения в темах WordPress и шаблонах сайтов;
ассеты фронтенд-проектов;
статичные PNG в документации;
графика для приложений, где важен каждый килобайт;
изображения, которые попадают в build pipeline;
игровые 2D-ассеты;
спрайты;
небольшие схемы с четкими цветами;
изображения, где нельзя перейти на WebP или AVIF.
Важная особенность: ZopfliPNG лучше воспринимать как инструмент финальной упаковки. Его не стоит запускать после каждого сохранения макета, потому что программа может работать заметно медленнее простых PNG-оптимизаторов. Зато она уместна на финальном этапе: когда изображение уже готово, проверено и больше не требует визуального редактирования.
Чем ZopfliPNG отличается от обычного сжатия PNG
Обычное сохранение PNG в редакторе часто делает только базовую упаковку изображения. Файл получается корректным, но не обязательно минимальным. ZopfliPNG работает глубже: он анализирует структуру PNG и пытается записать изображение компактнее, не заставляя пользователя менять формат.
| Механизм | Что делает ZopfliPNG | Практический эффект |
|---|---|---|
| Deflate-сжатие | Перепаковывает данные через Zopfli | PNG может стать меньше без смены формата |
| PNG-фильтры | Пробует разные стратегии фильтрации строк | Иногда дает заметный выигрыш на скриншотах и UI-графике |
| Color type | Может подобрать более компактное представление цвета | Например, не хранить лишние каналы, если они не нужны |
| Ancillary chunks | Удаляет необязательную служебную информацию | Уменьшает файл, но требует внимания к gamma, DPI и ICC |
| Прозрачность | Может очистить скрытые цвета под полной прозрачностью | Визуально картинка не меняется, но исчезают скрытые данные |
| 16-bit → 8-bit | Может перевести 16-битные каналы в 8-битные | Уменьшает размер, но это уже не строго lossless по данным |
Программа аккуратно работает с критическими PNG-блоками, без которых файл не будет нормальным PNG. По умолчанию сохраняются и при необходимости без потерь изменяются основные chunks: IHDR, PLTE, tRNS, IDAT, IEND. Остальные chunks, например текстовые комментарии, gamma, DPI или цветовые профили, могут быть удалены, если пользователь явно не попросит их сохранить через --keepchunks.
Интерфейс программы
У ZopfliPNG нет графического интерфейса. Нет кнопок Открыть, Сжать, Сохранить как, панели предпросмотра и окна настроек. Интерфейс программы — это командная строка.
Базовая схема работы выглядит так:
zopflipng [options]... infile.png outfile.pngДля обработки нескольких файлов используется режим с префиксом:
zopflipng [options]... --prefix=[fileprefix] [files.png]...Именно так программа устроена: сначала пишется команда zopflipng, затем параметры, затем входной PNG и имя выходного PNG. При пакетной обработке вместо одного выходного имени задается --prefix, а выходные файлы получают добавку к имени.
Что пользователь видит в консоли
При запуске ZopfliPNG выводит информацию о ходе оптимизации. Обычно в консоли видны:
имя оптимизируемого файла;
выбранные или перебираемые filter strategies;
размер результата для отдельных стратегий;
исходный размер;
итоговый размер;
процент от исходного файла;
сообщение
Result is smaller, если результат стал меньше;сообщение о сохранении оригинала, если новая версия больше.
Типичный вывод выглядит примерно так:
Optimizing image.pngInput size: 130432 (127K)Result size: 105074 (102K). Percentage of original: 80.558%Result is smallerЭто удобный формат для автоматизации. По выводу сразу видно, сработала ли оптимизация, насколько уменьшился PNG и стоит ли сохранять результат.
Что программа умеет делать
ZopfliPNG не перегружен функциями, но каждая функция относится именно к задаче PNG-оптимизации.
Сжатие одного PNG-файла
Базовая задача — взять один файл и создать уменьшенную копию:
zopflipng input.png output.pngПрограмма читает input.png, оптимизирует его и записывает результат в output.png. Если выходной файл уже существует и оказался меньше результата нового запуска, ZopfliPNG рассматривает его как более удачный результат предыдущей оптимизации и не перезаписывает более крупной версией. Это поведение полезно при повторных экспериментах с настройками.
Более сильное сжатие через -m
Параметр -m включает режим compress more:
zopflipng -m input.png output.pngВ этом режиме программа использует больше итераций. Обработка занимает больше времени, но может дать лучший результат по размеру. Это один из самых простых способов усилить оптимизацию без ручного подбора фильтров.
Пакетная оптимизация через --prefix
Для нескольких файлов используется --prefix:
zopflipng --prefix=optimized_ icon.png logo.png screenshot.pngПосле такой команды программа создаст файлы с префиксом:
optimized_icon.pngoptimized_logo.pngoptimized_screenshot.pngЕсли написать --prefix без значения, используется стандартный префикс zopfli_. Это удобно при обработке папки через wildcard:
zopflipng --prefix=zopfli_ *.pngПреимущество такого подхода — безопасность. Исходники остаются на месте, а оптимизированные копии создаются рядом. Для контент-менеджера, верстальщика или владельца сайта это лучше, чем сразу перезаписывать оригиналы.
Dry run через -d
Параметр -d запускает dry run:
zopflipng -d input.png output.pngВ этом режиме программа не сохраняет файлы, а только показывает консольный вывод. Это полезно для тестирования, бенчмарков и сравнения настроек. Можно понять, даст ли конкретная комбинация параметров выигрыш, не создавая лишних файлов.
Автоматическое согласие на перезапись через -y
Параметр -y отключает вопросы о перезаписи:
zopflipng -y input.png output.pngОн особенно полезен в скриптах, где нельзя ждать интерактивного ответа пользователя. Вручную его стоит использовать аккуратно: если нет резервной копии, можно потерять исходный файл или уже подготовленную оптимизированную версию.
Сохранение служебных chunks через --keepchunks
По умолчанию ZopfliPNG удаляет необязательную метаинформацию. Это хорошо для веса файла, но не всегда хорошо для точности отображения и печатных параметров. Чтобы сохранить конкретные PNG-chunks, используется --keepchunks:
zopflipng --keepchunks=gAMA,pHYs input.png output.pngТакой запуск сохраняет gamma и DPI-информацию. Для изображений, где важны цветовой профиль, гамма-коррекция или физическое разрешение, это критичный параметр. Формат записи строгий: имена chunks идут через запятую, например gAMA,cHRM,sRGB,iCCP.
Сохранение исходного color type через --keepcolortype
ZopfliPNG может менять color type PNG, если это дает более компактную запись без визуальной потери. Например, если изображение фактически серое, ему не обязательно храниться как полноценный RGBA. Но иногда исходный color type нужно оставить: для совместимости с конкретным устройством, старым движком, нестандартным пайплайном или строгими требованиями к ассетам.
Для этого есть параметр:
zopflipng --keepcolortype input.png output.pngОн сохраняет исходный тип цвета и битовую глубину PNG. Цена — потеря части возможностей для дополнительного сжатия.
Основные параметры ZopfliPNG
-m
-m — самый простой способ попросить программу сжать сильнее. Он не требует разбираться в фильтрах и chunks. Команда:
zopflipng -m image.png image.optimized.pngПодходит для финальной подготовки файлов, когда важен размер, а время обработки не критично. Для больших скриншотов, PNG с прозрачностью и сложной UI-графики разница может быть заметной, но универсальной гарантии нет: иногда обычный запуск уже дает почти тот же результат.
--iterations=[number]
Параметр задает количество итераций Zopfli:
zopflipng --iterations=50 input.png output.pngЧем больше итераций, тем дольше обработка. Результат может стать чуть меньше, но после определенного уровня улучшение обычно становится минимальным. Практический смысл такой:
| Значение | Когда использовать |
|---|---|
5–15 | обычная оптимизация, быстрые проверки |
30–50 | финальная оптимизация важных файлов |
100+ | редкие случаи, когда важен каждый байт |
500 | тесты, соревнование за минимальный размер, не повседневная работа |
Для обычного сайта нет смысла ставить --iterations=500 на всю папку изображений. Это может занять много времени, а выигрыш относительно умеренных настроек окажется небольшим. Больше итераций делает обработку медленнее и иногда дает дополнительное, но обычно небольшое улучшение.
--filters=[types]
PNG-фильтры — один из важных механизмов сжатия. Перед Deflate-сжатием каждая строка изображения может быть предварительно преобразована одним из фильтров. Иногда правильно выбранный фильтр резко облегчает дальнейшее сжатие.
ZopfliPNG умеет пробовать такие стратегии:
| Обозначение | Значение |
|---|---|
0 | всем scanlines задается PNG filter type 0 |
1 | всем scanlines задается PNG filter type 1 |
2 | всем scanlines задается PNG filter type 2 |
3 | всем scanlines задается PNG filter type 3 |
4 | всем scanlines задается PNG filter type 4 |
m | minimum sum |
e | entropy |
p | predefined, то есть сохранение фильтров из исходного PNG |
b | brute force, экспериментальный режим |
Практичная команда:
zopflipng --filters=0me input.png output.pngКомбинация 0me часто рассматривается как хороший набор для пробы. Более агрессивный вариант:
zopflipng --iterations=100 --filters=01234mepb input.png output.pngТакой запуск перебирает много стратегий и может работать очень долго. Он подходит не для каждой картинки, а для отдельных важных PNG, где нужно выжать максимум.
--lossy_transparent
Параметр:
zopflipng --lossy_transparent input.png output.pngОн удаляет цвета за полностью прозрачными пикселями, где alpha равна 0. Визуально изображение не меняется, потому что эти пиксели полностью невидимы. Но технически данные меняются: скрытая информация под прозрачностью исчезает.
Этот режим уместен для веб-графики, иконок, декоративных PNG, UI-элементов. Он не подходит, если прозрачные пиксели используются как технический контейнер для данных, масок, последующей обработки или нестандартного графического пайплайна.
--lossy_8bit
Параметр:
zopflipng --lossy_8bit input.png output.pngОн переводит изображение с 16 бит на канал в 8 бит на канал. Это может значительно уменьшить размер, но уже не является строгим lossless-преобразованием по данным изображения. Для обычной веб-графики 8 бит на канал часто достаточно, но для медицинских, научных, печатных, HDR-подобных или технических изображений такой параметр использовать нельзя без проверки.
--always_zopflify
Параметр:
zopflipng --always_zopflify input.png output.pngОн заставляет программу сохранить результат Zopfli даже тогда, когда он больше исходного файла. Это режим для бенчмарков и анализа алгоритма, а не для нормальной оптимизации. В повседневной работе параметр почти не нужен.
-q
Параметр:
zopflipng -q input.png output.png-q включает быстрый, но не лучший режим компрессии. Он нужен для ускоренной проверки PNG-фильтров и color type, но не для получения минимального размера. Для финальной подготовки ассетов лучше использовать обычный режим или -m.
--splitting=[0-3]
Этот параметр оставлен для обратной совместимости и игнорируется. Использовать его в новых командах смысла нет.
Практическая инструкция: как сжать один PNG
Рабочий сценарий для одного файла выглядит так.
Шаг 1. Подготовить исходник
Допустим, есть файл:
logo.pngЛучше не оптимизировать единственный экземпляр без копии. Безопаснее создать новый файл:
zopflipng logo.png logo.optimized.pngШаг 2. Посмотреть результат в консоли
После запуска программа покажет исходный и итоговый размер. Если результат меньше, появится сообщение:
Result is smallerЕсли новый PNG получился больше, ZopfliPNG сохранит более выгодный вариант или предупредит, что исходник меньше. Это важное поведение: программа не пытается любой ценой заменить файл более крупной версией.
Шаг 3. Проверить изображение глазами
Для обычного lossless-запуска картинка должна выглядеть так же. Но если программа удалила chunks, теоретически может измениться интерпретация gamma, DPI или цветового профиля в конкретном приложении. Поэтому после оптимизации логотипа, скриншота интерфейса или графики с точными фирменными цветами нужно открыть файл в целевом окружении: браузере, CMS, мобильном приложении, редакторе или просмотрщике.
Шаг 4. При необходимости сохранить chunks
Если после оптимизации важны gamma и DPI:
zopflipng --keepchunks=gAMA,pHYs logo.png logo.optimized.pngЕсли нужен цветовой профиль:
zopflipng --keepchunks=sRGB,iCCP,gAMA,cHRM logo.png logo.optimized.pngЧем больше chunks сохраняется, тем меньше потенциальный выигрыш по размеру. Это нормальный компромисс между минимальным весом и сохранением служебной информации.
Практическая инструкция: пакетная оптимизация папки
Для папки с PNG лучше не перезаписывать оригиналы сразу. Безопасный вариант:
zopflipng --prefix=opt_ *.pngЕсли в папке лежат:
icon.pnglogo.pngscreen.pngна выходе появятся:
opt_icon.pngopt_logo.pngopt_screen.pngТакой подход удобен в работе с сайтами. Можно быстро сравнить исходные и оптимизированные файлы, проверить отображение, затем заменить только те изображения, где результат действительно лучше.
Пакетная обработка с усиленным сжатием
zopflipng -m --prefix=opt_ *.pngЭто разумный вариант для финальной обработки небольшого набора изображений. Для сотен и тысяч PNG лучше сначала сделать тест на части файлов, потому что -m может заметно увеличить время.
Пакетная обработка с сохранением gamma и DPI
zopflipng --keepchunks=gAMA,pHYs --prefix=opt_ *.pngКоманда полезна для изображений, где физическое разрешение или гамма-коррекция не должны исчезнуть. Для обычных декоративных PNG на сайте эти chunks часто не нужны, но для документации, печатных материалов и изображений с контролируемым отображением лучше не удалять их автоматически.
Как работает ZopfliPNG внутри
PNG-файл состоит из chunks. Критические chunks формируют структуру изображения, а дополнительные chunks хранят метаданные, цветовую информацию, текст, гамму, DPI и другие сведения. Основные пиксельные данные лежат в IDAT и сжимаются Deflate. ZopfliPNG работает именно с этой внутренней структурой.
Упрощенно процесс выглядит так:
программа читает PNG;
декодирует данные изображения;
анализирует color type и битовую глубину;
пробует стратегии PNG-фильтрации;
заново сжимает данные через Zopfli;
удаляет необязательные chunks, если пользователь не попросил их сохранить;
сравнивает размер результата с исходником;
записывает итоговый PNG, если результат имеет смысл.
ZopfliPNG не делает магии с качеством изображения. Он не улучшает резкость, не дорисовывает детали, не чистит шум. Его работа — структурная и компрессионная. Программа пытается записать те же данные компактнее.
Почему ZopfliPNG может быть медленным
Высокое сжатие Zopfli достигается ценой времени. Алгоритм тратит больше CPU-ресурсов на поиск более выгодного представления Deflate-потока. Для небольших иконок это может быть незаметно, но для крупных скриншотов, больших PNG с прозрачностью или массовой обработки папки разница становится очевидной.

На скриншоте видны несколько процессов zopflipng, активно загружающих CPU. Это характерная особенность инструмента: он рассчитан не на мгновенную интерактивную работу, а на финальную офлайн-оптимизацию. Даже при использовании через сторонние оболочки фактическую работу выполняет тот же консольный процесс.
Для сайта или приложения это нормальная модель: один раз потратить больше времени на подготовку ассетов, а затем многократно отдавать пользователям более легкие файлы. Но для сценария пересохранять картинку каждые 10 секунд ZopfliPNG неудобен.
Работа с прозрачностью
PNG часто выбирают именно из-за прозрачности. Логотипы, иконки, кнопки, интерфейсные элементы и декоративные иллюстрации обычно используют alpha-канал. ZopfliPNG умеет работать с такими файлами без визуальной потери качества.
Особенно интересен параметр:
zopflipng --lossy_transparent input.png output.pngУ PNG с прозрачностью бывают пиксели, которые полностью невидимы, но все равно хранят RGB-значения. Например, под прозрачной областью может лежать старый цвет, фрагмент фона или техническая информация, оставшаяся после экспорта. Для отображения в браузере эти цвета не нужны: alpha равна 0, значит пиксель полностью прозрачен.
--lossy_transparent очищает такие скрытые цвета. В результате Deflate-сжатию проще найти повторяющиеся данные, и файл может стать меньше. Визуально картинка остается такой же, но с точки зрения исходных данных это уже изменение.
Когда --lossy_transparent уместен
Параметр хорошо подходит для:
иконок сайта;
PNG-кнопок;
логотипов с прозрачным фоном;
декоративных элементов интерфейса;
скриншотов с прозрачными областями;
игровых UI-ассетов, если движок не использует скрытый RGB под alpha 0.
Когда его лучше не использовать
Параметр лучше не применять, если:
прозрачные пиксели несут техническую информацию;
PNG используется в нестандартном графическом пайплайне;
изображение потом снова редактируется как исходник;
файл участвует в автоматической генерации масок;
требуется побайтовая сохранность исходных RGBA-данных.
Для сайта почти всегда важен визуальный результат. Для исходников дизайна важны данные. Поэтому --lossy_transparent лучше считать настройкой для финального экспортного PNG, а не для мастер-файла.
Работа с 16-битными PNG
ZopfliPNG умеет преобразовать 16-битное изображение в 8-битное через --lossy_8bit:
zopflipng --lossy_8bit input.png output.pngЭто может дать сильное уменьшение размера, потому что количество данных на канал сокращается. Но такой режим меняет глубину цвета. Для обычной веб-графики это может быть приемлемо, а для технических изображений — нет.
| Тип изображения | Можно ли использовать --lossy_8bit |
|---|---|
| Иконка сайта | обычно да, после визуальной проверки |
| Скриншот интерфейса | обычно да, если нет требований к 16 битам |
| Логотип | осторожно, проверять градиенты и цвет |
| Фотография в PNG | чаще лучше выбрать другой формат |
| Медицинское изображение | нет |
| Научная визуализация | нет без согласования |
| Печатный оригинал | нет, если важна глубина цвета |
Название параметра начинается с lossy не случайно. Это не просто лучшее сжатие, а изменение данных изображения.
Работа с метаданными и color management
Одна из самых важных особенностей ZopfliPNG — удаление ancillary chunks. Для веб-иконок это часто хорошо: текстовые комментарии, редакторские метки, лишние профили и DPI могут только увеличивать размер. Но в ряде случаев chunks нужны.
Примеры chunks, которые могут иметь значение:
| Chunk | Что может хранить |
|---|---|
gAMA | gamma-информацию |
pHYs | физическое разрешение, DPI-подобные данные |
sRGB | указание на sRGB |
iCCP | ICC-профиль |
cHRM | chromaticity |
tEXt | текстовые метаданные |
zTXt | сжатые текстовые метаданные |
iTXt | международный текст |
Если важна точная передача цвета, можно использовать:
zopflipng --keepchunks=sRGB,iCCP,gAMA,cHRM input.png output.pngЕсли нужно сохранить DPI:
zopflipng --keepchunks=pHYs input.png output.pngЕсли нужно сохранить комментарии:
zopflipng --keepchunks=tEXt,zTXt,iTXt input.png output.pngСохранение chunks увеличивает результат. Это не ошибка, а нормальная цена за метаданные. ZopfliPNG по умолчанию ориентирован на типичное веб-использование, где лишняя служебная информация часто не нужна.
Типовые команды для разных задач
| Задача | Команда | Комментарий |
|---|---|---|
| Сжать один PNG | zopflipng input.png output.png | базовый безопасный вариант |
| Сжать сильнее | zopflipng -m input.png output.png | медленнее, но может дать меньший файл |
| Проверить без сохранения | zopflipng -d input.png output.png | удобно для тестов |
| Пакетная обработка | zopflipng --prefix=opt_ *.png | создает копии с префиксом |
| Сохранить gamma и DPI | zopflipng --keepchunks=gAMA,pHYs input.png output.png | полезно для точного отображения |
| Очистить скрытые цвета под прозрачностью | zopflipng --lossy_transparent input.png output.png | визуально без изменений, но данные меняются |
| Перебрать полезные фильтры | zopflipng --filters=0me input.png output.png | практичный набор |
| Максимально агрессивный тест | zopflipng --iterations=500 --filters=01234mepb --lossy_8bit --lossy_transparent input.png output.png | не для повседневной обработки |
Пример рабочего сценария для сайта
Допустим, есть папка:
/assets/img/В ней лежат PNG-иконки, логотипы и скриншоты. Логика подготовки может быть такой:
сохранить исходники отдельно;
скопировать экспортные PNG в рабочую папку;
запустить ZopfliPNG с префиксом;
проверить размер;
открыть важные изображения в браузере;
заменить только те файлы, где результат стал меньше;
не применять lossy-параметры к файлам, которые потом будут редактироваться.
Команда для первого прохода:
zopflipng --prefix=opt_ *.pngКоманда для более сильной финальной упаковки:
zopflipng -m --filters=0me --prefix=opt_ *.pngКоманда для логотипов с сохранением цветовой информации:
zopflipng -m --filters=0me --keepchunks=sRGB,iCCP,gAMA,cHRM --prefix=opt_ *.pngДля обычных декоративных элементов можно быть агрессивнее:
zopflipng -m --lossy_transparent --prefix=opt_ *.pngНо смешивать все изображения в одну команду не всегда правильно. Логотип, технический скриншот и декоративная иконка могут требовать разных настроек.
ZopfliPNG в автоматизации
CLI-формат делает программу удобной для автоматизации. Ее можно использовать в shell-скриптах, npm scripts, CI/CD, задачах сборки сайта и локальных пайплайнах подготовки ассетов.
Простой shell-подход:
for file in *.png; do zopflipng -m "$file" "opt_$file"doneБолее осторожный подход:
mkdir -p optimizedfor file in *.png; do zopflipng -m "$file" "optimized/$file"doneДля Windows PowerShell:
New-Item -ItemType Directory -Force optimizedGet-ChildItem *.png | ForEach-Object { zopflipng -m $_.FullName "optimized$($_.Name)"}Для проекта, где PNG меняются редко, ZopfliPNG можно запускать только перед релизом. Это снижает нагрузку на разработчика: во время работы используются быстрые обычные экспорты, а перед публикацией ассеты проходят тяжелую финальную оптимизацию.
Что ZopfliPNG не делает
ZopfliPNG важно не переоценивать. Это не универсальная программа для изображений, а точный инструмент для одной задачи.
Программа не делает:
обрезку изображения;
изменение размера;
поворот;
коррекцию цвета;
ретушь;
удаление фона;
добавление водяных знаков;
конвертацию JPEG в PNG;
экспорт WebP или AVIF;
сравнение визуального качества;
просмотр результата в окне;
пакетную сортировку изображений по папкам;
работу с PSD, SVG, HEIC, RAW как с редакторскими форматами.
Если нужно изменить размер, сначала используется графический редактор или конвертер. Если нужно получить современный веб-формат, берется WebP/AVIF-инструмент. Если нужно именно сжать готовый PNG без смены формата, тогда ZopfliPNG уместен.
Качество результата
При обычных настройках ZopfliPNG сохраняет визуальное качество PNG. Это lossless-оптимизация в практическом смысле: пиксели отображаются так же, формат остается PNG, а браузеру не нужен новый декодер.
Но есть три оговорки:
удаление chunks может повлиять на интерпретацию цвета или DPI;
--lossy_transparentменяет скрытые RGB-данные под полной прозрачностью;--lossy_8bitменяет глубину цвета.
Поэтому корректная практика такая: отдельно хранить исходники, отдельно оптимизировать экспортные PNG, а затем проверять важные изображения в целевом окружении.
История версий программы
Zopfli появился как проект Google для более плотного Deflate/zlib/gzip-сжатия. Первая публичная волна интереса к алгоритму пришлась на 2013 год: Zopfli предлагал получить меньший Deflate-совместимый результат ценой более долгой компрессии. Для PNG это было особенно интересно, потому что PNG использует Deflate внутри IDAT-данных.
ZopfliPNG вошел в экосистему Zopfli как отдельная PNG-утилита. В мае 2013 года ZopfliPNG был принят в репозиторий Zopfli; программа получила роль специализированного оптимизатора PNG, работающего поверх Zopfli-сжатия и PNG-фильтров.
В истории релизов проекта выделяются версии zopfli-1.0.1, zopfli-1.0.2 и zopfli-1.0.3. В этих версиях важны не внешние изменения интерфейса, а стабилизация алгоритма, сборки, поведения командной строки и совместимости с рабочими пайплайнами.
| Период | Что важно для ZopfliPNG |
|---|---|
| 2013 | Zopfli получает публичное внимание как Deflate-совместимый компрессор с упором на плотность |
| 2013 | ZopfliPNG закрепляется как PNG-оптимизатор в экосистеме Zopfli |
| 1.0.1 | Релизная линия Zopfli уже включает отдельные версии проекта |
| 1.0.2 | Продолжение стабилизации и обновления сборочной инфраструктуры |
| 1.0.3 | Закрепленная релизная версия, встречающаяся в пакетах и man pages |
История ZopfliPNG не похожа на историю массового графического редактора с ежегодными большими релизами и изменением интерфейса. У программы нет ленты функций в стиле добавили кнопку, изменили панель, перерисовали окно. Это консольная утилита, где развитие выражается в алгоритмах, совместимости, сборке, параметрах и интеграции в другие пайплайны.

Этот тип иллюстрации подходит для ZopfliPNG лучше, чем искусственные окна программы: утилита живет в командной строке, исходниках, man pages, скриптах сборки и автоматизированных сценариях.
Сравнение с аналогами
ZopfliPNG нужно сравнивать не с графическими редакторами, а с реальными PNG-оптимизаторами. У каждого инструмента своя логика: одни быстрее, другие удобнее, третьи сильнее уменьшают размер ценой потерь, четвертые лучше подходят для массовой обработки.
| Программа | Тип | Сильные стороны | Ограничения |
|---|---|---|---|
| OptiPNG | CLI, lossless | простая работа, быстрая оптимизация, проверка и исправление PNG | обычно менее агрессивен по Deflate-плотности |
| pngcrush | CLI, lossless/модификация chunks | много настроек, работа с IDAT и ancillary chunks | менее дружелюбен для новичка |
| Oxipng | CLI/library, lossless | многопоточность, высокая скорость, современная реализация на Rust | при максимальных режимах тоже требует времени |
| pngquant | CLI/library, lossy | очень сильное уменьшение PNG за счет палитры, поддержка alpha | меняет изображение, не strict lossless |
| PNGOUT | CLI/GUI-экосистема, lossless | сильное PNG-сжатие, исторически известный оптимизатор | менее удобен в открытых автоматизированных пайплайнах |
| ImageOptim | GUI для macOS | удобная drag-and-drop обработка, использует несколько оптимизаторов | меньше контроля над отдельными параметрами |
| Squoosh | веб-интерфейс | удобно вручную сравнивать форматы и качество | не заменяет CLI-пайплайн для автоматизации |
OptiPNG — хороший выбор, когда нужен надежный и понятный PNG optimizer без сложной настройки. Он умеет уменьшать PNG без потери информации, выполнять проверки целостности, исправления и вспомогательные операции. Для больших папок и регулярной обработки OptiPNG часто проще и быстрее.
pngcrush — более технический инструмент. Он ориентирован на уменьшение IDAT stream и может работать с ancillary chunks: удалять ненужные или добавлять нужные, включая gAMA, tRNS, iCCP и текстовые chunks. Он подходит тем, кто понимает структуру PNG и хочет управлять деталями.
Oxipng — современный lossless-оптимизатор PNG/APNG, написанный на Rust. Его сильная сторона — многопоточность и хорошая скорость при массовой обработке. Для проектов с большим количеством PNG он часто удобнее как повседневный инструмент, особенно если нужно быстро прогнать папку ассетов.
pngquant принципиально отличается: это lossy PNG compressor. Он уменьшает размер через преобразование в более компактный 8-битный PNG с alpha-каналом и может давать очень большой выигрыш, часто намного больше, чем strict lossless-инструменты. Но это уже не сохранение исходных данных пиксель в пиксель. Для иллюстраций, UI и веб-графики pngquant часто полезен, но для строгих исходников и технических изображений его нужно применять осторожно.
ZopfliPNG выигрывает там, где нужен именно стандартный PNG, где нельзя переходить на WebP/AVIF, где нежелательна палитровая потеря качества и где можно позволить медленную финальную оптимизацию. Он проигрывает там, где важна скорость, массовая ежедневная обработка или удобный визуальный интерфейс.
Преимущества ZopfliPNG
Высокая плотность сжатия
Главное преимущество — способность выжимать дополнительные проценты из PNG за счет Zopfli. На отдельных файлах это может быть скромно, на других — заметно. Важнее другое: результат остается обычным PNG, а значит не требует от пользователя перехода на новый формат.
Удобство для автоматизации
CLI-формат позволяет включить ZopfliPNG в скрипты, сборки, релизы и серверные процессы. Команда не требует GUI, не зависит от ручных кликов и может быть частью повторяемого пайплайна.
Гибкие параметры
Пользователь может управлять:
числом итераций;
фильтрами;
сохранением chunks;
очисткой скрытых прозрачных данных;
сохранением color type;
режимом dry run;
пакетной обработкой через prefix.
Безопасное сравнение размеров
Программа не стремится сохранить более крупный результат вместо исходника при обычной оптимизации. Если оптимизированный вариант не лучше, это отражается в консольном выводе.
Подходит для финальной веб-оптимизации
Для сайтов, где PNG уже выбран по техническим причинам, ZopfliPNG помогает уменьшить вес ассетов без перехода на другой формат. Это особенно полезно для иконок, логотипов, декоративных элементов и скриншотов.
Недостатки ZopfliPNG
Низкая скорость
Главный минус — время. ZopfliPNG может быть значительно медленнее обычных оптимизаторов. Это не ошибка реализации, а следствие подхода: программа тратит CPU-время на более тщательный поиск компактного представления.
Нет графического интерфейса
Для пользователя, привыкшего к кнопкам и drag-and-drop, zopflipng неудобен. Нужно открыть терминал, написать команду, понять параметры и оценить результат по консольному выводу.
Нужно понимать chunks
Удаление metadata chunks полезно для размера, но может быть нежелательным для цвета, DPI и служебной информации. Пользователь должен знать, когда применять --keepchunks.
Не всегда дает выигрыш
Если PNG уже оптимизирован хорошим инструментом, ZopfliPNG может уменьшить его незначительно или вообще не улучшить. В некоторых случаях результат может оказаться больше, и тогда программа сохранит исходник как более выгодный вариант.
Не заменяет современные форматы
Для фотографий и крупных изображений часто выгоднее WebP, AVIF или JPEG. ZopfliPNG нужен именно тогда, когда требуется оставить PNG.
Оптимальные настройки по сценариям
Для иконок сайта
zopflipng -m --lossy_transparent icon.png icon.opt.pngИконки часто имеют прозрачный фон, поэтому --lossy_transparent может быть полезен. Если это финальный экспорт, а не исходник для редактирования, режим обычно оправдан.
Для логотипа
zopflipng -m --keepchunks=sRGB,iCCP,gAMA,cHRM logo.png logo.opt.pngУ логотипа важны цвета, поэтому лучше сохранить цветовые chunks. Если файл предназначен только для веба и уже проверен в браузере, набор chunks можно сократить.
Для скриншотов интерфейса
zopflipng -m --filters=0me screenshot.png screenshot.opt.pngСкриншоты часто хорошо сжимаются за счет повторяющихся областей, ровных цветов и UI-структуры. Перебор фильтров может дать дополнительный выигрыш.
Для папки ассетов
zopflipng -m --prefix=opt_ *.pngЭто удобный стартовый вариант. После выполнения можно сравнить размеры и заменить только удачные файлы.
Для тестирования максимального сжатия
zopflipng --iterations=100 --filters=01234mepb input.png output.pngТакой режим лучше применять точечно. Он не должен быть стандартом для каждой картинки.
Частые ошибки при работе с ZopfliPNG
Перезапись оригиналов без копии
Самая неприятная ошибка — запускать оптимизацию прямо поверх исходников. Даже если программа работает аккуратно, исходник лучше хранить отдельно. Особенно если используются --lossy_transparent или --lossy_8bit.
Ожидание мгновенной обработки
ZopfliPNG может быть медленным. Если пользователь запускает -m, --iterations=500 и --filters=01234mepb на большой папке, долгий процесс — ожидаемое поведение.
Использование --lossy_8bit без проверки
Этот параметр может быть нормальным для веб-иконок, но опасным для технических изображений. Он меняет глубину цвета.
Удаление chunks в чувствительных файлах
Если важны gamma, DPI, ICC-профиль или текстовые метаданные, нужно использовать --keepchunks.
Сравнение только по одному PNG
Результат ZopfliPNG зависит от структуры изображения. На одном файле выигрыш может быть маленьким, на другом — заметным. Правильно тестировать набор типовых файлов проекта.
Использование PNG для всего подряд
ZopfliPNG не исправляет ошибочный выбор формата. Если картинка является фотографией, PNG часто будет тяжелее JPEG/WebP/AVIF даже после хорошей оптимизации.
ZopfliPNG для WordPress и CMS
Для WordPress, DLE, Joomla, Laravel-сайтов и других CMS ZopfliPNG полезен как инструмент подготовки файлов до загрузки на сайт. Особенно это относится к изображениям темы, шаблона, интерфейса и статичных страниц.
Практичный подход:
экспортировать PNG из редактора;
сохранить исходник отдельно;
прогнать файл через ZopfliPNG;
проверить отображение;
загрузить уже оптимизированный PNG в CMS.
Для медиа-библиотеки с большим количеством пользовательских фотографий ZopfliPNG не лучший основной инструмент. Фотографии лучше обрабатывать через JPEG/WebP/AVIF. PNG стоит оставлять для графики с прозрачностью, скриншотов, схем, интерфейсных элементов и изображений с четкими краями.
ZopfliPNG для разработчика
Для разработчика сильная сторона программы — предсказуемость. Команда фиксируется в скрипте, параметры хранятся в репозитории, результат можно повторить. Например:
{ "scripts": { "optimize:png": "zopflipng -m --prefix=opt_ assets/*.png" }}В CI/CD ZopfliPNG можно использовать на этапе сборки релизных ассетов. Но не стоит запускать его на каждом коммите для всей папки изображений, если PNG много. Лучше разделить быстрые проверки и финальную тяжелую оптимизацию.
ZopfliPNG для дизайнера
Дизайнеру важно понимать: ZopfliPNG не заменяет Figma, Photoshop, Illustrator, Affinity Designer или другой редактор. Он вступает в работу после экспорта. Сначала изображение готовится визуально, затем экспортируется в PNG, и только потом оптимизируется.
Правильная схема:
редактировать исходник в дизайнерской программе;
экспортировать PNG;
сохранить экспортный PNG как отдельный файл;
оптимизировать через
zopflipng;проверить результат;
передать оптимизированный файл в верстку или CMS.
Если потом нужно снова менять дизайн, править надо исходный проект, а не оптимизированный PNG.
ZopfliPNG для технического SEO
Для технического SEO ZopfliPNG интересен как способ уменьшить вес статичных PNG без смены URL и формата. Это может быть полезно, если на сайте много PNG-иконок, скриншотов или интерфейсной графики, а переход на WebP/AVIF невозможен из-за требований шаблона, CMS или совместимости.
Но ZopfliPNG не решает все проблемы производительности изображений. Если PNG огромный по размеру в пикселях, сначала нужно уменьшить разрешение. Если PNG используется для фотографии, нужно пересмотреть формат. Если изображение грузится вне видимой области, важнее lazy loading. ZopfliPNG — это последний слой оптимизации, а не замена нормальной работы с изображениями.
Безопасность и лицензия
ZopfliPNG относится к открытой экосистеме Google Zopfli. Код распространяется под лицензией Apache-2.0, а сама программа работает с обычным PNG и не создает закрытый формат. Для пользователя это означает две практические вещи:
результат остается стандартным PNG;
поведение программы можно проверить через консольный вывод и параметры запуска.
ZopfliPNG не отправляет изображения в облако и не требует веб-интерфейса. При локальном запуске файлы обрабатываются на компьютере пользователя или на сервере, где выполняется команда. Это удобно для рабочих проектов, где нельзя передавать исходные изображения сторонним онлайн-сервисам.
Когда ZopfliPNG стоит использовать
ZopfliPNG стоит применять, если:
нужно сжать PNG без перехода на другой формат;
важна максимальная экономия размера;
изображение уже финальное;
можно подождать;
есть много повторных загрузок одного и того же файла пользователями;
требуется CLI-инструмент для пайплайна;
нужно оптимизировать PNG-ассеты сайта или приложения.
Хорошие кандидаты:
| Файл | Подходит |
|---|---|
logo.png | да, с проверкой chunks |
icon-close.png | да |
screenshot-ui.png | да |
button-bg.png | да |
photo.png | чаще нет, лучше другой формат |
scan-16bit.png | осторожно, без lossy-параметров |
sprite.png | да |
transparent-badge.png | да |
Когда программа не подойдет
ZopfliPNG не подойдет, если пользователь хочет:
работать только через графический интерфейс;
редактировать изображение;
массово конвертировать форматы;
быстро сжимать тысячи файлов каждый день;
оптимизировать фотографии;
получить WebP/AVIF;
сохранить все метаданные без понимания chunks;
добиться сильного уменьшения размера любой ценой.
В последнем случае лучше рассматривать pngquant, WebP, AVIF или изменение разрешения изображения. ZopfliPNG силен именно как аккуратный PNG recompressor.
Итоговая оценка
ZopfliPNG — не универсальный графический инструмент, а точная консольная программа для финальной оптимизации PNG. Ее сильная сторона — плотное Deflate-сжатие, перебор PNG-фильтров, работа с color type, управление chunks и пригодность для автоматизации. Ее слабая сторона — скорость и отсутствие GUI.
Для веб-разработчика, технического SEO-специалиста, верстальщика или владельца сайта ZopfliPNG полезен как последний этап подготовки PNG-графики. Для дизайнера он полезен после экспорта, но не вместо редактора. Для массовой ежедневной обработки он может быть слишком медленным, зато для финального релиза часто оправдан.
Лучшая формула применения простая: сначала правильно выбрать формат и размер изображения, затем экспортировать чистый PNG, затем прогнать ZopfliPNG, затем проверить результат в целевом окружении. В таком сценарии zopflipng делает именно то, для чего создан: уменьшает PNG-файл настолько, насколько это разумно в рамках стандартного PNG.
