adblock check

JPG и PNG — прошлый век. Что такое JPEG XL и чем он отличается от других кодеков

Рассматриваю новый кодек для изображений, который вполне может заменить большинство существующих форматов

Программисты со всего мира работают над решением проблемы эффективного хранения «тяжелых» файлов на различных электронных устройствах. Наиболее интересными такими файлами являются фотографии и видео — их можно «упрощать» так, чтобы уменьшался вес конечного изображения, теряя немного информации, но при этом человеческий глаз не замечал этих изменений на экране своего устройства. Для этого были придуманы системы кодирования изображений. Долгое время и по сей день лидерство в области таких систем кодирования удерживает JPEG, разработанный в 1992 году. Время идет и только недавно появился достойный конкурент — JPEG XL, созданный той же организацией, что и его предшественник. Именно об этом формате, его нововведениях и особенностях мы поговорим далее в статье.

Что может дать пользователям JPEG XL и чем он отличается от своих конкурентов

Новая система кодирования изображений JPEG XL разрабатывалась для удовлетворения широкого круга задач обычных пользователей и профессионалов, работающих с изображениями. Так, новый формат обладает довольно внушительными показателями максимальных значений размера, глубины цвета и количества каналов в сравнении со своими конкурентами.

Сравнительная таблица максимальных показателей разных кодеков (больше — лучше):



Формат
Максимальные размеры изображения Максимальная глубина цвета, максимальное количество каналов
JPEG XL 1 152 921 502 459 Мп,
1 073 741 823 × 1 073 741 824
24 бита (целочисленный) или 32 бита (float), до 4100 каналов
JPEG 4294 Мп, 65,535 × 65,535
8 бит, 3 канала (4 канала для CMYK)
WebP 268 Мп, 16,386 × 16,386 8 бит, 4 канала для RGBA
PNG 4 эксапикселя (10¹⁸ пикселей), но лишь в теории, так как нет возможности эффективно декодировать куски изображения 16 бит, 4 канала для RGBA
HEIC 35 Мп, 8 192 × 4 320 16 бит, 3 канала
AVIF 9 Мп, 3 840 × 2 160 12 бит, 3 канала

Также немаловажной особенностью нового формата является его довольно низкая требуемая мощность для кодирования и декодирования изображений, в то время как для работы со специальными видеокодеками могут потребоваться даже аппаратные комплексы, которые направлены исключительно на их эффективное кодирование и декодирование.

Сравнительная таблица скорости кодирования и декодирования различных кодеков (больше — лучше):


Кодек Скорость кодирования (Мп/с) Скорость декодирования (Мп/с)
JPEG XL 50 132
JPEG (используя libjpeg-turbo) 49 108
HEVC (x265) 3.7 14
HEVC (HM) 0.014 5.3

О совместимости с разными системами и форматами

JPG и PNG — прошлый век. Что такое JPEG XL и чем он отличается от других кодеков
Картинка, наглядно показывающая преобразование изображения для разных систем

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

Благодаря возможности декодировать изображение «на лету», сайты могут этим заниматься постепенно (прогрессивно). Это значит, что если страница только загрузилась или интернет клиента довольно медленный, то в таком случае изображение на сайте загрузится не в полном разрешении и будет «пиксельным», а по мере загрузки остальных данных, будет становиться все более и более «четким».

Особенности нового формата

Я взял все нюансы и особенности JPEG XL и составил краткий список того, что можно ожидать от введения нового формата в нашу повседневную жизнь.

  • Кодирование с потерями: JPEG XL способен сжать фотографию примерно на 60% сильнее, чем JPEG при том же визуальном качестве;
  • Кодирование без потерь: примерно на 35% легче, чем PNG и почти на 50% для HDR;
  • Возможность перекодирования изображений формата JPEG в новый JPEG XL с уменьшением его размера в 20%;
  • Универсальность: JPEG XL поддерживает альфа-канал, HDR, анимации, кодирование без потерь (lossless). За счет этого он вполне может заменить JPEG, PNG, GIF, WebP и TIFF;
  • JPEG XL куда эффективней, чем другие кодеки — вы получаете лучшее качество за меньший размер;
  • Быстрее кодирование и декодирование в сравнении с другими форматами;
  • Бесплатное распространение и открытый исходный код.

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

Может сложиться ощущение, что JPEG XL может заменить все форматы, однако, кодеки AVIF, HEIC и некоторые другие остаются впереди за счет лучшей адаптированности под видео, более низкого допустимого битрейта, а также поддержкой крупными корпорациями, такими как Apple (HEIC) и Google (AV1).

Немного технических деталей про режимы работы нового кодека

JPG и PNG — прошлый век. Что такое JPEG XL и чем он отличается от других кодеков
Довольно занимательная картинка, пошагово описывающая работу кодека JPEG XL

В новый кодек JPEG XL разработчики вложили несколько интересных и нужных режимов кодирования. Как уже говорилось, он обладает режимом перекодирования «устаревшего» JPEG, уменьшая его размер. Еще один режим — это кодирование с потерями, который называется VarDCT (дискретное косинусное преобразование с переменным размером блока). Также продуман режим кодирования без потерь — Modular, использующий модифицированное преобразование Хаара, использующийся для сжатия изображений с возможностью изменять степень этого сжатия. Также такое преобразование используется и в режиме VarDCT, но лишь для кодирования DC-изображений (т.е. размера 1:8).

Изображения формата JPEG XL также включают в себя так называемые «прогнозирования» — небольшие программы, которые сильно повышают эффективность сжатия за счет того, что цвет каждого пикселя выражается в цветах его соседей. Это возможно благодаря Правилу 110, которое, как оказалось, возможно реализовать в блоках прогнозирования JPEG XL. Казалось бы, раз новый кодек можно программировать, то для хакеров это может стать новым инструментом взлома, однако возможность таких «троянов» была учтена разработчиками и декодирование каждого пикселя было ограничено, поэтому декодер не сможет уйти в бесконечный цикл, как это может произойти в некоторых других форматах, поддерживающих полноценные языки программирования, таких как SVG и PostScript.

seins
Пользователь
7 комментариев по лайкам по дате
Оставьте комментарий...
Оставьте комментарий...
И, как всегда, всё это останется где-то там, а мы как пользовались JPEGPNGGIF, так и будем пользоваться
Автор
Рано или поздно, дойдет до большинства… не до всех, но до большинства — точно)
Какой то бред написан в таблице сравнения.
Не знаю что там с heic, но вот avif поддерживает прозрачность и разрешение больше 9мп — это 100%, я сам свои 16мп фотки кодировал в avif в Фотошопе, как минимум avif поддерживает разрешение не меньше чем heic.
Так что минусы avif — отсутствие прогрессивной загрузки и скорость декодирования.
Прогрессивную загрузку я ненавижу, обычная построчная куда лучше.
А чтобы быстро декодировался нужно использовать аппаратное декодирование, не думаю что скорости 8к60 фпс — 1990 мп/с (видеокарты nvidia, AMD и новая графика intel) и 4к60 фпс — 497 мп/с (телефоны с mediatek dimensity 1000, 1100, 1200) кому-то не хватит.
Цитата: <<Вы можете попробовать самостоятельно сравнить разные форматы, посмотрев закодированные в них изображения и полученный вес на этом сайте.>>
Посмотрел все картинки в размере tiny, моё ИМХО.
В большинстве случаев выигрывает avif или heic. Огромный плюс avif — меньше всего DCT артефактов и лучшая обработка контуров.
Для чего нужен webp2 не понятно, он всегда хуже чем avif/heic, возможно он просто ещё очень сырой, но я так не думаю.
Jpeg XL — тот же Jpeg только в профиль, ну да нету блочности, да по лучше качество, но всё равно практически чистые DCT артефакты и никакая обработка контуров, просто в отличие от Jpeg больше размер блоков, а так всё тот же тупой Jpeg. Мне он совсем не нравится, могу сказать что он лучше webp, часто лучше webp2, а avif и heic просто на другом уровне. А ну и за счёт DCT он вероятно хорошо будет кодировать шум, тогда как heic и особенно avif не любят шум.
Возможно по разным метрикам Jpeg XL на уровне avif/heic.
Возможно по разности между оригиналом и сжатым он даже лучше чем avif/heic.
Но это всё вообще не показатель, я не смотрю на метрики, когда смотрю картинки в интернете, так же я не вижу какой была оригинальная картинка и соответственно на сколько сжатая отличается от оригинала я тоже не знаю, соответственно нужно визуальное качество, и тут явные лидеры avif и heic.
А кстати в heic вроде как должны завезти новый h266, тогда он должен стать лучше по качеству чем avif.
Вот пруф, что avif может быть с разрешением до 65536x65536 при максимальном профиле.
aomediacodec.github.io/av1-avif/#profiles
Так же используя обычные профили всё равно можно сделать файл с разрешением больше чем максимальное разрешение профиля, это делается с использованием сетки.
Кароче говоря чуда не произошло, лучше качество = больше сложность алгоритма = дольше кодирование/декодирование.
В теории красиво, а на практике как будет?
Автор
Насколько показывают тесты — так и будет :)