Известный французский программист Фабрис Беллар (автор эмулятора QEMU, компилятора Tiny C, упаковщика LZEXE и многих утилит) разработал новый графический формат, имеющий все шансы стать «убийцей JPEG» в ближайшее время.
Формат BPG (Better Portable Graphics) обеспечивает большую степень сжатия, чем JPEG. При этом он сохраняет градиентные переходы и многие мелкие детали. Разница особенно видна при сильной компрессии. Там, где снимки JPEG изобилуют артефактами, эти же кадры в BPG выглядят вполне приемлемо, а файлы занимают меньше места.
Каждый такой файл начинается hex-заголовком 42 50 47 (BPG). Далее изображение описывается подобно тому, как это происходит в открытом стандарте сжатия HEVC (H.265), изначально разработанном для компрессии видеопотока. Важной особенностью BPG указывается возможность сохранять альфа-канал (прозрачный слой), что отчасти делает его и конкурентом других популярных в сети форматов: PNG и GIF.
Помимо альфа-канала, BPG поддерживает сохранение любых метаданных. В EXIF описываются параметры съёмки и модель камеры, время и дата оригинального кадра, метки координат (GPS) и другая техническая информация. В IPTC указываются сведения об авторском праве и заполняются поля рубрикатора, помогающего поисковым системам находить изображение по ключевым словам. XMP содержит сведения об обработке изображения, которые можно сохранить как шаблон или передать другому приложению. ICC описывает цветовое пространство для корректной цветопередачи на разных экранах.
BPG поддерживает цветовые модели RGB, CMYK и YCgCo, причём с разрядностью до 14 бит на канал вместо восьми у JPEG. Это даёт возможность сохранять больше полутонов и обеспечивает возможности постобработки, близкие к TIFF.
Джош Аас (Josh Aas), разработчик Camino и старший стратег по развитию Mozilla, так прокомментировал разработку новых стандартов сжатия изображений в корпоративном блоге:
«Кодирование изображений в JPEG годами остаётся неизменным в плане степени сжатия. Поэтому его замена более эффективным алгоритмом – частая тема для дискуссий. Основным недостатком ухода от JPEG станет многолетний период становления нового стандарта».
Учитывая эти сложности, Фабрис Беллар сделал всё возможное для упрощения перехода на новый формат. Поддержка BPG разными браузерами на первых порах обеспечивается при помощи кросс-платформенного декодера, работающего на JavaScript. Преобразование изображений может осуществляться на стороне сервера, что не потребует каких либо действий со стороны пользователя.
В июле этого года Mozilla провела апробацию другого формата сжатия изображений – MozJPEG 2.0. Компания Facebook, крайне заинтересованная в оптимизации хранения пользовательских фотографий на своих серверах, выделила на его разработку грант в размере $60 тыс.
BPG требует ещё меньше места для хранения, но пока браузеры пользователей не имеют его встроенной поддержки. Обратная конвертация изображений на лету станет настоящим кошмаром для любой социальной сети. В текущем варианте с JS-декодером для этого потребуется слишком много вычислительных ресурсов.
Сам Фабрис Беллар представил свою разработку как полностью открытый стандарт. Он опубликовал его детальное описание и выложил исходный код JS-декодера. Cкомпилированная консольная версия для Windows также доступна на сайте автора.
Однако пока остаётся открытым вопрос о соблюдении авторских прав, прояснение которого потребует юридической экспертизы. Дело в том, что патент на оригинальный алгоритм HEVC принадлежит MPEG LA. Какова степень заимствования в разработке Беллара — неизвестно. Если юристы сочтут, что в BPG используется охраняемый патентом код, то правообладатель потребует лицензионных отчислений, что фактически поставит крест на широком распространении перспективного формата.