Next: Why I prefer Texinfo+Info, Previous: Libre/OpenPGP vs OpenSSH/age, Up: Articles
Сводная информация про JPEG XL кодек находится на официальном сайте. Но я чуть более многословно опишу их сравнительную таблицу. В ней сравниваются:
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 не имеют ограничений практических.
Этот chroma subsampling необходим для уменьшения артефактов, которые могут возникать на резких перепадах цветов. WebP поддерживает только 4:2:0. HEIC тоже не поддерживает lossy 4:4:4. Остальные умеют.
Большой динамический диапазон и цвета не поддерживает ни 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 это поддерживают.
Возможность кодировать разные части изображений с разными настройками. Поддерживается только в HEIC, AVIF и JPEG XL.
Generation loss resilience. При многократном перекодировании lossy кодеком будет происходит всё больше и больше потерь. JPEG и JPEG XL теряют меньше всего при этом. Не столь важно и критично, но в Web-е, к сожалению, люди часто одну и ту же картинку перекодируют вновь и вновь.
Поддерживается только JPEG XL. Как правило экономя 20% места, байт в байт восстанавливая оригинальный JPEG.
HEIC требует немалых выплат для использования. AVIF использует патентованный HEIF контейнер, что тоже делает его не сказать что свободным. Когда-то JPEG 2000 требовал отчисления из-за патентов, но они уже истекли.
Пишут, что количество страниц в стандарте чуть ли не на порядок меньше чем у AVIF например. JPEG XL существенно более простой кодек.
Видно, что JPEG XL подходит более чем для всех задач, не имея практических ограничений. JPEG 2000 тоже хорош. PNG подходит только для lossless задач. Все остальные имеют сильно ограниченные сферы применения из-за технических ограничений.
Теперь про уровень сжатия и производительность. По моему, если уровень сжатия лучше на 30% или более, то это достаточно существенная разница чтобы искать кодеку (JPEG или PNG) замену. Разница даже в 15% вряд ли будет стоить этого.
Под низким качеством подразумевается желание сделать очень маленький файлик (например preview), пускай и ценой плохого качества. JPEG на маленьких размерах очень плохо справляется. WebP и JPEG 2000 ведут себя уже лучше. JPEG XL не плох, но позади HEIC и AVIF.
JPEG, будучи разработанным 30 лет назад, конечно отстаёт от современных кодеков. HEIC имеет плохой уровень сжатия. JPEG 2000 и AVIF не плохи. JPEG XL сжимает лучше всех.
PNG хуже всех. WebP, HEIC и AVIF получше, но не существенно. JPEG 2000 значительно лучше, но JPEG XL всё равно ещё лучше.
JPEG и JPEG 2000 очень плохи. HEIC чуть получше. WebP не плох. AVIF отличен. Но JPEG XL опять же лучше всех.
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