Mozilla анонсировала новый проект mozjpeg по созданию качественного кодера JPEG, который улучшит сжатие изображений при сохранении совместимости с существующими декодерами.
На каждом сайте постоянно увеличивается и количество файлов JPEG, и их размер. Поскольку HTML, JS, и CSS относительно невелики, то при загрузке веб-страницы основной трафик зачастую приходится именно на JPEG. Так что уменьшение размера фотографий — вполне очевидная цель для оптимизации, считает Mozilla.
Существующие кодеры JPEG зачастую работают не очень эффективно. Логично перейти на более современные алгоритмы (например, JPEG2000 с вейвлет-преобразованием или свободный WebP), и такая тема неоднократно обсуждалась. Но разработчики Mozilla говорят, что популярность JPEG слишком велика. Созданный в 1992 году этот стандарт сжатия с потерями стал общепризнанным. Переход на новый формат займёт много лет, поскольку он не совместим с имеющимся программным обеспечением. «Мы (в Mozilla) не сомневаемся, что алгоритмические улучшения когда-нибудь подтолкнут к такому переходу, возможно, скоро. Но даже в этом случае JPEG ещё долго будет с нами».
Таким образом, даже с учетом внедрения нового формата сжатия с потерями улучшение нынешнего кодера JPEG имеет смысл. Разработчики Mozilla задались вопросом: достиг ли JPEG за 22 года своей эволюции максимально возможного уровня компрессии? Они проконсультировались с множеством инженеров и пришли к выводу, что ответ отрицательный, даже с учётом ограничения на совместимость с существующими декодерами. Поэтому и решено было запустить проект mozjpeg.
Для начала Mozilla выпускает версию 1.0, которая является форком libjpeg-turbo с добавлением функциональности скрипта jpgcrush на C, который часто используют для оптимизации фотографий без потери качества. На случайной выборке 1500 фотографий из Wikimedia скрипт уменьшает размер файлов, в среднем, на 10%, выбирая конфигурацию прогрессивного кодирования с наименьшим количеством бит. Поскольку ни в одном популярном кодере нет такой функциональности, а у мейнтейнера libjpeg-turbo «другие приоритеты», то решено сделать форк и добавить её туда.
На следующем этапе Mozilla планирует внедрить треллис-квантование.
Желающим поучаствовать в процессе и подсказать идеи — добро пожаловать в список рассылки dev-mozjpeg.
Автор: alizar