Программисты со всего мира работают над решением проблемы эффективного хранения «тяжелых» файлов на различных электронных устройствах. Наиболее интересными такими файлами являются фотографии и видео — их можно «упрощать» так, чтобы уменьшался вес конечного изображения, теряя немного информации, но при этом человеческий глаз не замечал этих изменений на экране своего устройства. Для этого были придуманы системы кодирования изображений. Долгое время и по сей день лидерство в области таких систем кодирования удерживает JPEG, разработанный в 1992 году. Время идет и только недавно появился достойный конкурент — JPEG XL, созданный той же организацией, что и его предшественник. Именно об этом формате, его нововведениях и особенностях мы поговорим далее в статье.
Что может дать пользователям JPEG XL и чем он отличается от своих конкурентов
Новая система кодирования изображений 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).
Немного технических деталей про режимы работы нового кодека
В новый кодек JPEG XL разработчики вложили несколько интересных и нужных режимов кодирования. Как уже говорилось, он обладает режимом перекодирования «устаревшего» JPEG, уменьшая его размер. Еще один режим — это кодирование с потерями, который называется VarDCT (дискретное косинусное преобразование с переменным размером блока). Также продуман режим кодирования без потерь — Modular, использующий модифицированное преобразование Хаара, использующийся для сжатия изображений с возможностью изменять степень этого сжатия. Также такое преобразование используется и в режиме VarDCT, но лишь для кодирования DC-изображений (т.е. размера 1:8).
Изображения формата JPEG XL также включают в себя так называемые «прогнозирования» — небольшие программы, которые сильно повышают эффективность сжатия за счет того, что цвет каждого пикселя выражается в цветах его соседей. Это возможно благодаря Правилу 110, которое, как оказалось, возможно реализовать в блоках прогнозирования JPEG XL. Казалось бы, раз новый кодек можно программировать, то для хакеров это может стать новым инструментом взлома, однако возможность таких «троянов» была учтена разработчиками и декодирование каждого пикселя было ограничено, поэтому декодер не сможет уйти в бесконечный цикл, как это может произойти в некоторых других форматах, поддерживающих полноценные языки программирования, таких как SVG и PostScript.