jpegoptim против jpegtran против mozjpeg

Я нашел два слегка противоречивых сообщения в блоге по этому вопросу, здесь я суммирую:

В дополнение к путанице, этот поток Reddit предполагает, что mozjpeg использует тот же алгоритм, что и в jpegcrush, и что jpegcrush является оболочкой для jpegtran... итак, мы прошли полный круг? Я могу только предположить, что эти комментарии Reddit не верны, кто-нибудь может подтвердить это?

1 ответ

Библиотека MozJPEG использует один алгоритм, вдохновленный jpegcrush (оптимизированное прогрессивное сканирование), но технически это совершенно новая реализация.

Библиотека MozJPEG является заменой популярного libjpeg, поэтому почти каждый инструмент, связанный с JPEG, может быть скомпилирован в обычном и MozJPEG вариантах.

Существует "регулярный" jpegtran и версия MozJPEG jpegtran, Это та же самая программа, но версия MozJPEG имеет другие настройки по умолчанию и выполняет дополнительную работу для лучшего сжатия.

Так же, jpegoptim обычно собирается с помощью libjpeg, но также возможно собрать его с помощью версии libjpeg для MozJPEG (например, ImageOptim делает это).


Есть два способа использования MozJPEG:

  1. без потерь (возьмите существующий файл JPEG и сделайте его немного меньше). Это то, что MozJPEG jpegtran делает.
  2. с потерями (создайте новый файл JPEG из несжатых пикселей с более высоким соотношением качества и размера файла). Это то, что MozJPEG cjpeg делает, и другие инструменты, такие как jpegoptim можно сделать с MozJPEG.

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

Более точный анализ скорости здесь: https://libjpeg-turbo.org/About/Mozjpeg

Обратите внимание, что "медленный" здесь относительный. В абсолютном выражении он сжимает несколько мегапикселей в секунду, поэтому может быть достаточно быстрым для большинства приложений.

Другие вопросы по тегам