В последний день уходящего года проект Mozilla опубликовал (https://groups.google.com/forum/#!topic/mozilla.dev.mozjpeg/...) третий выпуск пакета mozjpeg (https://github.com/mozilla/mozjpeg/), в рамках которого развивается высококачественный кодировщик JPEG-изображений, демонстрирующий более высокую степень сжатия при сохранении совместимости с подавляющим большинством существующих декодировщиков JPEG. Mozjpeg является форком библиотеки libjpeg-turbo и обеспечивает обратную совместимость c ней. Код mozjpeg распространяется (https://github.com/mozilla/mozjpeg) под лицензией BSD.
В качестве причины создания mozjpeg упоминается проблема увеличения размера сайтов в Web, чему способствует активное размещение фотографий. Для того, чтобы сократить трафик, компания Google пытается продвинуть формат WebP, отличающийся более эффективным кодированием, но пока не получившим повсеместное распространение. Разработчики Mozilla выбрали другой путь и занялись оптимизацией методов кодирования JPEG без нарушения совместимости с декодировщиками. По результатам сравнительного анализа (http://people.mozilla.org/~josh/lossy_compressed_image_study.../), форматы WebP и JPEG XR не обеспечивают достаточно большого преимущества по сравнению с хорошо оптимизированным кодировщиком JPEG. Значительных улучшений удалось добиться только при использовании методов HEVC (H.265), но они защищены патентами и не могут использоваться без ограничений. В качестве свободной альтернативы при участии Mozilla развивается свободный кодек Daala (https://www.opennet.ru/opennews/art.shtml?num=37242), но работа над ним ещё далека до завершения.
Отличие mozjpeg от libjpeg-turbo, другого форка libjpeg, сводится к тому, что libjpeg-turbo нацелен на оптимизацию скорости кодирования и декодирования, а mozjpeg развивает методы сокращения размера файлов. Для новых возможностей mozjpeg добавлены новые опции, которые для сохранения совместимости не включены по умолчанию в библиотеке, но активированы в поставляемой в комплекте утилите cjpeg, при использовании которой применяется наиболее агрессивный набор оптимизаций для сокращения размера результирующих файлов.
Из реализованных в прошлых выпусках mozjpeg методов можно отметить технику адаптивного треллис-квантования (trellis quantization), уже используемую в видео-кодеках Theora, Xvid и x264, а также прогрессивное сканирование ("jpgcrush"), обеспечивающее выявление оптимальной конфигурации кодирования, которая использует меньший объём данных.
В новом (http://calendar.perfplanet.com/2014/mozjpeg-3-0/) выпуске (https://github.com/mozilla/mozjpeg/releases/tag/v3.0):
- Проведена большая работа по обеспечению полной обратной совместимости на уровне ABI c библиотекой libjpeg-turbo. Таким образом, mozjpeg теперь можно использовать в качестве прозрачной замены, как libjpeg, так и libjpeg-turbo. Работа по обеспечению совместимости проведена совместно с разработчиками libjpeg-turbo, с которыми согласован план поддержания совместимости API с учётом подготовки будущих выпусков.
- Улучшена реализация треллис-квантования, позволяющая сократить размер при сохранении общего уровня качества за счёт оптимального подбора блоков трансформации, минимизирующих метрики размер/искажения и применяющих сглаживание некоторых мелких деталей, не влияющих на общее восприятие картинки, компенсируя такое сглаживание повышением качества цветопередачи. В новом выпуске, в дополнение к традиционным настройкам таблиц квантования, рассчитанным на отображение на обычныъ экранах, добавлены новые преднастройки, оптимизированные для изображений выводимых на экранах сверхвысокого разрешения (high-DPI).
<center><a href="http://calendar.perfplanet.com/wp-content/uploads/2014/12/ko... src="https://www.opennet.ru/opennews/pics_base/0_1420015233.jpg" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="ImageMagick" border=0></a></center>
<center><a href="http://calendar.perfplanet.com/wp-content/uploads/2014/12/ko... src="https://www.opennet.ru/opennews/pics_base/0_1420015287.jpg" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="mozjpeg" border=0></a></center>
- Реализована техника устранения ореола (дерингинг) для черного текста на белом фоне. Для такого текста mozjpeg теперь может очищать серый "туман", возникающий вокруг букв, что позволяет не только сократить размер, но и увеличить качеcтво картинки.
<center><a href="http://calendar.perfplanet.com/wp-content/uploads/2014/12/ko... src="https://www.opennet.ru/opennews/pics_base/0_1420015034.jpg" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></a><a href="http://calendar.perfplanet.com/wp-content/uploads/2014/12/ko... src="https://www.opennet.ru/opennews/pics_base/0_1420015095.jpg" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></a></center>
- Обеспечено объединение раздельных маркеров DQT (FFDB) и DHT (FFC4) в один сводный маркер.
- Добавлена опция для выбора таблиц квантования;
- В утилиту cjpeg добавлена возможность использования на входе PNG-файлов и добавлен флаг "-version" для показа номера версии;
- Перенос новых возможностей из свежей кодовой базы libjpeg-turbo.
URL: https://groups.google.com/forum/#!topic/mozilla.dev.mozjpeg/...
Новость: https://www.opennet.ru/opennews/art.shtml?num=41371