JPEG XL

JPEG XL
Изображение логотипа
Расширение .jxl
MIME-тип image/jxl
Сигнатура FF 0A or 00 00 00 0C 4A 58 4C 20 0D 0A 87 0A
Разработчик
Опубликован 24 декабря 2020[2], 13 октября 2021[3] и 30 марта 2022[4]
Тип формата Графический формат
Расширен из
Стандарт(ы) ISO/IEC 18181
Открытый формат? Да (royalty-free)
Сайт
Логотип Викисклада Медиафайлы на Викискладе

JPEG XL — не требующий отчислений формат файлов растровой графики, который поддерживает сжатие как с потерями, так и без потерь. Он призван превзойти существующие растровые форматы и, таким образом, стать их универсальной заменой[5].

Особенности

[править | править код]
  • Улучшенная функциональность и эффективность по сравнению с традиционными графическими форматами (например, JPEG, GIF и PNG);
  • Размеры изображения могут составлять более миллиарда (230−1) пикселей по каждой стороне[7];
  • До 4100 каналов (полутоновых или RGB), дополнительный альфа-канал и до 4096 «дополнительных» каналов[7];
  • Прогрессивное декодирование (по разрешению и точности);
  • Транскодирование файлов JPEG без дальнейших потерь данных с уменьшением размера примерно на 20 % и возможностью восстанавливать исходный JPG;
    • Файлы JPEG с цветовым пространством CMYK не поддерживаются для перекодирования, но они очень редки[8];
    • Транскодирование в прогрессивный формат JPEG XL поддерживается спецификациями, но ещё не реализовано в эталонном ПО[9];
  • Кодирование без потерь любого канала, включая альфа-канал;
  • Поддержка как фотографических, так и синтетических изображений;
  • Поддержка большого диапазона битрейтов с плавным ухудшением качества: потеря качества не такая резкая, как в старых форматах;
  • Перцепционно оптимизированный эталонный кодер, использующий перцепционное цветовое пространство, адаптивное квантование и консервативные настройки по умолчанию;
  • Поддержка широкой цветовой гаммы и HDR: в JPEG XL встроена поддержка различных цветовых пространств, кривых передачи и высокой яркости экрана;
  • Поддержка анимированного контента;
  • Эффективное кодирование и декодирование без специального оборудования;
    • В частности, JPEG XL примерно так же быстро кодируется и декодируется, как старый JPEG с использованием libjpeg-turbo, и на порядок быстрее кодируется и декодируется по сравнению с HEIC и x265[7]. Кроме того, он распараллеливаемый.
  • Royalty-free формат с эталонной реализацией с открытым исходным кодом[10].

Технические детали

[править | править код]
Схема архитектуры кодека JPEG XL

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].

Программное обеспечение

[править | править код]

Реализация кодека

[править | править код]
  • JPEG XL Reference Software (libjxl)
    • лицензия: New BSD License (раннее Apache License 2.0)
    • содержит (среди прочего):
      • кодировщик cjxl
      • декодировщик djxl
      • быстрый кодировщик fjxl только с режимом без потерь
      • инструмент для сравнительного анализа скорости и качества кодеков изображений benchmark_xl
      • GIMP и Gtk pixbuf плагин file-jxl
  • J40: Независимый, автономный декодер JPEG XL
    • лицензия: MIT License без указания авторства
    • Библиотека с одним заголовком C99 (без зависимостей)
    • «XL» римскими цифрами обозначает 40, отсюда и название
  • libjxl-tiny: более простая реализация кодера JPEG XL, предназначенная для фотоизображений без альфа-канала
    • лицензия: New BSD License
  • jxlatte: декодер JPEG XL на Java
    • лицензия: MIT License
  • jxl_decode: декодер JPEG XL на языке Python
    • лицензия: MIT License
  • jpeg-xl-encode: PHP-оболочка JPEG XL для кодировщика
    • лицензия: MIT License
  • hydrium: быстрый потоковый кодер JPEG XL со сверхнизким потреблением памяти, написанный на портативном C
    • лицензия: BSD License
  • jxl-oxide: небольшой декодер JPEG XL, полностью написанный на Rust
    • двойная лицензия: MIT License и Apache License 2.0

Официальная поддержка

[править | править код]
  • ImageMagick[18] — набор инструментов для обработки растровой графики
  • XnView MP[19] — просмотрщик и редактор растровой графики
  • Affinity Photo[20] — редактор растровой графики
  • GIMP[21] — редактор растровой графики; доступен плагин для GIMP 2.10
  • Krita[22] — редактор растровой графики
  • gThumb[23] — бесплатный просмотрщик изображений в Linux
  • IrfanView[24] — бесплатный просмотрщик и редактор изображений для Windows; через официальный плагин
  • ExifTool[25] — редактор метаданных
  • Adobe Lightroom Classic — редактор растровой графики и «проявки» RAW-снимков[26]
  • ImageGlass — просмотрщик и редактор растровой графики
  • Apple Inc.
    • iOS/iPadOS[27] — мобильная ОС версии 17 и новее — общесистемное чтение, включая Files и Photos
    • macOS[27] — ОС, начиная с macOS Sonoma версии 14 и новее — чтение в Finder и Preview
    • visionOS (предполагается)
    • watchOS версии 10 и новее
    • Safari[28] — веб-браузер версии 17 и новее через движок WebKit
  • FFmpeg

Неофициальная поддержка

[править | править код]

Предварительная поддержка

[править | править код]
  • 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 года. Любой файл, соответствующий этому стандарту, гарантированно может быть декодирован во всех будущих версиях.

Статус стандартизации

[править | править код]
Общепринятое название Часть Дата первого публичного выпуска (Первое издание) ISO/IEC Number Formal Title
JPEG XL Часть 1 30 марта 2022 ISO/IEC FDIS 18181-1 Система кодирования изображений JPEG XL. Часть 1. Базовая система кодирования
Часть 2 13 октября 2021 ISO/IEC 18181-2 Система кодирования изображений JPEG XL. Часть 2. Формат файла
Часть 3 3 октября 2022 ISO/IEC DIS 18181-3 Система кодирования изображений JPEG XL. Часть 3. Тестирование на соответствие
Часть 4 5 августа 2022 ISO/IEC DIS 18181-4 Система кодирования изображений JPEG XL. Часть 4. Эталонное ПО

Примечания

[править | править код]

Комментарии

[править | править код]
  1. Noise synthesis is an exception, as it's also featured in AVIF created before JPEG XL.[12]
  1. 1 2 fuif/README.md. GitHub. Дата обращения: 4 апреля 2019. Архивировано 24 апреля 2021 года.
  2. https://gitlab.com/wg1/jpeg-xl/-/tags/v0.2
  3. https://www.iso.org/standard/80617.html
  4. https://www.iso.org/standard/77977.html
  5. Can JPEG XL Become the Next Free and Open Image Format? (англ.). tech.slashdot.org. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  6. Support for reading/writing JPEG XL images (#4681) · Issues · GNOME / GIMP (англ.). GitLab. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  7. 1 2 3 4 How JPEG XL Compares to Other Image Codecs (англ.). Cloudinary. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  8. Jon Sneyers. JPEG XL as PSD transfer/storage alternative (англ.). Reddit (14 декабря 2020). Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  9. Jon Sneyers. Progressive Transcoding · Issue #92 (англ.). GitHub (3 июня 2021). Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  10. JPEG / JPEG XL Reference Software (англ.). GitLab. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  11. FLIF - Free Lossless Image Format (англ.). Дата обращения: 27 января 2022. Архивировано 21 декабря 2021 года.
  12. Peter de Rivaz,Jack Haughton. AV1 Bitstream & Decoding Process Specification 350–360. Alliance for Open Media (2018). Дата обращения: 15 января 2022. Архивировано 2 мая 2019 года.
  13. Jyrki Alakuijala, Ruud van Asseldonk, Sami Boukortt, Martin Bruse, Iulia-Maria Comía. JPEG XL next-generation image compression architecture and coding tools // Applications of Digital Image Processing XLII. — 2019-09-01. — Т. 11137. — Vol. 11137. — С. 111370K. — P. 20. — ISBN 9781510629677. — doi:10.1117/12.2529237. — Bibcode2019SPIE11137E..0KA.
  14. JPEG XL vs. AVIF (12 октября 2020). Дата обращения: 27 января 2022. Архивировано 15 января 2022 года.
  15. JPEG XL reference implementation // GitHub. — 2021-12-21. Архивировано 30 декабря 2021 года.
  16. JPEG XL reference implementation // GitHub. — 2021-12-03. Архивировано 30 декабря 2021 года.
  17. JPEG XL reference implementation // GitHub. — 2021-12-03. Архивировано 30 декабря 2021 года.
  18. ImageMagick Studio LLC. ImageMagick (англ.). ImageMagick. Дата обращения: 27 января 2022. Архивировано 2 января 2022 года.
  19. JPEG XL - MantisBT. Дата обращения: 27 января 2022. Архивировано 7 ноября 2021 года.
  20. What’s New in Affinity? affinity.serif.com. Дата обращения: 14 июня 2023. Архивировано 14 декабря 2022 года.
  21. Wilber. GIMP - GIMP 2.10.32 Released (англ.). www.gimp.org (14 июня 2022). Дата обращения: 26 февраля 2023. Архивировано 6 января 2023 года.
  22. Krita Foundation, Halla Rempt. Krita 5.1.0 Released! (амер. англ.). Krita (18 августа 2022). Дата обращения: 14 июня 2023. Архивировано 20 января 2023 года.
  23. gThumb Image Viewer 3.11.3 Adds JPEG XL (.jxl) Support [Ubuntu PPA] | UbuntuHandbook (англ.). ubuntuhandbook.org. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  24. IrfanView PlugIns. Дата обращения: 27 января 2022. Архивировано 28 декабря 2021 года.
  25. ExifTool by Phil Harvey. exiftool.org. Дата обращения: 27 января 2022. Архивировано 26 января 2022 года.
  26. Вывод HDR (рус.). Adobe. Дата обращения: 17 ноября 2023. Архивировано 17 ноября 2023 года.
  27. 1 2 Explore media formats for the web - WWDC23 - Videos (англ.). Apple Developer. Дата обращения: 14 июня 2023. Архивировано 8 июня 2023 года.
  28. Safari 17 Beta Release Notes (амер. англ.). Apple Developer Documentation. Дата обращения: 14 июня 2023.
  29. qt-jpegxl-image-plugin // GitHub. — 2022-01-07. Архивировано 3 марта 2021 года.
  30. JPEG XL WIC // GitHub. — 2022-01-06. Архивировано 30 декабря 2021 года.
  31. JXLook // GitHub. — 2022-01-26. Архивировано 30 декабря 2021 года.
  32. JPEG XL FileType (01-28-2023) (амер. англ.). paint.net Forum (29 августа 2022). Дата обращения: 14 июня 2023. Архивировано 11 июня 2023 года.
  33. (JPEG-XL) Implement support for JPEG XL (image/jxl) (англ.). Дата обращения: 27 января 2022. Архивировано 4 января 2022 года.
  34. Experimental features in Firefox - Mozilla | MDN (амер. англ.). developer.mozilla.org (7 ноября 2023). Дата обращения: 17 ноября 2023. Архивировано 17 ноября 2023 года.
  35. JPEG XL viewer – Get this Extension for 🦊 Firefox (en-US) (амер. англ.). addons.mozilla.org. Дата обращения: 17 ноября 2023. Архивировано 17 ноября 2023 года.
  36. Chromium - An open-source project to help move the web forward. - Monorail (англ.). Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  37. Liam Proven. Google drops forthcoming version of JPEG from Chromium (англ.). www.theregister.com. Дата обращения: 14 июня 2023. Архивировано 23 июля 2023 года.
  38. 1451807 - chromium - An open-source project to help move the web forward. - Monorail. bugs.chromium.org. Дата обращения: 17 ноября 2023. Архивировано 17 ноября 2023 года.
  39. 262588213843476 How to permanently enable JPEG XL in Microsoft Edge 91-109 (англ.). Gist. Дата обращения: 17 ноября 2023. Архивировано 17 ноября 2023 года.
  40. JPEG - Next-Generation Image Compression (JPEG XL) Final Call for Proposals. jpeg.org. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  41. v0.2 · Tags · JPEG / JPEG XL Reference Software (англ.). GitLab. Дата обращения: 27 января 2022. Архивировано 20 октября 2021 года.