Guetzli — специализированный JPEG-кодировщик Google, рассчитанный на получение компактных файлов при высоком визуальном качестве. Это не фоторедактор, не онлайн-компрессор и не программа с графическим окном: пользователь запускает один исполняемый файл из командной строки, передаёт ему исходное изображение и получает обычный последовательный JPEG. Проект интересен необычным способом оптимизации, но его актуальный статус принципиально важен для выбора: последняя официальная версия 1.0.1 вышла в марте 2017 года, а 18 апреля 2026 года репозиторий был переведён владельцем в архивный режим и стал доступен только для чтения.
Скачать Guetzli бесплатно
Рекомендуемый аналог
ФотоМАСТЕР
Фоторедактор для Windows и macOS с русским интерфейсом
- Ретушь портретов и точная коррекция фото
- Удаление объектов, замена фона и неба
- Пакетная обработка и популярные форматы
- Понятный русскоязычный интерфейс
Guetzli
Программа для работы с изображениями и графикой на русском языке
- Меньше инструментов для точной локальной коррекции
- Часть расширенных функций доступна только платно
- Набор инструментов зависит от версии и платформы
- Может не подойти для сложного профессионального монтажа
Что представляет собой Guetzli
Официальный Guetzli — открытый кодировщик из репозитория Google, написанный на C++. Его задача ограничена созданием JPEG-файла с потерями из PNG или JPEG. Программа не изменяет геометрию кадра, не выполняет ретушь, не управляет каталогом фотографий и не предлагает ручной выбор областей изображения. Вся обработка сосредоточена на поиске такого набора параметров JPEG, при котором файл становится меньше, а искажения остаются близкими к заданному порогу воспринимаемого качества.
Название Guetzli в этом обзоре относится именно к проекту google/guetzli. Сторонние оболочки, веб-страницы с похожим названием и сборки неизвестного происхождения не являются отдельными официальными редакциями Google. У исходного проекта нет мобильного приложения, браузерной версии, облачного кабинета или поддерживаемого настольного интерфейса. Официальная модель работы — локальный двоичный файл и командная строка.
В публикации Google Research кодировщик описан как замкнутый оптимизатор. Он многократно создаёт варианты изображения, измеряет их отличия от исходника с помощью психовизуальной метрики Butteraugli и выбирает кандидат, соответствующий целевому качеству. Такой поиск способен дать более плотный JPEG, чем обычное однократное кодирование, но требует значительно больше процессорного времени и оперативной памяти.
Краткие параметры Guetzli
| Параметр | Подтверждённое значение |
|---|---|
| Разработчик | |
| Тип продукта | Локальный JPEG-кодировщик с интерфейсом командной строки |
| Последняя официальная версия | 1.0.1 от 21 марта 2017 года |
| Текущий статус | Репозиторий архивирован 18 апреля 2026 года, дальнейшая поддержка upstream не ведётся |
| Входные форматы | PNG и JPEG |
| Выходной формат | Последовательный JPEG, без прогрессивной развёртки |
| Основной параметр | Целевое качество через флаг –quality, значение по умолчанию 95 |
| Пределы качества в коде | Значения приводятся к диапазону от 70 до 110 |
| Пакетная обработка | Встроенной очереди нет; каждый запуск принимает один входной и один выходной файл |
| Метаданные | Профили цвета, Exif, XMP, комментарии и прикладные сегменты не сохраняются |
| Прозрачность PNG | Альфа-канал не переносится; прозрачные области смешиваются с чёрным |
| Лицензия | Apache License 2.0 |
| Стоимость | Бесплатно; платных редакций, подписки и пробного режима нет |
| Регистрация и облако | Не требуются; обработка выполняется локально |
Актуальный статус и доступность
Последний опубликованный релиз Guetzli имеет номер 1.0.1. В нём были исправлены сбои на маленьких изображениях, обработка метаданных, проверка лимита памяти, сообщения об ошибках и часть проблем сборки. После релиза в основной ветке появлялись дополнительные изменения, однако нового официального пакета Google не выпустил. Поэтому номер 1.0.1 остаётся последней стабильной точкой, на которую ориентируются большинство дистрибутивов и менеджеров пакетов.
Архивирование репозитория означает, что upstream больше не принимает обычные изменения и не публикует поддерживаемые версии. Исходный код остаётся доступным, его разрешено собирать и модифицировать по Apache License 2.0, но ожидать исправлений совместимости или безопасности от прежней команды нельзя. Для долгосрочного производственного конвейера это более существенное ограничение, чем возраст номера версии.
При этом Guetzli не исчез из экосистемы полностью. Формула Homebrew продолжает распространять версию 1.0.1 для macOS и Linux, а пакеты с тем же исходным выпуском присутствуют в Debian и Arch Linux. Такие пакеты поддерживаются сопровождающими конкретного дистрибутива, а не возобновившейся командой Guetzli. Их наличие упрощает установку, но не меняет архивный статус исходного проекта.
Для Windows официальный репозиторий содержит проект Visual Studio и старую инструкцию, основанную на Visual Studio 2015, vcpkg и libpng. Это не является современным списком поддерживаемых версий Windows. Пользователь должен либо собирать код самостоятельно, либо тщательно проверять происхождение сторонней сборки. Загружать неизвестный исполняемый файл только потому, что он подписан названием Guetzli, небезопасно.
Платформы и способы установки
Linux и другие POSIX-системы
Исходный проект собирается командой make при наличии компилятора C++11 и библиотеки libpng с заголовочными файлами. Готовый исполняемый файл появляется в каталоге bin/Release. В документации приведены команды установки зависимостей для Ubuntu, Fedora, Arch Linux и Alpine Linux. На актуальном дистрибутиве предпочтительнее сначала проверить официальный репозиторий пакетов: пакетная система корректно учтёт libpng и стандартные пути установки.
Guetzli не привязан к графическому окружению. Его можно запускать в терминале, из сценария оболочки, в задаче сборки сайта или на сервере. Однако возможность запуска не равна пригодности для массового сервиса: расход памяти и процессорного времени растёт вместе с числом пикселей, а встроенного планировщика очереди нет.
macOS
В официальной документации указана установка через Homebrew. Формула по-прежнему доступна и устанавливает Guetzli вместе с libpng. Возможна и ручная сборка с библиотекой из Homebrew либо MacPorts. Отдельного приложения в формате привычного окна macOS проект не предоставляет: после установки команда вызывается из Terminal или из внешнего сценария.
Windows
Официальный путь сборки для Windows остался привязан к Visual Studio 2015 и vcpkg. В репозитории присутствуют файлы проекта, но нет актуальной гарантии совместимости с современным комплектом Visual Studio и текущими версиями Windows. При самостоятельной сборке необходимо установить libpng, выбрать конфигурацию Release и проверить, что итоговый файл запускается без отсутствующих динамических библиотек.
Готовые бинарные файлы из сторонних каталогов следует рассматривать как отдельный риск. Проверка контрольной суммы, цифровой подписи, репутации источника и результатов антивирусного анализа обязательна. Надёжнее собрать программу из опубликованного исходного кода или использовать пакет из доверенного репозитория операционной системы.
Сборка через Bazel
В проект включена конфигурация Bazel. Официальная команда собирает оптимизированную цель guetzli. Этот вариант полезен разработчикам, уже использующим Bazel, но не добавляет новых функций и не превращает программу в библиотеку высокого уровня. Результатом остаётся тот же консольный кодировщик.
Как устроен интерфейс
У Guetzli нет главного окна, панелей, миниатюр, шкалы сравнения и диалога экспорта. Его интерфейс состоит из командной строки, позиционных аргументов, нескольких флагов и текстовых диагностических сообщений. Поэтому привычные скриншоты интерфейса здесь не отражали бы реальную работу продукта: на экране видны терминал и введённая пользователем команда, а не собственная графическая оболочка Guetzli.
Позиционные аргументы
Один запуск требует ровно два пути: исходный файл и выходной файл. Первый путь указывает PNG или JPEG, второй — создаваемый JPEG. Программа не предлагает диалог выбора, не формирует список заданий и не спрашивает подтверждение перед перезаписью. Управление именами, каталогами и резервными копиями лежит на пользователе или внешнем сценарии.
Символ дефиса можно использовать вместо имени файла. Для входа он означает чтение из стандартного потока, для выхода — запись в стандартный поток. Это позволяет соединять Guetzli с другими консольными инструментами, но бинарные данные JPEG нельзя направлять в обычный текстовый терминал: выход следует перенаправлять в файл или передавать следующему процессу.
Флаг качества
Параметр –quality задаёт целевое качество в единицах, сопоставимых со шкалой libjpeg. По умолчанию используется 95. Внутренний код ограничивает значение диапазоном от 70 до 110: всё, что ниже 70, обрабатывается как 70, а всё, что выше 110, как 110. Отдельного предупреждения о таком приведении интерфейс не обязан выводить, поэтому бессмысленно рассчитывать на особый режим при значении 50 или 200.
Число качества не задаёт точный размер в килобайтах и не является процентом сохранённой информации. Оно меняет целевой порог психовизуальной ошибки. Два разных изображения с одинаковым значением дают разные размеры, а число 100 не превращает JPEG в формат без потерь.
Флаг подробного вывода
Параметр –verbose включает диагностические сообщения. Они отправляются в стандартный поток ошибок, а не смешиваются с бинарным JPEG в стандартном выводе. Этот режим полезен при запуске из сценария: журнал можно сохранить отдельно и понять, на каком этапе возникла ошибка. Полноценного индикатора процента готовности или расчёта оставшегося времени программа не предоставляет.
Ограничение памяти
Флаг –memlimit задаёт лимит памяти в мегабайтах. Значение по умолчанию в исходном коде — 6000 МБ, а минимальный принимаемый предел — 100 МБ. Флаг –nomemlimit отключает программную проверку лимита, но не отменяет физические ограничения компьютера и операционной системы. При нехватке памяти процесс всё равно может быть завершён системой.
Проверка основана на размере изображения. Документация даёт ориентир около 300 МБ на один мегапиксель, а код использует более консервативную оценку примерно 350 байт на пиксель. Поэтому снимок на 24 мегапикселя способен потребовать несколько гигабайт оперативной памяти. Лимит следует выбирать по пиксельным размерам, а не по весу исходного файла на диске.
Как Guetzli сжимает JPEG
Обычный JPEG-кодировщик преобразует изображение в цветовое представление, разбивает его на блоки, выполняет дискретное косинусное преобразование, квантует коэффициенты и кодирует результат. Guetzli использует тот же совместимый формат вывода, но значительно дольше ищет подходящие параметры. Итоговый файл открывается обычными декодерами JPEG; специальный просмотрщик получателю не нужен.
Глобальная настройка таблиц квантования
На первом крупном этапе оптимизатор подбирает таблицы квантования для всего изображения. Эти таблицы определяют, насколько грубо сохраняются пространственные частоты. Слишком мягкое квантование оставляет большой файл, слишком жёсткое создаёт видимые искажения. Guetzli оценивает множество вариантов и сопоставляет их с порогом Butteraugli.
Процесс не сводится к копированию стандартной таблицы для выбранного числа качества. Параметры подстраиваются под конкретное изображение, поэтому результат зависит от содержания кадра: мелкая текстура, резкие границы, плавные градиенты и шум предъявляют разные требования к распределению ошибок.
Локальная работа с коэффициентами DCT
После глобальной настройки Guetzli анализирует отдельные блоки и пытается обнулить дополнительные коэффициенты DCT. Нулевые коэффициенты обычно кодируются компактнее, но каждое удаление меняет изображение. Психовизуальная проверка определяет, можно ли принять изменение, не превышая целевое расстояние.
В исследовательской работе Google локальное обнуление коэффициентов названо основным источником экономии. Сочетание глобального и локального этапов давало дополнительный выигрыш по сравнению с одним локальным проходом. Цена такого поиска — многократное декодирование и оценка промежуточных вариантов.
Butteraugli и воспринимаемое качество
Butteraugli — метрика визуального различия, разработанная для оценки того, насколько заметны искажения человеку. Guetzli не применяет генеративную модель, не дорисовывает детали и не относится к современным нейросетевым компрессорам. Термин «психовизуальный» здесь означает математическую модель особенностей зрения, а не искусственный интеллект.
Кодировщик старается удержать максимальную локальную ошибку около целевого значения. Он не оптимизирует файл под заданное количество килобайт. Поэтому для ограничения загрузки, например до 200 КБ, потребуется внешний цикл: менять качество, повторно запускать кодировщик и проверять размер. Встроенного режима «достичь указанного веса» нет.
Цветовая дискретизация и последовательный JPEG
Алгоритм рассматривал варианты цветовой дискретизации, но для высокого качества часто отдаёт предпочтение сохранению более полной цветовой информации. Это отличается от распространённой практики, где цветовые каналы автоматически уменьшаются до схемы 4:2:0. Конкретный результат определяется содержанием и внутренними решениями кодировщика.
Guetzli создаёт только последовательный, то есть непрогрессивный, JPEG. Файл не появляется в браузере несколькими уточняющими проходами. Авторы сознательно отказались от прогрессивного режима: в исследовании он мог дать дополнительную экономию, но повышал сложность и время декодирования в измеренных сценариях. Пользователь не может включить progressive отдельным флагом.
Основные функции и отсутствующие возможности
Функциональность Guetzli узкая, но границы легко определить. Он читает один PNG или JPEG, выполняет ресурсозатратную психовизуальную оптимизацию, записывает один JPEG и сообщает об ошибке при невозможности продолжить. Качество, подробность журнала и лимит памяти задаются перед запуском.
- Настройка качества. Параметр –quality влияет на допустимое визуальное отличие, а не на размер в процентах.
- Контроль памяти. –memlimit позволяет заранее остановить задачу, которая не укладывается в выбранный предел.
- Работа с потоками. Дефис вместо пути подключает стандартный ввод или стандартный вывод.
- Подробная диагностика. –verbose добавляет сообщения, пригодные для журнала автоматизации.
- Локальная обработка. Изображение не отправляется в облако и не требует учётной записи.
Не менее важно то, чего в проекте нет. Guetzli не содержит графического предварительного просмотра, пакетной очереди, наблюдаемой папки, многопоточного диспетчера заданий, настройки размера в килобайтах, сохранения метаданных, выбора фона для прозрачности, прогрессивного экспорта, аппаратного ускорения на GPU, мобильного клиента, облачного API или функций редактирования изображения.
Программа также не меняет ширину и высоту. Если для сайта требуется уменьшить фотографию с 6000 пикселей до 1600 пикселей по длинной стороне, масштабирование необходимо выполнить заранее другим инструментом. Передача огромного оригинала напрямую Guetzli лишь увеличит расход ресурсов и сохранит исходные размеры.
Форматы, импорт и экспорт
PNG на входе
PNG определяется по сигнатуре файла. Декодер принимает серые изображения, серые изображения с альфа-каналом, RGB и RGBA. Палитровые данные разворачиваются, а 16-битные каналы приводятся к 8-битным. Это означает, что Guetzli не является способом сохранить 16-битный рабочий процесс: выходной JPEG всё равно имеет стандартную 8-битную точность.
Альфа-канал не поддерживается JPEG. В Guetzli прозрачные пиксели смешиваются с чёрным, после чего кодируются как непрозрачное изображение. Для логотипа с прозрачным фоном это часто даёт чёрную кайму или полностью чёрный фон. Требуемый белый, серый либо цветной фон нужно подложить до запуска.
JPEG на входе
Существующий JPEG можно перекодировать, но документация рекомендует подавать высококачественный или несжатый источник. Повторное сжатие не восстанавливает уже удалённые детали и добавляет новый цикл потерь. Если доступен оригинальный PNG, TIFF или RAW, сначала следует подготовить финальное 8-битное sRGB-изображение без прозрачности, а затем кодировать его в Guetzli. Сам Guetzli TIFF и RAW не читает.
Парсер работает с обычными 8-битными JPEG и проверяет структуру маркеров, таблиц и сканов. Повреждённые, усечённые или нестандартные файлы могут быть отклонены как невалидные. Для восстановления повреждённого JPEG этот продукт не предназначен.
JPEG на выходе
Экспорт всегда даёт JPEG с потерями и последовательной развёрткой. Размеры в пикселях остаются прежними. Программа записывает минимальный JFIF-сегмент, но удаляет прикладные метаданные и комментарии. Не сохраняются Exif, XMP, ICC-профиль, сведения камеры, геометки и авторские поля.
Удаление метаданных уменьшает объём и снижает риск случайно оставить геолокацию, но одновременно может разрушить рабочий процесс. Особенно опасен JPEG, ориентация которого задаётся только тегом Exif Orientation: матрица пикселей не поворачивается автоматически, а тег исчезает. Перед кодированием ориентацию нужно физически применить к пикселям.
Цвет и профили
Guetzli исходит из sRGB с гаммой около 2,2 и не учитывает профиль, вложенный в исходник. Затем профиль удаляется. Файл в Adobe RGB, Display P3 или другом пространстве необходимо заранее преобразовать в sRGB средствами редактора с управлением цветом. Простое удаление профиля без преобразования меняет интерпретацию чисел каналов и способно заметно исказить насыщенность и оттенки.
Этот риск нельзя исправить подбором –quality. Параметр качества управляет сжатием, а не преобразованием цветового пространства. Если результат выглядит иначе, сначала следует проверить профиль и только затем анализировать артефакты JPEG.
Воспроизводимый рабочий сценарий
Типичный сценарий для веб-публикации начинается не с Guetzli, а с подготовки исходника. Фотографию приводят к конечным пиксельным размерам, переводят в sRGB, применяют ориентацию и удаляют либо заменяют прозрачность. После этого Guetzli выполняет только финальное JPEG-кодирование.
- Создайте отдельную копию исходного изображения. Не используйте единственный оригинал как выходной файл.
- В редакторе уменьшите изображение до фактического размера публикации и преобразуйте цвет в sRGB.
- Для PNG с альфа-каналом подложите нужный фон и сохраните непрозрачный RGB-файл.
- Откройте терминал в каталоге с исходником или укажите абсолютные пути.
- Запустите кодирование с качеством 95 и явным лимитом памяти.
- Откройте итог в независимом просмотрщике, сравните с подготовленным исходником и проверьте размер.
- Если файл слишком велик, создайте второй вариант с меньшим качеством, не перезаписывая первый.
Базовая команда: guetzli –quality 95 –memlimit 6000 source.png result-q95.jpg
Вариант с подробным журналом: guetzli –quality 90 –verbose source.png result-q90.jpg
Сравнивать следует result-q95.jpg и result-q90.jpg с одним и тем же подготовленным source.png. Нельзя делать второй вариант из первого JPEG: последовательное перекодирование смешает влияние качества Guetzli с уже внесёнными потерями. Каждый кандидат должен создаваться непосредственно из исходника.
Для серии файлов внешняя оболочка запускает Guetzli отдельно для каждого изображения. На Linux и macOS это может быть цикл shell, на Windows — PowerShell. Параллельный запуск нескольких процессов необходимо ограничивать по памяти. Четыре одновременных задания по 20 мегапикселей способны исчерпать даже большой объём RAM.
Скорость и потребление ресурсов
Главный практический недостаток Guetzli — вычислительная стоимость. В официальной документации приведён ориентир около одной минуты процессорного времени на мегапиксель. Это не гарантированный таймер: скорость зависит от процессора, изображения, качества и сборки. Ориентир показывает порядок величины. Двенадцатимегапиксельный кадр может обрабатываться многие минуты, а серия из сотен фотографий превращается в длительную задачу.
Память также масштабируется по числу пикселей. Сжатый JPEG весом 3 МБ может после декодирования и создания рабочих структур потребовать гигабайты. Поэтому размер файла на диске почти ничего не говорит о требованиях. Для оценки нужны ширина, высота и произведение этих чисел.
Guetzli не предлагает встроенного выбора числа потоков и не управляет очередью. Отдельный процесс можно запускать параллельно с другими, но суммарная нагрузка быстро становится ограничением. Для интерактивного экспорта, где пользователь ждёт результат за секунды, кодировщик обычно непрактичен. Его логичнее использовать для небольшого числа статичных изображений, которые кодируются один раз и затем долго распространяются.
Отключение –memlimit не ускоряет алгоритм. Оно лишь снимает программный барьер. Если системе не хватает RAM, начнётся интенсивное использование файла подкачки либо принудительное завершение процесса. В обоих случаях итоговая производительность ухудшается.
Как проверить результат
Техническая целостность
Сначала убедитесь, что процесс завершился с кодом успеха, выходной файл существует и открывается как минимум двумя независимыми декодерами. Проверьте ширину и высоту: они должны совпадать с подготовленным исходником. Затем убедитесь, что файл действительно имеет JPEG-структуру, а не только расширение .jpg.
Для автоматизированного конвейера полезно декодировать результат после записи. Успешное создание файла не заменяет проверку чтения. Контрольная сумма подтверждает неизменность файла при передаче, но не оценивает качество изображения.
Визуальное сравнение
Сравнение выполняют при масштабе 100 процентов и при реальном размере показа. На увеличении ищут блочные границы, звон вокруг контрастных линий, потерю тонкой текстуры, ступени на градиентах и изменение мелкого текста. На реальном размере оценивают, заметны ли эти отличия в целевом сценарии.
Особое внимание требуется фотографиям с листвой, волосами, тканью, звёздным небом, шумом и очень тонкими линиями. Такие детали трудно сжимаются. Гладкий фон может выглядеть безупречно при том же параметре, при котором сложная текстура уже размазывается.
Размер и честное сравнение
Сравнивать кодировщики только при одинаковом числе –quality некорректно. Шкалы разных программ не идентичны. Для честной оценки нужно либо подбирать примерно одинаковый визуальный уровень и сравнивать размер, либо подбирать одинаковый размер и сравнивать изображение.
Исторические материалы Google сообщали о файлах примерно на 20–30 процентов меньше libjpeg при сопоставимом качестве, а исследовательская статья на своём наборе показала экономию 29–45 процентов при одинаковом расстоянии Butteraugli. Эти значения описывают конкретные эксперименты 2017 года и не гарантируют тот же выигрыш на каждом изображении или относительно современных кодировщиков.
Проверка цвета, прозрачности и метаданных
Откройте исходник и результат в программе с управлением цветом. Если насыщенность или тон отличаются глобально, проверьте преобразование в sRGB. Чёрный фон вокруг бывшей прозрачности означает, что альфа-канал не был сведен с нужным фоном заранее.
Отдельно проверьте отсутствие необходимых метаданных. Если публикационный процесс зависит от авторской подписи, даты, рейтинга, ICC-профиля или ориентации, Guetzli не подходит как последний этап без последующего контролируемого добавления данных. Повторное добавление сегментов возможно внешними инструментами, но это уже отдельная операция.
Приватность, безопасность и зависимость от интернета
Guetzli обрабатывает файл локально. Он не требует регистрации, не отправляет фотографию на сервер и после установки не зависит от подключения к интернету. Для конфиденциальных изображений это преимущество по сравнению с неизвестным веб-компрессором. Однако локальная обработка не снимает риски, связанные с устаревшим кодом и происхождением входных файлов.
Удаление Exif и других прикладных сегментов уменьшает вероятность случайно опубликовать геометку или серийный номер камеры. Одновременно оно удаляет и полезные сведения. Приватность достигается не выборочной очисткой, а полной потерей метаданных, поэтому результат нужно оценивать с учётом требований архива и авторского учёта.
В архивированном репозитории остался открытый неслитый запрос на изменение, описывающий две ошибки heap-buffer-overflow в чтении специально сформированных JPEG: выход за границу при последнем байте потока 0xFF и переполнение таблицы для недоопределённого кода Хаффмана. Этот запрос не является подтверждением отдельного CVE, но показывает, почему архивный кодировщик не следует без изоляции использовать как публичный сервис для любых загружаемых файлов.
Для доверенных собственных изображений риск ниже. Для файлов от неизвестных пользователей разумно применять контейнер или другую песочницу, ограничивать память и процессорное время, запускать процесс без лишних прав и предварительно декодировать изображение поддерживаемой современной библиотекой. Внешний сервис, принимающий загрузки из интернета, лучше строить на активно поддерживаемом кодеке.
Стоимость, лицензия и редакции
Guetzli распространяется бесплатно по Apache License 2.0. Лицензия разрешает использование, изменение и распространение при соблюдении её условий, включая сохранение уведомлений. Платной Pro-версии, корпоративного тарифа, подписки, покупок внутри приложения и ограниченного пробного периода нет.
Нет и разделения на настольную, мобильную или облачную редакцию. Официальный проект представляет один набор исходного кода, из которого собирается консольная программа. Пакеты в Homebrew, Debian или Arch Linux являются способами доставки, а не функционально разными тарифами.
Бесплатность не означает нулевую стоимость эксплуатации. Длительное кодирование потребляет процессорное время и электричество, а интеграция архивного проекта требует самостоятельной поддержки. Для нескольких статичных изображений это может быть приемлемо. Для большого сервиса стоимость вычислений и сопровождения способна превысить экономию дискового пространства и трафика.
Плюсы и минусы
Плюсы ✔️
- Создаёт стандартный JPEG, который не требует специального декодера у получателя.
- Использует психовизуальную оптимизацию и способен уменьшать высококачественные JPEG относительно обычного кодирования в подходящих сценариях.
- Работает полностью локально и не требует регистрации, подписки или передачи изображения в облако.
- Имеет открытый исходный код и разрешительную лицензию Apache 2.0.
- Принимает PNG и JPEG, поддерживает стандартный ввод и вывод, поэтому встраивается в консольные конвейеры.
- Позволяет ограничить память и включить диагностический журнал.
- Полностью удаляет прикладные метаданные, что полезно, когда требуется исключить геолокацию и сведения камеры.
Минусы ❌
- Репозиторий архивирован, а последняя официальная версия датирована 2017 годом.
- Кодирование очень медленное и требует сотен мегабайт памяти на каждый мегапиксель.
- Нет графического интерфейса, предварительного просмотра и встроенной пакетной очереди.
- Выход ограничен последовательным JPEG; прогрессивный режим недоступен.
- Программа удаляет Exif, XMP, ICC-профили и комментарии без штатного флага сохранения.
- PNG-прозрачность смешивается с чёрным, а 16-битные данные приводятся к 8 битам.
- Нет режима целевого размера, изменения разрешения, аппаратного ускорения и современных функций сервиса изображений.
- Для недоверенных JPEG актуален дополнительный риск из-за открытого неслитого исправления ошибок доступа к памяти.
Кому подойдёт
- Разработчику исследовательского или учебного проекта. Guetzli наглядно показывает, как замкнутая психовизуальная оптимизация может улучшать плотность совместимого JPEG.
- Владельцу небольшого набора статичных веб-изображений. При редком кодировании и длительном сроке публикации можно обменять время процессора на уменьшение файла.
- Пользователю, которому нужен локальный CLI. Исходники не загружаются во внешнее облако, а запуск легко встроить в сценарий.
- Специалисту, готовому самостоятельно сопровождать архивный код. Открытая лицензия позволяет собирать, исправлять и изолировать программу без ожидания поддержки Google.
- Задаче, где метаданные должны быть полностью удалены. Полная очистка происходит автоматически, хотя её всё равно нужно контролировать.
Кому не подойдёт
- Фотографу, которому нужен визуальный редактор. В Guetzli нет коррекции, кадрирования, каталогизации и сравнения до и после.
- Сайту с постоянными пользовательскими загрузками. Архивный статус, высокая стоимость и риск обработки специально сформированных JPEG делают такой сценарий нежелательным.
- Большому фотокаталогу с жёсткими сроками. Скорость и память ограничивают массовое кодирование.
- Рабочему процессу с Exif, XMP или широким цветовым охватом. Метаданные и профиль не сохраняются.
- Проекту, которому нужен progressive JPEG. Guetzli выводит только последовательный вариант.
- Изображениям с прозрачностью. Без предварительного сведения на фон результат получает чёрные области.
- Мобильному или облачному сценарию без терминала. Официального приложения и веб-интерфейса нет.
- Команде, которой требуется поддерживаемая зависимость с регулярными исправлениями. Upstream закрыт для развития.
Альтернативы Guetzli
Jpegli
Jpegli — более современное направление Google для JPEG. Проект создавался с акцентом на эффективность, высокое визуальное качество и значительно более практичную скорость, а также развивает поддержку расширенных сценариев, включая HDR-совместимую обработку в рамках библиотеки. Для нового программного продукта Jpegli предпочтительнее как активный кодовый проект. Различие в форме использования важно: Jpegli ориентирован прежде всего на интеграцию кодека и инструментов разработчика, тогда как Guetzli известен как простой отдельный CLI с крайне дорогой оптимизацией.
MozJPEG
MozJPEG — поддерживаемая ветвь JPEG-кодека, оптимизированная для веб-изображений. Она предоставляет привычные консольные инструменты, поддерживает прогрессивный JPEG и подходит для массовой автоматизации лучше Guetzli. Выбор в пользу MozJPEG оправдан, когда нужны хороший баланс размера и скорости, широкая управляемость параметров и действующий upstream. Guetzli остаётся интереснее как узкий эксперимент с более глубоким поиском при высоком качестве.
libjpeg-turbo
libjpeg-turbo сосредоточен на скорости и совместимости. SIMD-оптимизации ускоряют кодирование и декодирование, доступны последовательные и прогрессивные JPEG, а библиотека активно применяется в приложениях. Она подходит для интерактивного экспорта, серверной обработки и большого объёма файлов. Guetzli выбирают не ради скорости, а ради попытки получить меньший высококачественный файл ценой многократного роста вычислений.
jpegoptim
jpegoptim предназначен для оптимизации уже существующих JPEG. Он поддерживает пакетную работу, параллельные задания, управление метаданными, сохранение или удаление отдельных сегментов, ограничения размера и работу с progressive JPEG. Для обслуживания каталога это практичнее. Guetzli отличается тем, что заново выполняет психовизуальное кодирование и не предоставляет тонкого контроля метаданных.
Частые проблемы и диагностика
Команда guetzli не найдена
Сначала проверьте, установлен ли бинарный файл и входит ли его каталог в переменную PATH. При ручной сборке официальный Makefile помещает результат в bin/Release, а не обязательно в системный каталог. Запустите файл по полному пути. Если это работает, исправьте PATH или установите бинарник в подходящий каталог.
Сборка останавливается на libpng
Guetzli требует библиотеку libpng и её заголовочные файлы. В Linux пакет выполнения и пакет разработки часто разделены. Нужна именно версия с заголовками и данными pkg-config. После установки очистите неудачную сборку и повторите make. На Windows проверьте, что vcpkg установил libpng для той же архитектуры, что и выбранная конфигурация Visual Studio.
Появляется сообщение о превышении лимита памяти
Рассчитайте число мегапикселей и сопоставьте его с ориентиром 300–350 МБ на мегапиксель. Уменьшите изображение до реального размера публикации, увеличьте –memlimit в пределах доступной RAM либо обрабатывайте файлы последовательно. –nomemlimit допустим только при понимании риска: он не создаёт дополнительную память.
Процесс идёт слишком долго
Это характерная особенность алгоритма, а не обязательно зависание. Включите –verbose, наблюдайте загрузку процессора и проверяйте, что процесс продолжает работать. Для массовой задачи сначала обработайте один репрезентативный файл и измерьте реальное время. Если срок неприемлем, переходите на MozJPEG, libjpeg-turbo или другой быстрый кодировщик.
Файл отклонён как невалидный PNG или JPEG
Откройте исходник в современном декодере и пересохраните его в стандартный 8-битный RGB PNG либо высококачественный JPEG. Проверьте, что расширение соответствует содержимому, файл полностью скопирован и не имеет повреждённого окончания. Guetzli не является утилитой восстановления и намеренно прекращает работу при нарушении структуры.
После обработки изменились цвета
Проверьте исходный ICC-профиль. Guetzli игнорирует цветовой профиль и удаляет его, поэтому данные Adobe RGB или Display P3 интерпретируются неверно в обычном sRGB-просмотре. Вернитесь к исходнику, выполните преобразование в sRGB с управлением цветом и запустите кодирование заново.
Прозрачный фон стал чёрным
Это ожидаемое следствие сведения альфа-канала на чёрный фон. Guetzli не позволяет выбрать другой цвет. Создайте непрозрачную RGB-копию в редакторе, подложив белый или нужный фон, и используйте её как вход.
Изображение повернулось после публикации
Такое происходит, когда ориентация хранится только в Exif. Guetzli удаляет тег, но не поворачивает матрицу пикселей. Примените ориентацию физически перед кодированием. Проверка проста: исходник без учёта Exif должен уже выглядеть правильно.
Итоговый JPEG оказался больше
Guetzli не гарантирует уменьшение каждого файла. Исходник мог уже быть хорошо оптимизирован, содержать мало удаляемой избыточности или использовать прогрессивную структуру. Сравните визуальное качество, а не только размер, и попробуйте разумно снизить –quality. Если преимущество отсутствует, сохраните исходный JPEG или используйте инструмент без повторного перекодирования.
Метаданные исчезли
Это штатное поведение. В CLI нет флага сохранения Exif, XMP или ICC. Если метаданные обязательны, используйте другой кодировщик либо после Guetzli добавляйте только необходимые сегменты отдельным инструментом и повторно проверяйте файл. Для цветового профиля такой подход допустим лишь после корректного преобразования пикселей в соответствующее пространство.
Пакетный сценарий перегружает компьютер
Ограничьте число одновременно запущенных процессов. У Guetzli нет внутреннего пула заданий, поэтому внешний сценарий может случайно стартовать десятки экземпляров. Рассчитайте пиковую память одного файла и оставьте запас операционной системе. Последовательная обработка часто надёжнее агрессивного параллелизма.
Нужно обработать недоверенный файл
Не запускайте архивный бинарник с лишними правами. Предварительно декодируйте файл поддерживаемой библиотекой, ограничьте ресурсы, используйте контейнер или песочницу и не предоставляйте процессу доступ к секретам. Для публичного сервиса предпочтительнее поддерживаемый кодек с актуальными исправлениями.
FAQ
Guetzli сжимает без потерь?
Нет. Выходной JPEG использует квантование и является форматом с потерями. Психовизуальная оптимизация старается сделать потери менее заметными, но не сохраняет исходные пиксели побитно.
Можно ли указать точный размер, например 150 КБ?
Встроенного параметра целевого размера нет. Нужно внешним сценарием менять качество, запускать кодировщик заново из одного исходника и измерять результат. Значение –quality не выражается в килобайтах.
Сохраняет ли Guetzli PNG после оптимизации?
Нет. PNG служит только входом, а выход всегда JPEG. Для оптимизации PNG нужны инструменты, работающие с PNG без преобразования формата.
Можно ли сохранить прозрачность?
Нет. JPEG не содержит альфа-канала, а Guetzli смешивает прозрачные области с чёрным. Фон необходимо определить заранее или выбрать формат WebP, AVIF либо PNG в другом инструменте.
Поддерживается ли progressive JPEG?
Нет. Guetzli создаёт только последовательный JPEG. Изменить это флагом нельзя.
Работает ли программа без интернета?
Да. После установки или сборки кодирование выполняется локально. Интернет нужен только для получения пакета, исходного кода или зависимостей.
Нужна ли учётная запись Google?
Нет. Guetzli не связан с пользовательским аккаунтом, облачным хранилищем или платёжным кабинетом.
Является ли Guetzli нейросетью?
Нет. Он использует психовизуальную метрику Butteraugli и итеративный поиск параметров JPEG. Генеративного восстановления деталей и обучения модели в рабочем процессе нет.
Что произойдёт при –quality 50?
Внутреннее значение будет приведено к нижней границе 70. Аналогично значения выше 110 приводятся к 110. Отдельного режима сверхнизкого качества Guetzli не предоставляет.
Означает ли –quality 100 отсутствие потерь?
Нет. Это всё ещё целевой уровень для JPEG с потерями. Число 100 не является обещанием побитного совпадения и не соответствует режиму lossless.
Можно ли читать из stdin и писать в stdout?
Да. Дефис вместо входного пути означает стандартный ввод, а дефис вместо выходного пути — стандартный вывод. Бинарный вывод нужно перенаправлять в файл или другой процесс.
Можно ли сохранить Exif?
Штатный CLI очищает прикладные метаданные и не имеет флага сохранения. Для обязательного Exif лучше выбрать jpegoptim, MozJPEG или другой инструмент с явным управлением сегментами.
Есть ли встроенная пакетная обработка?
Нет. Один процесс принимает одну пару входа и выхода. Серия создаётся внешним циклом, системой сборки или диспетчером задач.
Использует ли Guetzli видеокарту?
Официальная версия не предоставляет GPU-ускорение. Нагрузка приходится на CPU и оперативную память. Наличие мощной видеокарты не решает основную проблему скорости.
Можно ли встроить Guetzli в серверный сервис?
Технически команду можно запускать из серверного процесса, но для публичных загрузок это неудачный выбор: код архивирован, ресурсоёмок и имеет открытый неслитый запрос на исправление ошибок доступа к памяти. Для закрытой очереди доверенных файлов нужна строгая изоляция и ограничение ресурсов.
Меняет ли программа разрешение фотографии?
Нет. Ширина и высота сохраняются. Масштабирование, кадрирование и поворот выполняются до запуска внешним редактором.
Почему новый JPEG иногда почти не меньше?
Размер зависит от содержания и исходного кодирования. Уже оптимизированный JPEG, сложная текстура или высокий целевой уровень могут оставить мало пространства для экономии. Исторические средние показатели нельзя переносить на отдельный файл.
Итог по сценариям использования
Для изучения психовизуального JPEG-кодирования Guetzli остаётся содержательным открытым проектом: алгоритм, исходный код и исследовательское описание показывают, как глубокий поиск способен обменивать вычисления на размер файла. Для нескольких статичных изображений, подготовленных в sRGB и не требующих метаданных, кодировщик всё ещё можно запускать локально.
Для регулярного веб-конвейера выбор менее убедителен. Архивный статус, версия 2017 года, отсутствие progressive JPEG, огромные требования к памяти и длительное кодирование делают Guetzli дорогой зависимостью. MozJPEG лучше соответствует массовой оптимизации, libjpeg-turbo — скорости и совместимости, jpegoptim — обработке существующих файлов и управлению метаданными, а Jpegli — современному развитию качественного JPEG со стороны Google.
Для пользовательских загрузок и серверов с недоверенными данными Guetzli применять не следует без отдельной песочницы и самостоятельного сопровождения. Для прозрачных изображений, широкого цветового охвата, сохранения Exif или точного ограничения размера нужен другой инструмент. Практический смысл Guetzli в 2026 году — узкая локальная оптимизация доверенных высококачественных исходников и исследовательская ценность, а не универсальная замена актуального кодека.







