Эффективное кодирование и декодирование без специального оборудования;
В частности, JPEG XL примерно так же быстро кодируется и декодируется, как старый JPEG с использованием libjpeg-turbo, и на порядок быстрее кодируется и декодируется по сравнению с HEIC и x265[7]. Кроме того, он распараллеливаемый.
JPEG XL основан на идеях формата PIK от Google и формата FUIF от Cloudinary (который был, в свою очередь, основан на FLIF)[11].
Формат в основном основан на двух режимах кодирования:
VarDCT (дискретное косинусное преобразование (ДКП) с переменным размером блока) — использует тот же алгоритм ДКП, что и JPEG, но блоки вместо ограничения 8x8 имеют различные размеры (от 2x2 до 256x256), неквадратные формы (например, 16x8, 8x32, 32x64) или могут использовать другие преобразования (AFV, Hornuss).
Модульный — отвечает, среди прочего, за эффективное кодирование контента без потерь. Этот режим используется для сохранения полей адаптивного квантования, дополнительных каналов (например, альфа-канала, карты глубины, теплового канала, плашечных цветов и т. д.) и коэффициентов децимации (изображение с пониженной частотой дискретизации 1:8) режима VarDCT. Он также допускает сжатие с потерями с помощью модифицированного преобразования Хаара (называемого «squeeze»), которое имеет прогрессивные свойства: качество изображения растёт с увеличением объёма загружаемых данных. Одним из способов постепенной загрузки изображений на основе VarDCT является сохранение коэффициентов децимации VarDCT с модульным «сжатием», благодаря чему оба режима работают в тандеме.
В обоих режимах может помочь раздельное моделирование конкретных особенностей изображения, неизвестных в других кодеках на момент создания формата:[a]
повторяющиеся «участки», такие как текст, точки или спрайты,
синтез шума (поскольку шум трудно кодировать в обоих основных режимах, лучше оценить его значение в кодере, сохранить его, а затем восстановить шум в декодере).
Режимы с потерями обычно используют цветовое пространство XYB, полученное из LMS[13].
JPEG XL также может без потерь повторно кодировать уже существующие файлы JPEG, напрямую копируя коэффициенты блоков DCT JPEG в блоки 8x8 VarDCT в JPEG XL, что делает возможным меньший размер файла за счёт лучшего энтропийного кодирования. Ранее существовал отдельный режим, специализирующийся именно на этом, называемый Brunsli, который был отделён от VarDCT и модульным, но он был отменён, чтобы упростить спецификацию и сделать декодер меньше на 20 %[14].
По умолчанию используется параметр, визуально близкий к значению без потерь, который по-прежнему обеспечивает хорошее сжатие[7].
Анимированные (многокадровые) изображения не выполняют расширенное межкадровое предсказание, хотя доступны некоторые рудиментарные инструменты межкадрового кодирования:
фреймы могут быть меньше полного размера холста, оставляя другие пиксели нетронутыми;
фреймы поддерживают несколько режимов наложения в дополнение к замене предыдущих фреймов, такие как сложение и умножение[15];
можно запомнить до четырех кадров[16] и ссылаться на них в более поздних кадрах[17].
Firefox[33] — веб-браузер; в тестировании. Поддержка включается через экспериментальные настройки в Firefox Nightly[34] или через аддон[35] в основной версии.
Chromium[36] — веб-браузер; был в тестировании с 1 апреля 2021. 9 декабря 2022 поддержка была удалена[37], однако, пользователи продолжают настаивать на включении поддержки нового формата[38].
Edge — веб-браузер; экспериментальная поддержка осуществлялась в версиях 91-109, начиная с версии 110 была удалена.[39]
История
В 2017 году JTC1/SC29/WG1 (JPEG) объявила конкурс предложений по JPEG XL — стандарту кодирования изображений следующего поколения[40].
Формат файла (битовый поток) был заморожен 25 декабря 2020 года[41] и официально стандартизирован 13 октября 2021 года. Любой файл, соответствующий этому стандарту, гарантированно может быть декодирован во всех будущих версиях.
↑Krita Foundation, Halla Rempt.Krita 5.1.0 Released!(амер. англ.). Krita (18 августа 2022). Дата обращения: 14 июня 2023. Архивировано 20 января 2023 года.