Next: , Previous: , Up: Articles  


Сравнение JPEG XL

Сводная информация про JPEG XL кодек находится на официальном сайте. Но я чуть более многословно опишу их сравнительную таблицу. В ней сравниваются:

JPEG XL comparison
Максимальное поддерживаемое разрешение

JPEG 2000: 4G x 4G, PNG: 2G x 2G, JPEG: 65K x 65K, WebP: 16K x 16K, HEIC/AVIF: 8K x 4K, JPEG XL: 1G x 1G. HEIC и AVIF не подходят даже для сканов фотографий – ограничен круг применения. Только JPEG 2000, PNG и JPEG XL не имеют серьёзных практических ограничений.

Максимальная глубина на канал

WebP и JPEG: 8 бит – недостаточно для качественных фотографий и архивов. HEIC: 10 бит, AVIF: 12 бит – только для хоть какого-то HDR/WCG достаточно. PNG: 16 бит – пока достаточно на практике. JPEG 2000: 38 бит. JPEG XL: 32 бит. Только JPEG 2000 и JPEG XL не имеют ограничений практических.

Возможность lossy 4:4:4

Этот chroma subsampling необходим для уменьшения артефактов, которые могут возникать на резких перепадах цветов. WebP поддерживает только 4:2:0. HEIC тоже не поддерживает lossy 4:4:4. Остальные умеют.

Поддержка WCG/HDR

Большой динамический диапазон и цвета не поддерживает ни JPEG, ни WebP, как минимум из-за малой глубины каналов. Остальные умеют.

Максимальное количество каналов

JPEG не поддерживает альфа-канал (3 канала). PNG и WebP поддерживают альфа-канал (4 канала). HEIC и AVIF поддерживают ещё канал глубины (5 каналов). JPEG 2000 поддерживает 16K каналов. JPEG XL 4K+ каналов. Только JPEG 2000 и JPEG XL не имеют практических ограничений по количеству каналов.

Поддержка анимации

Для PNG есть расширение в виде APNG. Для JPEG и JPEG 2000 есть motion версии, являющиеся конкатенацией изображений простой. Все остальные поддерживают анимацию из коробки.

Прогрессивное декодирование

Крайне полезная вещь для отображения изображений во время загрузки. Только JPEG, JPEG 2000 и JPEG XL это поддерживают.

Поддержка overlay

Возможность кодировать разные части изображений с разными настройками. Поддерживается только в HEIC, AVIF и JPEG XL.

Устойчивость к потерям от перекодирования

Generation loss resilience. При многократном перекодировании lossy кодеком будет происходит всё больше и больше потерь. JPEG и JPEG XL теряют меньше всего при этом. Не столь важно и критично, но в Web-е, к сожалению, люди часто одну и ту же картинку перекодируют вновь и вновь.

Lossless пересжатие JPEG

Поддерживается только JPEG XL. Как правило экономя 20% места, байт в байт восстанавливая оригинальный JPEG.

Отчисления за использование

HEIC требует немалых выплат для использования. AVIF использует патентованный HEIF контейнер, что тоже делает его не сказать что свободным. Когда-то JPEG 2000 требовал отчисления из-за патентов, но они уже истекли.

Размеры стандарта/документации

Пишут, что количество страниц в стандарте чуть ли не на порядок меньше чем у AVIF например. JPEG XL существенно более простой кодек.

Видно, что JPEG XL подходит более чем для всех задач, не имея практических ограничений. JPEG 2000 тоже хорош. PNG подходит только для lossless задач. Все остальные имеют сильно ограниченные сферы применения из-за технических ограничений.

Теперь про уровень сжатия и производительность. По моему, если уровень сжатия лучше на 30% или более, то это достаточно существенная разница чтобы искать кодеку (JPEG или PNG) замену. Разница даже в 15% вряд ли будет стоить этого.

Lossy сжатие фотографий в низком качестве

Под низким качеством подразумевается желание сделать очень маленький файлик (например preview), пускай и ценой плохого качества. JPEG на маленьких размерах очень плохо справляется. WebP и JPEG 2000 ведут себя уже лучше. JPEG XL не плох, но позади HEIC и AVIF.

Lossy сжатие фотографий в хорошем качестве

JPEG, будучи разработанным 30 лет назад, конечно отстаёт от современных кодеков. HEIC имеет плохой уровень сжатия. JPEG 2000 и AVIF не плохи. JPEG XL сжимает лучше всех.

Lossless сжатие фотографий

PNG хуже всех. WebP, HEIC и AVIF получше, но не существенно. JPEG 2000 значительно лучше, но JPEG XL всё равно ещё лучше.

Lossy сжатие синтетических изображений

JPEG и JPEG 2000 очень плохи. HEIC чуть получше. WebP не плох. AVIF отличен. Но JPEG XL опять же лучше всех.

Lossless сжатие синтетических изображений

JPEG 2000, HEIC и AVIF так себе – PNG значительно лучше. JPEG XL очень хорош, но изредка может уступать PNG и WebP.

Скорость кодирования

JPEG очень быстрый. JPEG XL может быть временами сравним с ним. JPEG 2000, PNG, WebP уже будут помедленнее. HEIC ещё более медленный, а вот AVIF невероятно умопомрачительно ресурсоёмок.

Скорость декодирования

JPEG, PNG, особенно WebP – очень быстры. JPEG XL будет помедленнее (на одном потоке). JPEG 2000, HEIC и AVIF ещё медленнее.

Распараллеливание

Поддерживают JPEG 2000, HEIC, AVIF и JPEG XL.

Таким образом, JPEG XL в вопросах уровня сжатия проигрывает только AVIF для фотографий в плохом качестве. В вопросе производительности JPEG XL или быстрее всех или сравним со скоростями кодирования JPEG и декодирования WebP.

JPEG XL будет на 60% меньше JPEG при схожем качестве. На 35-50% меньше PNG. И это при возможности lossless транскодирования JPEG и колоссальной скорости кодирования/декодирования.


Next: Why I prefer Texinfo+Info, Previous: Libre/OpenPGP vs OpenSSH/age, Up: Articles