MozJPEG: JPEG-кодировщик Mozilla для эффективного сжатия изображений

MozJPEG — специализированный JPEG-энкодер Mozilla для сжатия изображений, подготовки фотографий к публикации на сайте и уменьшения веса .jpg / .jpeg без перехода на другой формат. Его используют не как обычный графический редактор, а как инструмент финального кодирования: изображение остаётся стандартным JPEG, открывается в браузерах и просмотрщиках, но при грамотных настройках занимает меньше места.

Содержание

MozJPEG: онлайн-сервис

Бесплатно
В реестре программного обеспечения РФ
Чистая установка

Новейшая версия для Windows и macOS. Удобный редактор с ИИ и профессиональными функциями.

⬇ Скачать ФотоМАСТЕР бесплатно

MozJPEG нельзя скачать — сервис работает онлайн

MozJPEG построен вокруг библиотеки и набора консольных утилит: cjpeg, jpegtran, djpeg, rdjpgcom, wrjpgcom. Главный смысл программы — улучшить эффективность JPEG-сжатия, особенно для веб-сценариев, где важны вес файла, скорость передачи и совместимость.

Что такое MozJPEG

MozJPEG расшифровывается как Mozilla JPEG Encoder Project. Это не новый формат изображения и не замена расширению .jpg. Программа создаёт обычные JPEG-файлы, но применяет более продвинутые методы кодирования: progressive JPEG, оптимизацию сканов, trellis quantization, улучшенные таблицы квантования и оптимизацию энтропийного кодирования. На практике это означает, что MozJPEG старается сохранить визуальное качество изображения при меньшем размере файла.

Главная особенность MozJPEG — ориентация на финальный веб-экспорт. Это инструмент для ситуации, когда изображение уже подготовлено: кадрирование, цветокоррекция, ретушь, ресайз и другие визуальные операции выполнены заранее, а теперь нужно получить компактный JPEG для сайта, лендинга, блога, интернет-магазина, CDN, email-рассылки или статического каталога.

В отличие от визуальных редакторов, у MozJPEG нет привычного окна с холстом, слоями, кнопкой Экспорт, ползунками яркости и предпросмотром. Интерфейс программы — командная строка. Вместо кнопок используются команды и параметры:

  • cjpeg — кодирует изображение в JPEG;

  • jpegtran — оптимизирует и трансформирует уже готовые JPEG-файлы;

  • djpeg — декодирует JPEG в обычные растровые форматы;

  • rdjpgcom — читает текстовые комментарии внутри JPEG;

  • wrjpgcom — записывает комментарии в JPEG.

Такой подход выглядит менее привычно для новичка, но он удобен для автоматизации. MozJPEG можно встроить в скрипт, сборку сайта, обработку изображений перед загрузкой в CMS, pipeline интернет-магазина или серверную оптимизацию медиафайлов.

Для каких задач подходит MozJPEG

MozJPEG лучше всего раскрывается там, где нужно не редактировать изображение, а уменьшить вес JPEG-файла перед публикацией. Программа особенно полезна для веб-мастеров, разработчиков, SEO-специалистов, администраторов сайтов и тех, кто регулярно готовит большое количество изображений.

Типичные задачи:

ЗадачаЧто делает MozJPEGКакая утилита используется
Сжатие изображения в JPEGКодирует исходный файл в .jpg с выбранным качествомcjpeg
Оптимизация готового JPEGПерепаковывает JPEG, улучшает структуру файла, может сделать progressive JPEGjpegtran
Удаление метаданныхУбирает EXIF, комментарии и лишние маркеры, если они не нужныjpegtran -copy none
Создание progressive JPEGДелает файл, который при загрузке сначала появляется размыто, затем уточняетсяcjpeg -progressive, jpegtran -progressive
Пакетная обработкаОбрабатывает десятки и сотни файлов через скриптjpegtran, cjpeg
Подготовка фото для сайтаУменьшает размер файла без смены форматаcjpeg, jpegtran
Интеграция в приложениеИспользуется как JPEG-библиотека через libjpeg APIбиблиотека MozJPEG

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

Для скриншотов с мелким текстом, схем, интерфейсов и изображений с резкими линиями MozJPEG тоже можно применять, но осторожнее. JPEG в принципе хуже переносит мелкий текст, тонкие линии и контрастные границы, чем PNG или WebP lossless. Если всё же нужен именно JPEG, лучше использовать более высокое качество, отключать лишнее цветовое субдискретизирование и внимательно проверять результат глазами.

Что MozJPEG не является

MozJPEG нельзя воспринимать как универсальный редактор изображений. В нём нет инструментов для ретуши, кистей, слоёв, выделений, пластики, цветовых кривых, визуального сравнения до/после и ручного кадрирования. Программа не заменяет Adobe Photoshop, GIMP, Affinity Photo, XnView MP, ImageMagick или графический экспорт из Lightroom.

MozJPEG решает другую задачу: финальное JPEG-кодирование.

Он не делает:

  • художественную обработку фотографии;

  • изменение композиции;

  • удаление объектов;

  • пакетную цветокоррекцию через визуальный интерфейс;

  • ручной ресайз с предпросмотром;

  • работу со слоями;

  • экспорт в AVIF, WebP, PNG или TIFF как основной сценарий;

  • восстановление качества после сильного JPEG-сжатия.

Если файл уже был сильно пережат, MozJPEG не вернёт потерянные детали. Он может лучше перекодировать файл или оптимизировать структуру JPEG, но не восстановит информацию, которую прежнее сжатие уже уничтожило.

Интерфейс программы

Интерфейс MozJPEG — это набор команд. Основная работа происходит в терминале: Windows Terminal, PowerShell, Command Prompt, Terminal в macOS, Bash, Zsh или любой другой командной оболочке. Пользователь указывает входной файл, выходной файл и параметры кодирования.

Простейшая модель работы выглядит так:

cjpeg -quality 82 -progressive input.bmp > output.jpg

или так:

jpegtran -copy none -optimize -progressive input.jpg > output.jpg

В первом случае cjpeg создаёт новый JPEG из исходного изображения. Во втором случае jpegtran оптимизирует уже существующий JPEG без обычного повторного декодирования и кодирования пикселей. jpegtran работает с DCT-представлением JPEG, поэтому такие операции не ухудшают изображение, если не используются параметры, которые обрезают края или меняют содержимое файла.

Сборка MozJPEG в терминале Linux

На скриншоте показана типичная среда работы с MozJPEG: терминал, команды сборки и консольный вывод. Это хорошо отражает характер программы: вместо кнопок Открыть, Сохранить и Экспорт здесь используются команды, ключи и перенаправление вывода в файл.

Основные утилиты MozJPEG

cjpeg

cjpeg — утилита для сжатия изображения в JPEG. Она принимает исходный файл и создаёт JPEG-файл. В обычном стиле командной строки вывод часто направляется в файл через >:

cjpeg -quality 82 input.bmp > output.jpg

Также используется вариант с -outfile:

cjpeg -quality 82 -outfile output.jpg input.bmp

Параметр -outfile удобнее в скриптах, потому что явно показывает имя выходного файла и уменьшает риск ошибиться с перенаправлением потока.

Базовые параметры cjpeg:

ПараметрНазначение
-quality Nзадаёт качество JPEG от 0 до 100
-progressiveсоздаёт progressive JPEG
-baselineсоздаёт baseline JPEG и отключает progressive coding
-optimizeоптимизирует Huffman-таблицы
-grayscaleсоздаёт чёрно-белый JPEG
-rgbсоздаёт RGB JPEG без обычного преобразования в YCbCr
-sampleзадаёт схему chroma subsampling
-quant-table Nвыбирает предустановленную таблицу квантования
-notrellisотключает trellis optimization
-trellis-dcвключает trellis optimization для DC-коэффициентов
-tune-psnrнастраивает trellis под PSNR
-tune-hvs-psnrнастраивает trellis под PSNR-HVS
-tune-ssimнастраивает trellis под SSIM
-tune-ms-ssimнастраивает trellis под MS-SSIM
-revertвозвращает стандартное поведение вместо настроек MozJPEG

В cjpeg параметр -quality принимает значение от 0 до 100, но практически полезный диапазон обычно находится примерно между 50 и 95 для фотографий. Значения выше 95 резко увеличивают размер файла и редко дают заметное улучшение для человеческого глаза, а слишком низкие значения создают сильные JPEG-артефакты.

jpegtran

jpegtran работает с уже готовыми JPEG-файлами. Он используется для оптимизации, преобразования baseline JPEG в progressive JPEG, поворота, зеркального отражения, обрезки по JPEG-блокам и удаления метаданных.

Типовая команда:

jpegtran -copy none -optimize -progressive input.jpg > output.jpg

Что делает эта команда:

  • -copy none — не переносит лишние маркеры и метаданные;

  • -optimize — оптимизирует параметры энтропийного кодирования;

  • -progressive — создаёт progressive JPEG;

  • input.jpg — исходный файл;

  • > output.jpg — запись результата в новый файл.

jpegtran не меняет параметр качества JPEG так, как это делает cjpeg. Его задача — трансформировать уже закодированное JPEG-представление. Он умеет создавать progressive JPEG, оптимизировать энтропийное кодирование, поворачивать, отражать и обрезать файл в рамках ограничений JPEG-блоков.

djpeg

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

Пример:

djpeg input.jpg > output.ppm

В обычном рабочем процессе веб-оптимизации djpeg используется реже, чем cjpeg и jpegtran, но он важен для диагностики, тестов и цепочек обработки.

rdjpgcom и wrjpgcom

rdjpgcom и wrjpgcom работают с JPEG-комментариями. JPEG допускает блоки комментариев, и эти утилиты позволяют читать или записывать такие данные.

Прочитать комментарии:

rdjpgcom input.jpg

Добавить комментарий:

wrjpgcom -comment "Product photo, compressed copy" input.jpg > output.jpg

Удалить старые комментарии и записать новый:

wrjpgcom -replace -comment "Final web image" input.jpg > output.jpg

Эти инструменты не являются основными для сжатия, но полезны, если JPEG-файлы используются в архиве, каталоге или внутреннем workflow, где комментарии служат техническими пометками.

Поддерживаемые входные форматы

В классическом наборе утилит MozJPEG cjpeg работает с растровыми входными форматами вроде PPM/PGM, BMP, GIF как legacy-форматом и Targa. JPEG-файлы создаются в JFIF-представлении. Для большинства веб-задач это означает, что перед финальным кодированием изображение часто готовят в другом инструменте, а затем передают в MozJPEG как промежуточный файл.

Практический подход такой:

  1. Отредактировать изображение в редакторе или конвертере.

  2. Привести его к нужному размеру в пикселях.

  3. Сохранить промежуточный файл без лишних потерь.

  4. Закодировать итоговый JPEG через MozJPEG.

  5. Проверить вес файла и визуальное качество.

Если исходник уже JPEG, для финальной оптимизации чаще используют jpegtran. Если исходник BMP, PPM, TGA или другой подготовленный растровый файл, используют cjpeg.

Как сжать одно изображение через cjpeg

Для одного изображения удобнее всего начать с понятной команды и постепенно подбирать качество.

Пример:

cjpeg -quality 82 -progressive -outfile product-photo.jpg product-photo.bmp

Здесь:

  • cjpeg запускает JPEG-кодирование;

  • -quality 82 задаёт баланс между качеством и размером файла;

  • -progressive создаёт progressive JPEG;

  • -outfile product-photo.jpg задаёт имя итогового файла;

  • product-photo.bmp — входное изображение.

Для фотографии товара, иллюстрации в статье или изображения для лендинга значение 82 часто является хорошей стартовой точкой. Но его нельзя считать универсальным. На чистых студийных фото, портретах, пейзажах и изображениях с мягкими градиентами можно пробовать диапазон 75–85. На картинках с текстом, мелкими деталями, интерфейсами и логотипами лучше начинать с 85–92.

Проверять результат нужно не только по размеру файла, но и глазами. JPEG-артефакты могут быть малозаметны на одном изображении и резко бросаться в глаза на другом.

Пример подбора качества

cjpeg -quality 75 -progressive -outfile photo-q75.jpg photo.bmpcjpeg -quality 82 -progressive -outfile photo-q82.jpg photo.bmpcjpeg -quality 88 -progressive -outfile photo-q88.jpg photo.bmpcjpeg -quality 92 -progressive -outfile photo-q92.jpg photo.bmp

После этого нужно сравнить:

  • размер файлов;

  • детализацию;

  • края объектов;

  • текст, если он есть;

  • градиенты;

  • шум в тенях;

  • мелкие фактуры.

Правильное значение качества — не самое высокое, а минимальное из тех, где изображение ещё выглядит приемлемо для конкретной задачи.

Как оптимизировать уже готовый JPEG

Если файл уже сохранён в JPEG и нужно уменьшить его вес без обычного повторного изменения качества, используется jpegtran.

Базовая команда:

jpegtran -copy none -optimize -progressive input.jpg > output.jpg

Эта команда особенно полезна для сайтов, где уже есть много загруженных .jpg. Она не превращает плохой JPEG в хороший, но может убрать лишние метаданные, изменить структуру файла и сделать его более подходящим для веб-загрузки.

MozJPEG

На скриншоте виден типичный формат работы: переход в папку с изображениями, запуск команды оптимизации и создание нового файла. В современных сценариях чаще используют имя утилиты jpegtran, но сама логика остаётся той же: входной JPEG обрабатывается через параметры и записывается в отдельный файл.

Почему нельзя перезаписывать оригинал напрямую

Нельзя делать так:

jpegtran -copy none -optimize -progressive input.jpg > input.jpg

Такой способ опасен: оболочка может сначала очистить файл назначения, а потом программа попытается читать уже испорченный или пустой файл. Безопасный вариант — всегда писать в новый файл:

jpegtran -copy none -optimize -progressive input.jpg > input.optimized.jpg

После проверки можно заменить оригинал вручную или через отдельный скрипт с временным файлом.

Безопасный вариант с временным файлом

jpegtran -copy none -optimize -progressive input.jpg > input.tmp.jpgmv input.tmp.jpg input.jpg

Для массовой обработки лучше сохранять результат в отдельную папку, а не заменять исходники сразу.

Progressive JPEG

Progressive JPEG — один из главных сценариев MozJPEG. Такой файл загружается иначе, чем baseline JPEG. Baseline JPEG обычно появляется сверху вниз. Progressive JPEG сначала показывает грубую версию изображения целиком, а затем постепенно уточняет детали. Для пользователя это часто воспринимается лучше на медленном соединении: страница быстрее получает визуальную структуру, даже если финальная детализация ещё догружается.

MozJPEG делает progressive JPEG важной частью своего подхода. В cjpeg можно явно указать:

cjpeg -quality 82 -progressive -outfile output.jpg input.bmp

В jpegtran для готового JPEG:

jpegtran -copy none -optimize -progressive input.jpg > output.jpg

Progressive JPEG особенно полезен для:

  • больших фотографий в статьях;

  • галерей;

  • изображений в блогах;

  • карточек товаров;

  • лендингов;

  • страниц с медиа-контентом;

  • мобильного трафика;

  • сайтов, где изображения загружаются через CDN.

Но progressive JPEG не всегда является автоматическим улучшением для любого случая. На маленьких миниатюрах разница может быть незаметной. На очень старых или специализированных системах baseline JPEG иногда предпочтительнее. Для такого случая используется -baseline:

cjpeg -baseline -quality 82 -outfile output.jpg input.bmp

Trellis quantization

Trellis quantization — одна из ключевых технологий MozJPEG. Она используется при lossy-кодировании, то есть при создании JPEG с потерями. Простыми словами, энкодер ищет более выгодный способ отбросить часть данных так, чтобы файл стал меньше, а визуальная разница была менее заметной.

Обычный JPEG-кодировщик тоже отбрасывает часть информации, но делает это менее гибко. Trellis quantization оценивает варианты квантования и выбирает более удачное соотношение размера файла и искажений. Поэтому MozJPEG часто показывает хороший результат именно при финальном кодировании изображений для сайта.

Важный момент: trellis quantization не является сжатием без потерь. Если изображение кодируется через cjpeg с качеством ниже 100, часть информации теряется. Просто MozJPEG старается распределить эти потери рациональнее.

Параметры, связанные с trellis:

cjpeg -quality 82 -progressive input.bmp > output.jpg

Обычный режим использует настройки MozJPEG.

cjpeg -quality 82 -progressive -notrellis input.bmp > output.jpg

-notrellis отключает trellis optimization.

cjpeg -quality 82 -progressive -tune-ssim input.bmp > output.jpg

-tune-ssim настраивает trellis под SSIM.

cjpeg -quality 82 -progressive -tune-ms-ssim input.bmp > output.jpg

-tune-ms-ssim настраивает trellis под MS-SSIM.

cjpeg -quality 82 -progressive -tune-psnr input.bmp > output.jpg

-tune-psnr настраивает trellis под PSNR.

В большинстве практических веб-сценариев лучше не начинать с тонкой настройки метрик. Сначала стоит подобрать -quality, -progressive, -copy none, -optimize, а уже потом экспериментировать с -tune-*, если есть задача выжать максимум из большого набора изображений.

Настройка качества

Параметр -quality — главный регулятор веса и качества при создании JPEG через cjpeg.

Пример:

cjpeg -quality 80 -progressive -outfile output.jpg input.bmp

Чем выше значение, тем крупнее файл и тем ближе результат к исходнику. Чем ниже значение, тем меньше файл и тем заметнее потери.

Практическая шкала:

Значение -qualityКогда использоватьЧто ожидать
50–60миниатюры, черновые превью, изображения второстепенной важностисильное сжатие, возможны заметные артефакты
65–74большие фоновые изображения, где детализация не критичнахороший выигрыш в весе, возможна мягкость
75–82статьи, блоги, обычные фотографии для сайтатипичный баланс качества и размера
83–88карточки товаров, портфолио, важные иллюстрациилучше сохраняются детали
89–94изображения с текстом, мелкими деталями, технические фотофайл крупнее, но меньше артефактов
95+редкие случаи, когда потери почти недопустимыразмер резко растёт, выигрыш часто сомнителен

Для SEO и ускорения загрузки страниц обычно важнее подобрать минимально приемлемое качество, а не автоматически ставить 90 или 95. Большая ошибка — использовать одно значение для всех изображений. Фотография еды, скриншот интерфейса, студийное фото товара и тёмный концертный кадр с шумом сжимаются по-разному.

Качество для карточек товаров

Для маркетплейсов и интернет-магазинов нужно учитывать не только вес файла, но и читаемость:

  • текст на изображении;

  • края товара;

  • фактуру материала;

  • мелкие детали упаковки;

  • штрихкоды;

  • логотипы;

  • контрастные границы.

Стартовые настройки:

cjpeg -quality 88 -progressive -sample 1x1 -outfile product.jpg product.bmp

-sample 1x1 отключает обычное цветовое субдискретизирование и помогает сохранить цветовые границы. Это может увеличить размер файла, но для изображений с текстом и графикой результат часто выглядит аккуратнее.

Качество для статей и блогов

Для обычных фотографий в статье:

cjpeg -quality 80 -progressive -outfile article-photo.jpg article-photo.bmp

Если изображение большое и не содержит текста, можно пробовать 76–80.

Качество для фотофонов

Для фоновых изображений:

cjpeg -quality 75 -progressive -outfile hero-bg.jpg hero-bg.bmp

На фоновых изображениях мелкие потери часто менее заметны, особенно если поверх фотографии есть затемнение, градиент или текстовый блок.

Chroma subsampling и параметр sample

JPEG часто уменьшает цветовую детализацию сильнее, чем яркостную. Это связано с особенностями человеческого зрения: глаз лучше замечает изменения яркости, чем мелкие изменения цвета. Такой подход называется chroma subsampling.

В MozJPEG параметр -sample позволяет управлять этим поведением.

Примеры:

cjpeg -quality 82 -sample 2x2 input.bmp > output.jpg

2x2 соответствует распространённой схеме 4:2:0. Она хорошо уменьшает размер фотографий, но может вредить мелкому цветному тексту и резким цветовым границам.

cjpeg -quality 88 -sample 1x1 input.bmp > output.jpg

1x1 сохраняет цветовую детализацию без такого снижения. Это полезно для логотипов, интерфейсов, изображений с красным или синим текстом, карточек товаров с надписями и технических иллюстраций.

Практическое правило:

Тип изображенияРекомендуемый подход
Обычная фотография-sample 2x2 или настройки по умолчанию
Фото товара без мелкого текста-sample 2x2, если качество устраивает
Карточка товара с текстом-sample 1x1
Скриншот интерфейсалучше PNG/WebP lossless; если JPEG, то -sample 1x1
Логотип или схемаJPEG нежелателен, но при необходимости -sample 1x1

Удаление метаданных

JPEG-файл может содержать EXIF, комментарии, данные о камере, дату съёмки, координаты, цветовые профили и другие маркеры. Для сайта такие данные часто не нужны и только увеличивают вес файла. В MozJPEG это решается через -copy.

Самый распространённый вариант:

jpegtran -copy none -optimize -progressive input.jpg > output.jpg

-copy none удаляет лишние метаданные.

Другие варианты:

jpegtran -copy comments -optimize -progressive input.jpg > output.jpg

Сохраняет комментарии.

jpegtran -copy all -optimize -progressive input.jpg > output.jpg

Сохраняет все дополнительные маркеры.

Для сайта обычно выбирают -copy none, но это не всегда правильно. Если важен ICC-профиль, юридические данные, авторские пометки или служебная информация, удалять всё подряд нельзя. Для интернет-магазина чаще всего метаданные удаляют, но оригиналы при этом хранят отдельно.

Оптимизация Huffman-таблиц

Параметр -optimize оптимизирует параметры энтропийного кодирования. В cjpeg он может сделать JPEG немного меньше, но замедляет сжатие. В jpegtran он используется для перепаковки уже готового JPEG.

Пример для нового кодирования:

cjpeg -quality 82 -optimize -progressive -outfile output.jpg input.bmp

Пример для готового JPEG:

jpegtran -copy none -optimize input.jpg > output.jpg

Для финальных файлов -optimize обычно стоит использовать. Для временных превью, быстрой генерации на лету или массовой обработки в реальном времени он может быть менее удобен из-за скорости.

Baseline JPEG

Baseline JPEG — обычный JPEG, который загружается последовательно. Он нужен, когда требуется максимально консервативная совместимость или когда progressive JPEG по какой-то причине не подходит.

Команда:

cjpeg -baseline -quality 82 -outfile output.jpg input.bmp

Для современных сайтов progressive JPEG чаще полезнее, но baseline остаётся рабочим вариантом для простых изображений, старых систем, специфичных приложений и случаев, где поведение progressive-загрузки нежелательно.

Пакетная обработка

Сильная сторона MozJPEG — автоматизация. Если нужно обработать 200 изображений, вручную открывать каждое в редакторе бессмысленно. Проще сделать скрипт.

Bash

mkdir -p optimizedfor file in *.jpg; do  jpegtran -copy none -optimize -progressive "$file" > "optimized/$file"done

Этот скрипт берёт все .jpg в текущей папке и сохраняет оптимизированные копии в папку optimized.

PowerShell

New-Item -ItemType Directory -Force optimizedGet-ChildItem *.jpg | ForEach-Object {  $out = Join-Path "optimized" $_.Name  jpegtran -copy none -optimize -progressive $_.FullName > $out}

Bash для cjpeg

Если исходники подготовлены в BMP:

mkdir -p jpgfor file in *.bmp; do  base="${file%.*}"  cjpeg -quality 82 -progressive -outfile "jpg/$base.jpg" "$file"done

PowerShell для cjpeg

New-Item -ItemType Directory -Force jpgGet-ChildItem *.bmp | ForEach-Object {  $name = [System.IO.Path]::GetFileNameWithoutExtension($_.Name)  cjpeg -quality 82 -progressive -outfile "jpg$name.jpg" $_.FullName}

Пакетная обработка особенно полезна для:

  • миграции старого сайта;

  • подготовки изображений перед импортом в CMS;

  • карточек товаров;

  • генерации медиаархива;

  • оптимизации папки /uploads;

  • обработки изображений перед заливкой на CDN;

  • автоматизации в CI/CD.

Проверка результата

После сжатия нужно проверить не только размер, но и визуальные изменения. Лучший практический порядок:

  1. Сохранить результат в отдельную папку.

  2. Сравнить размер исходного и нового файла.

  3. Открыть оба изображения рядом.

  4. Проверить лицо, текст, логотипы, края объектов, тени и градиенты.

  5. Увеличить до 100%.

  6. Проверить картинку в браузере.

  7. Проверить страницу, где изображение реально будет использоваться.

MozJPEG

MozJPEG

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

Практические пресеты

Универсальный JPEG для статьи

cjpeg -quality 82 -progressive -outfile output.jpg input.bmp

Подходит для обычных фотографий в блогах, обзорах, новостях и инструкциях.

Максимально простой прогрессивный экспорт

cjpeg -quality 80 -progressive input.bmp > output.jpg

Хороший стартовый вариант, если не нужны сложные настройки.

Оптимизация готового JPEG для сайта

jpegtran -copy none -optimize -progressive input.jpg > output.jpg

Один из самых полезных вариантов для уже существующих изображений.

JPEG с сохранением метаданных

jpegtran -copy all -optimize -progressive input.jpg > output.jpg

Подходит, если нельзя удалять EXIF, ICC или другие маркеры.

Карточка товара с текстом

cjpeg -quality 88 -sample 1x1 -progressive -outfile output.jpg input.bmp

Лучше сохраняет цветовые границы и мелкие элементы, но файл может быть крупнее.

Чёрно-белое изображение

cjpeg -quality 82 -grayscale -progressive -outfile output.jpg input.bmp

Если цвет не нужен, -grayscale может уменьшить размер и ускорить обработку.

Baseline JPEG

cjpeg -baseline -quality 85 -outfile output.jpg input.bmp

Используется для консервативной совместимости.

История версий MozJPEG

MozJPEG появился как проект Mozilla, ориентированный на более эффективное JPEG-сжатие для веба. Его идея строилась вокруг простого практического принципа: если браузеры и приложения уже умеют открывать JPEG, можно улучшить сам энкодер и уменьшить размер передаваемых файлов без изменения формата. Проект изначально развивался не как визуальная программа для массового пользователя, а как библиотека и набор инструментов для интеграции в графические программы, серверные процессы и image processing tools.

Ранние версии MozJPEG были сосредоточены на progressive JPEG и оптимизации сканов. Это позволяло получать меньший файл и лучшее поведение при загрузке изображений в браузере. Затем в проекте важную роль получила trellis quantization, которая улучшила эффективность сжатия не только для progressive, но и для baseline JPEG-сценариев.

В дальнейшем MozJPEG развивался как практичный JPEG-энкодер для веб-процессов. В проекте сохранялась связь с libjpeg-turbo, но фокус оставался другим: libjpeg-turbo в первую очередь ценят за скорость, а MozJPEG — за уменьшение размера JPEG-файлов при сохранении совместимости. Это различие важно: программа не стремится быть самым быстрым JPEG-кодировщиком, её сильная сторона — более плотное финальное кодирование.

Развитие MozJPEG можно описать не только через номера версий, но и через эволюцию задач:

ЭтапЧто стало важным
Запуск проектаУлучшение JPEG-сжатия без смены формата
Развитие progressive JPEGОптимизация загрузки изображений для веба
Усиление trellis quantizationЛучшее соотношение визуального качества и размера
Настройка метрик качестваPSNR, PSNR-HVS-M, SSIM, MS-SSIM
Интеграция в workflowИспользование в серверной обработке, пайплайнах и приложениях
Современное применениеФинальная оптимизация JPEG там, где WebP/AVIF не заменяют обычный .jpg

Главный итог истории MozJPEG: программа заняла нишу специализированного JPEG-энкодера для тех случаев, где нужен именно стандартный JPEG, но с более эффективным сжатием.

Производительность

MozJPEG обычно выбирают не за максимальную скорость, а за результат сжатия. Его подход может быть медленнее, чем у более простых или более скоростных JPEG-энкодеров. Причина понятна: progressive encoding, оптимизация сканов, trellis quantization и дополнительные проходы требуют вычислений.

В веб-процессах это часто нормально. Изображение можно сжать один раз при публикации, а затем отдавать пользователям уже готовый файл тысячи раз. В таком сценарии потратить больше времени на кодирование выгодно, если итоговый JPEG станет меньше.

Плохо MozJPEG подходит для сценариев, где нужно кодировать изображения в реальном времени:

  • видеопоток;

  • мгновенные превью на слабом сервере;

  • массовая обработка без очереди;

  • обработка миллионов изображений без распределения нагрузки;

  • пользовательский интерфейс, где результат нужен сразу после движения ползунка.

Хорошо подходит:

  • ночная пакетная оптимизация;

  • подготовка изображений перед релизом сайта;

  • обработка медиа при загрузке в CMS;

  • финальная сборка статического сайта;

  • серверный pipeline с очередью;

  • оптимизация архива изображений.

Обычный компромисс MozJPEG выглядит так: размер файла может быть лучше, но кодирование занимает больше времени. Для финальных веб-изображений это часто приемлемо, для интерактивной обработки — не всегда.

Качество изображения и типичные артефакты

MozJPEG улучшает JPEG-кодирование, но не отменяет природу JPEG. Формат остаётся сжатием с потерями, если используется обычный lossy-режим. При слишком агрессивном качестве появляются характерные дефекты.

Типичные артефакты:

АртефактКак выглядитГде заметен
Блоки 8×8квадратные фрагментынебо, стены, равномерные области
Ореолысветлые или тёмные контурывокруг текста и резких краёв
Мылопотеря мелкой детализацииволосы, ткань, трава, фактура
Цветовой шумпятна и грязные оттенкитени, кожа, градиенты
Ступеньки на градиентахполосы вместо плавного переходафон, небо, студийные тени
Плохой текстрасплывчатые буквыбаннеры, карточки товаров, скриншоты

Для фотографий MozJPEG обычно работает хорошо. Для графики с текстом нужен более аккуратный подход: выше -quality, чаще -sample 1x1, обязательная визуальная проверка.

Работа с изображениями для сайта

В веб-разработке MozJPEG часто используют как последний этап перед публикацией. Схема может быть такой:

  1. Исходные изображения хранятся отдельно.

  2. Редактор или скрипт делает ресайз под нужные размеры.

  3. Для каждого размера создаётся промежуточный файл.

  4. MozJPEG создаёт финальный JPEG.

  5. Файл попадает в CMS, CDN или папку сборки сайта.

Пример структуры:

images/  source/    product-001.tif    product-002.tif  prepared/    product-001-1200.bmp    product-002-1200.bmp  public/    product-001-1200.jpg    product-002-1200.jpg

В таком workflow MozJPEG отвечает только за папку public, то есть за финальный .jpg.

Для сайта особенно важны:

  • фактический размер в пикселях;

  • качество JPEG;

  • progressive JPEG;

  • удаление метаданных;

  • отсутствие повторного многократного перекодирования;

  • проверка визуального результата в реальном шаблоне страницы.

Большая ошибка — пытаться компенсировать неправильный размер изображения только сжатием. Если картинка отображается на сайте шириной 600 px, но загружается файл 4000 px, сначала нужно сделать ресайз, а уже потом применять MozJPEG.

Работа с изображениями для интернет-магазина

Для интернет-магазина MozJPEG полезен, но требует аккуратности. Изображение товара должно быть лёгким, но не должно портить доверие к карточке. Если сжатие уничтожило фактуру ткани, размылило надпись на упаковке или испортило края товара, экономия нескольких килобайт не оправдана.

Рекомендуемый подход:

cjpeg -quality 88 -sample 1x1 -progressive -outfile product.jpg product.bmp

Для фото без текста можно пробовать:

cjpeg -quality 84 -progressive -outfile product.jpg product.bmp

Для уже готовых JPEG:

jpegtran -copy none -optimize -progressive product.jpg > product.optimized.jpg

Проверять нужно:

  • логотипы;

  • текст на упаковке;

  • контуры товара;

  • мелкие детали;

  • цвет товара;

  • тени;

  • фон;

  • отсутствие грязных пятен на белом фоне.

Если карточка товара содержит инфографику, JPEG может быть не лучшим форматом. Но если площадка требует JPEG или рабочий процесс построен вокруг .jpg, MozJPEG помогает получить более аккуратный финальный файл.

Работа с метриками качества

MozJPEG поддерживает настройку trellis optimization под разные метрики:

  • PSNR;

  • PSNR-HVS;

  • SSIM;

  • MS-SSIM.

Примеры:

cjpeg -quality 82 -tune-psnr -progressive input.bmp > output.jpg
cjpeg -quality 82 -tune-hvs-psnr -progressive input.bmp > output.jpg
cjpeg -quality 82 -tune-ssim -progressive input.bmp > output.jpg
cjpeg -quality 82 -tune-ms-ssim -progressive input.bmp > output.jpg

Для обычного пользователя эти параметры не обязательны. Они важнее для разработчиков, которые строят автоматический image pipeline и хотят сравнить качество на большом наборе файлов. Метрика может показать один результат, а человеческое восприятие — другой. Поэтому финальную оценку всё равно лучше делать на реальных изображениях и реальных страницах.

Ошибки при использовании MozJPEG

Многократное перекодирование JPEG

Нельзя много раз открывать JPEG, сохранять снова, потом снова кодировать. Потери накапливаются. Правильный процесс: хранить оригинал в без потерь или в максимальном качестве, а MozJPEG использовать для финального экспортного файла.

Слишком низкое качество

-quality 60 может выглядеть нормально на одном изображении и плохо на другом. Нельзя слепо применять одно значение ко всем файлам.

Удаление всех метаданных без проверки

-copy none полезен для сайта, но может удалить нужные данные. Для архива, фотографий с авторством, изображений с цветовым профилем или юридически значимых файлов оригиналы нужно хранить отдельно.

Перезапись оригиналов

Команды с > нельзя направлять в тот же файл, который используется как входной. Это риск повреждения данных.

Неправильный формат исходника

cjpeg не является универсальным конвертером всех графических форматов. Для сложных исходников лучше заранее подготовить файл через подходящий редактор или конвертер.

Ожидание сжатия без потерь от cjpeg

cjpeg создаёт JPEG и при обычных настройках выполняет сжатие с потерями. Если нужна оптимизация без ухудшения уже готового JPEG, используется jpegtran, но и там нужно понимать ограничения операций.

Игнорирование размера в пикселях

Если файл слишком большой из-за лишнего разрешения, MozJPEG не должен быть единственным решением. Сначала нужен правильный ресайз.

Диагностика и проверочные команды

Проверить, что утилита доступна:

cjpeg -version
jpegtran -version

Посмотреть справку:

cjpeg -help
jpegtran -help

Проверить базовую оптимизацию:

jpegtran -copy none -optimize input.jpg > output.jpg

Создать progressive JPEG:

jpegtran -copy none -optimize -progressive input.jpg > output.jpg

Создать baseline JPEG:

cjpeg -baseline -quality 85 -outfile output.jpg input.bmp

Сделать чёрно-белую JPEG-копию:

cjpeg -grayscale -quality 82 -outfile output.jpg input.bmp

Прочитать комментарии:

rdjpgcom input.jpg

Записать комментарий:

wrjpgcom -comment "Compressed final JPEG" input.jpg > output.jpg

Сравнение с аналогами

libjpeg-turbo

libjpeg-turbo — близкий по происхождению и назначению инструмент, но с другим приоритетом. Его сильная сторона — скорость. Он активно использует SIMD-ускорение и хорошо подходит для сценариев, где важна быстрая обработка baseline JPEG. Для серверов с большим количеством изображений, генерации превью и приложений, где кодирование должно быть быстрым, libjpeg-turbo часто выглядит практичнее.

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

Критерийlibjpeg-turboMozJPEG
Главный приоритетскоростьразмер файла и веб-оптимизация
Progressive JPEGподдерживаетсяодин из ключевых сценариев
Trellis quantizationнет в стандартном подходеесть
Подходит для real-timeлучшехуже
Подходит для финального веб-сжатиядаособенно хорошо

jpegoptim

jpegoptim — удобная консольная утилита для оптимизации JPEG-файлов. Она хороша, когда нужно быстро обработать готовые .jpg, удалить метаданные и уменьшить размер без сложной настройки кодирования. Для администраторских задач jpegoptim часто проще: указал папку, параметры — получил оптимизированные файлы.

MozJPEG гибче на этапе именно кодирования. Через cjpeg можно тонко управлять quality, progressive JPEG, trellis, таблицами квантования, subsampling и метриками. Если задача — просто пройтись по папке готовых JPEG, jpegoptim удобен. Если задача — построить более контролируемый JPEG-энкодинг, MozJPEG даёт больше возможностей.

Guetzli

Guetzli — JPEG-энкодер от Google, ориентированный на высокое визуальное качество при сильном сжатии. Его главная проблема — скорость. В практических сценариях Guetzli может быть настолько медленным, что массовая обработка становится неудобной.

MozJPEG рациональнее для регулярного workflow. Он тоже не самый быстрый, но обычно намного практичнее для обработки большого количества изображений. Guetzli уместен для отдельных изображений, где можно ждать долго ради результата. Для сайта с сотнями и тысячами картинок MozJPEG выглядит более рабочим вариантом.

Jpegli

Jpegli — современный JPEG-энкодер Google, который активно сравнивают с libjpeg-turbo и MozJPEG. Он интересен качеством, эффективностью и совместимостью с JPEG-экосистемой. Jpegli может быть предпочтительнее в ряде сценариев при сопоставимом размере или качестве.

MozJPEG при этом остаётся зрелым и понятным инструментом для существующих процессов. Его сильная сторона — известный набор утилит, понятные параметры, хорошая интеграция в старые pipeline и ориентация на обычный JPEG для веба.

ImageMagick

ImageMagick — универсальный инструмент обработки изображений. Он умеет менять размер, конвертировать форматы, накладывать эффекты, работать с цветом, обрезать, поворачивать, собирать пакетные операции. Это не только JPEG-энкодер, а большой набор функций для обработки графики.

MozJPEG уже по назначению. Он не заменяет ImageMagick, но может использоваться вместе с ним. Например, ImageMagick готовит размер и промежуточный файл, а MozJPEG выполняет финальное JPEG-кодирование.

Пример логики:

magick source.png -resize 1600x1600 prepared.bmpcjpeg -quality 82 -progressive -outfile final.jpg prepared.bmp

Такой подход разделяет задачи: универсальная обработка отдельно, финальное JPEG-сжатие отдельно.

Squoosh

Squoosh — визуальный инструмент для сжатия изображений в браузере. Он удобен для ручной работы: можно открыть изображение, подвигать параметры, сравнить результат и сохранить файл. Для новичка это проще, чем терминал.

MozJPEG лучше для автоматизации. Если нужно обработать 500 изображений по одинаковым правилам, консольный инструмент и скрипт удобнее визуального интерфейса. Squoosh хорош для разовых файлов и визуального подбора параметров, MozJPEG — для повторяемого процесса.

WebP и AVIF-энкодеры

WebP и AVIF дают другие форматы, не JPEG. Часто они сжимают лучше, особенно AVIF, но не всегда подходят по требованиям проекта. Иногда нужен именно .jpg: из-за CMS, старой интеграции, требований площадки, email-клиентов, совместимости, внутреннего архива или уже существующей инфраструктуры.

В таких случаях MozJPEG полезен именно потому, что не меняет формат. Он улучшает JPEG там, где JPEG остаётся обязательным или наиболее удобным.

Плюсы и минусы

Плюсы

ПлюсЧто это даёт
Стандартный JPEG на выходефайл открывается в браузерах и обычных просмотрщиках
Хорошее сжатиеможно уменьшить вес изображений для сайта
Progressive JPEGлучшее восприятие загрузки больших фото
Гибкие параметрыможно настраивать quality, subsampling, trellis, метрики
Удобство автоматизацииподходит для скриптов и серверных процессов
Работа с готовыми JPEGjpegtran оптимизирует существующие файлы
Удаление метаданныхможно уменьшить файл и убрать лишнюю информацию
Интеграция как библиотекаподходит для графических программ и image processing tools

Минусы

МинусПочему это важно
Нет полноценного GUIновичку сложнее начать
Требуется командная строканужно понимать параметры и файлы
Кодирование может быть медленнымне лучший выбор для real-time
Не заменяет редакторне делает ретушь, ресайз и визуальную обработку
JPEG остаётся lossy-форматомпотери качества возможны
Нужна проверка результатанельзя применять одни настройки ко всем файлам
Не решает проблему огромных размеров в пикселяхперед сжатием часто нужен ресайз

Для кого подходит MozJPEG

MozJPEG подходит тем, кто понимает, зачем ему именно JPEG и зачем нужна автоматизация.

Хороший выбор для:

  • веб-разработчиков;

  • SEO-специалистов;

  • владельцев сайтов;

  • администраторов WordPress;

  • разработчиков статических сайтов;

  • интернет-магазинов;

  • специалистов по скорости загрузки страниц;

  • тех, кто готовит изображения партиями;

  • тех, кто строит image pipeline;

  • разработчиков графических приложений.

Плохой выбор для:

  • пользователя, которому нужна кнопка улучшить фото;

  • ручной ретуши;

  • художественной обработки;

  • работы со слоями;

  • редактирования RAW;

  • интерактивной цветокоррекции;

  • новичка, который вообще не хочет использовать терминал;

  • случаев, где лучше сразу использовать WebP или AVIF.

Практический рабочий процесс

Оптимальный workflow с MozJPEG выглядит так:

  1. Хранить оригиналы отдельно.

  2. Готовить изображение в нужном размере.

  3. Не делать многократное JPEG-пересохранение.

  4. Создавать финальный JPEG через cjpeg или оптимизировать готовый через jpegtran.

  5. Сохранять результат в отдельную папку.

  6. Проверять вес.

  7. Проверять качество глазами.

  8. Загружать на сайт только финальные файлы.

Пример для нового JPEG:

cjpeg -quality 82 -progressive -outfile public/photo.jpg prepared/photo.bmp

Пример для уже готового JPEG:

jpegtran -copy none -optimize -progressive uploads/photo.jpg > public/photo.jpg

Пример для папки:

mkdir -p publicfor file in uploads/*.jpg; do  name=$(basename "$file")  jpegtran -copy none -optimize -progressive "$file" > "public/$name"done

Частые вопросы

Можно ли сжать JPEG без потери качества?

Если используется jpegtran для оптимизации структуры, преобразования в progressive JPEG или удаления метаданных, изображение может не ухудшаться, потому что пиксели не проходят обычный цикл декодирования и повторного lossy-кодирования. Но если используется cjpeg с обычным JPEG-качеством, это уже сжатие с потерями.

Почему файл иногда почти не уменьшается?

JPEG уже мог быть хорошо оптимизирован. Ещё одна причина — изображение содержит шум, мелкие детали или сложные текстуры. Такие файлы сжимаются хуже. Бывает и так, что удаление метаданных даёт основной выигрыш, а само изображение почти не уменьшается.

Почему после сжатия текст стал хуже?

JPEG плохо переносит мелкий текст и резкие цветовые границы. Нужно повысить -quality, попробовать -sample 1x1 или использовать другой формат, если JPEG не обязателен.

Нужно ли всегда включать progressive?

Для крупных веб-изображений — чаще да. Для маленьких миниатюр и специфичных систем — не всегда. Если нужна консервативная совместимость, используется -baseline.

Можно ли использовать MozJPEG для PNG?

MozJPEG не является PNG-оптимизатором. Его задача — JPEG. PNG можно предварительно подготовить другим инструментом и затем закодировать в JPEG, если потеря прозрачности и lossy-сжатие допустимы.

Почему результат хуже, чем ожидалось?

Чаще всего причина в одном из пунктов:

  • слишком низкий -quality;

  • неправильный -sample;

  • исходник уже был сильно сжат;

  • изображение содержит текст или интерфейс;

  • файл несколько раз перекодировали;

  • ожидали от JPEG поведения PNG;

  • сравнивали не в 100% масштабе;

  • использовали одно значение качества для всех изображений.

Итоговая оценка

MozJPEG — сильный инструмент для финального JPEG-сжатия и оптимизации изображений для сайта. Его главная ценность — не в удобстве визуального интерфейса, а в качестве кодирования, гибкости параметров и возможности автоматизировать обработку. Это программа для тех, кто работает с изображениями системно: готовит материалы для сайта, оптимизирует каталог, строит pipeline, уменьшает вес страниц и хочет сохранить обычный JPEG без перехода на другой формат.

Для новичка MozJPEG может показаться неудобным из-за командной строки. Для массовой ручной обработки с предпросмотром проще использовать визуальные инструменты. Но если задача — сжатие JPEG, progressive JPEG, удаление метаданных, пакетная обработка и контроль над параметрами, MozJPEG остаётся одним из самых полезных специализированных JPEG-энкодеров.

Оптимальная роль программы — последний этап перед публикацией: изображение уже отредактировано, размер в пикселях уже выбран, визуальная часть готова, и остаётся получить компактный, совместимый, аккуратно сжатый JPEG.


Ваш адрес email не будет опубликован. Обязательные поля помечены *