В июле 2014 года Mozilla провела сравнительное тестирование форматов сжатия изображений и выяснила, что WebP и JPEG XR не обеспечивают особого преимущества перед хорошо оптимизированным кодеком JPEG, хотя тот разработан более 20 лет назад. Только HEVC (H.265) показал гораздо лучший результат, но это запатентованный кодек, который формально нельзя использовать в свободных продуктах.

В то же время Mozilla ведёт планомерную работу над кодеками нового поколения. Daala показывает хорошие результаты, но пока не готов для повсеместного использования. В краткосрочной перспективе Mozilla предлагает использовать модернизированный JPEG-кодек MozJPEG, который обеспечивает лучшее качество сжатия, при этом сохраняя полную совместимость со стандартом JPEG и со всеми браузерами. Недавно вышла третья его версия.

MozJPEG отличается тем, что умеет делать оптимизацию с прогрессивным сканированием — трюк, известный по инструменту jpegcrush/jpegrescan. Параметры прогрессивного сканирования влияют на степень сжатия. Возможно уменьшить размер файла, если правильно их подобрать.

Кроме того, MozJPEG использует технику из современных видеокодеков, которая называется треллис-квантование (trellis quantization). Этот алгоритм базируется на дискретно-косинусном преобразовании, он используется в видеокодеках Theora, Xvid, x264, утилите mencoder (опция -trellis).

Для сравнения, вот как выглядит одна и та же фотография, сжатая с помощью ImageMagick и с помощью MozJPEG.

ImageMagick (20,8 КБ), convert -quality 18
ImageMagick (20,8 КБ), convert -quality 18
MozJPEG (20,6 КБ), cjpeg -quant-table 2 -quality 29.4
MozJPEG (20,6 КБ), cjpeg -quant-table 2 -quality 29.4

Вдобавок ко всему, в MozJPEG исправлен известный баг JPEG с созданием мутного ореола вокруг текста.

Libjpeg 6b (6,2 КБ), cjpeg -sample 1x1 -quality 16
Libjpeg 6b (6,2 КБ), cjpeg -sample 1×1 -quality 16
MozJPEG (6 КБ), cjpeg -sample 1x1 -quality 35.5
MozJPEG (6 КБ), cjpeg -sample 1×1 -quality 35.5

MozJPEG бинарно совместим как с libjpeg-turbo, так и с классическим libjpeg, то есть его можно использовать как замену libjpeg.



2 комментария

  1. 30.12.2014 at 14:46

    Если MozJPEG полностью совместим с JPEG, тогда что это за «кампания по внедрению»? Бери да внедряй, или особое приглашение нужно?

  2. 02.01.2015 at 23:33

    Как поставить на линукс? Буду скрины в нем писать!

Оставить мнение