JPEG XL

JPEG XL是一种免版税的位图文件格式，支持有损和无损压缩。它旨在超越现有的位图格式，并成为它们的通用替代。JPEG XL格式规范的主要作者有Jyrki Alakuijala、Jon Sneyers和Luca Versari。

## 名称

- JPEG指设计了JPEG格式的联合影像专家小组（Joint Photographic Experts Group）。
- X指2000年以来的多个JPEG标准的名称：JPEG XT、JPEG XR、JPEG XS。
- L代表“长期”，创建这种格式是为替换旧的JPEG文件格式，并使用足够长的时间。

## 历史

2017年，JTC1 / SC29 / WG1 (JPEG) 发起下一代图像编码标准（JPEG XL）提案征集。所有提案在2018年9月前提交，随后2019年7月形成委员会草案。草案是由谷歌提交的PIK和Cloudinary提交的基于FLIF的FUIF结合而来。

2020年12月25日，伴随着参考软件实现libjxl的0.2版本发布，JPEG XL的比特流格式被最终敲定，这意味着未来的版本将保证对此版本的解码兼容性。此后文件格式与核心编码系统分别于2021年10月13日和2022年3月30日正式标准化。

## 描述

JPEG XL的提案征集提及了下一代图像压缩标准对大幅提升压缩效率（60%）的需求。新标准应该有优于HEIC、AVIF、WebP和JPEG 2000这些静态图像编码的表现，同时提供对传统JPEG格式的无损再压缩选项。

JPEG XL最高能够提供对甚高分辨率图像（每边1太像素）、4099个32位深通道（包含alpha通道）的静态或动态图像及其嵌入预览的有损压缩和无损压缩。它支持针对网络传输的渐进式解码和最小化信头开销特性，以及针对图像编辑和数码印刷的图层、CMYK和专色支持。它还针对无缝处理Rec. 2100等广色域的感知量化器、混合对数伽马校正和转换曲线进行了特别设计。

## 特点

主要特点有：

- 更多功能：与传统图像格式（例如JPEG、GIF和PNG）相比，有着更佳的效率与更丰富的功能。
- 更大尺度：长宽可超过十亿（$2^{30} - 1$）个像素。
- 更多通道：最多4099个通道，包括主通道（单通道的灰度、三通道的RGB或四通道的CMYK）、可选的多达4096个可用于透明度、深度图、热成像等的额外通道。
- 多帧支持：支持用于动画的非零时长帧和类似图像软件中图层的零时长帧，且帧的大小不受图像画布大小影响，并支持多种混合模式。
- 独立图块：允许图像分多图块保存，以支持分块解码大幅图像。
- 渐进式解码：专为支持不同显示分辨率的响应式加载。
- 可逆JPEG转码：可实现约20%的数据流压缩。
- 无损编码：包括无损alpha编码。
- 类型感知：可根据图像内容使用分别为摄影图像和合成图像优化的两种模式。
- 低码率优化：在低比特率下相较旧格式质量更可接受。
- 感知优化：参考编码器默认使用感知色彩空间、自适应量化和保守的默认设置。
- 色域支持：内置广色域、转移曲线和HDR支持。
- 动画支持：但编码真实视频时仍建议使用常规的视频编码。
- 高效编解码：无需专用硬件，JPEG XL的编解码速度即可与使用libjpeg-turbo的JPEG相当，比使用x265的HEIC速度快一个数量级，并可以并行。
- 开源免费：具有使用三条款版BSD许可证的开源参考实现的免版税格式。

## 技术细节

<image>

JPEG XL基于Google的PIK格式和Cloudinary的FUIF格式（基于FLIF）。

JPEG XL主要有两种编码模式：

- VarDCT（variable-blocksize DCT，可变分块大小离散余弦变换）模式基于与JPEG相同的离散余弦变换算法，但分块不再限定为8×8，而是允许不同大小（2×2到256×256）、非正方形块（如16×8、8×32、32×64）乃至其他变换函数（4种“边角”变种AFV，以及非离散余弦变换的Hornuss变换）。此模式限于三通道色彩，通常使用LMS色彩空间衍生的XYB色彩空间（但为支持重压缩传统JPEG仍支持YCbCr），基于PIK格式的有损模式。
- Modular（模块化）模式是响应式的，用于高效的无损内容压缩以及近无损压缩。它可被VarDCT在内部用于存储二维数据，即除了交流（高频）离散余弦变换系数之外的所有数据，包括直流图像（1:8抽样图像）、自适应量化权值、滤镜强度。所有附加通道（如透明度 (图形学)、深度图、热成像和专色等）总是使用此模式存储。此模式基于FUIF，并结合了无损PIK、无损WebP和标准化过程中的其他合作成果。借助哈尔变换的“挤压”（squeeze），此模式也支持有损压缩，并实现渐进式特性：图像的质量会随着数据加载过程逐渐改善。

VarDCT模式的图像可借由模块化“挤压”的独立“直流帧”存储的直流系数实现渐进式加载，支持1:16、1:32等抽样比例。“挤压”变换也可以用于将alpha通道和VarDCT模式的色彩通道一同渐进式编码，使两种模式协同工作。

JPEG XL默认使用视觉无损下仍有较好压缩效果的设置。

这些模式可由单独的图像特征模型协助：

- 向心卡特姆–罗姆样条用于编码头发等（参考编码器暂未实现）。
- 重复的“补丁”，如文字、点和“精灵”。
- 噪声合成：由于噪声难以压缩，将其剥离然后由解码器重新生成可能更佳。这类似于AV1等现代视频编码的胶片颗粒合成，尽管JPEG XL噪声合成的目的不是模仿模拟摄影胶片的颗粒，而是在像素层级建模数字相机在高感光度设置下的光子噪声。

JPEG XL编码可以无损地转码JPEG最常用的子类型的文件，实现方式是将JPEG的DCT系属直接拷贝到8×8的VarDCT块，并借助JPEG XL更好的熵压缩算法实现更小的文件大小。此过程是可逆的，可以从转换结果中逐位重建原始JPEG图像，尽管有一些限制条件。

预测是基于逐像素、无辅助信息的去相关器运作的，包括参数化的自校正加权预测器集合。上下文模型包括特化的静态模型和强大的元自适应模型，它们考虑局部错误，具有信号树结构和分上下文的预测器选择。熵编码基于LZ77，可使用非对称数字系统或前缀码（适用于低复杂度的编码器，或减少短数据流的开销）。

动画（多帧）图像不执行高级帧间预测，尽管有一些基本的帧间编码工具可用：

- 帧可以小于画布大小，只更新画布的一部分。
- 除了替换前序帧外，还支持数种混合模式，如相加或相乘。
- 在后面的帧中使用“补丁”编码工具最多可以“记住”并引用四帧。

## 软件

JPEG XL受到了许多科技公司与组织的公开支持，如Facebook、Adobe、Intel与VESA、卫报、Flickr和SmugMug、Shopify、Krita基金会和Serif Europe。

### 编解码器实现

- JPEG XL参考软件（libjxl）
- 三条款版BSD许可证（曾为Apache许可证2.0）
- 包含组件
- 编解码库`libjxl`
- 编码器`cjxl`
- 解码器`djxl`
- 快速无损编码器`fjxl`
- 图像编码质量基准测试工具`benchmark_xl`
- GIMP和Gtk pixbuf插件`file-jxl`
- J40：独立、自包含的JPEG XL解码器
- MIT许可证，无署名
- C99单头文件库（无依赖）
- 名字来源于罗马数字“XL”（即40）
- libjxl-tiny：简化的JPEG XL编码器实现，针对无透明度的摄影图像
- 三条款版BSD许可证
- jxlatte：Java JPEG XL解码器
- MIT许可证
- pyjxl：Python JPEG XL解码器
- MIT许可证
- jpeg-xl-encode：PHP JPEG XL编码器
- MIT许可证
- jxl-oxide：使用Rust编写的小型JPEG XL解码器。
- 双重许可：MIT许可证和Apache许可证2.0
- jxl-rs：使用Rust编写的JPEG XL解码器。
- BSD-3-Clause许可证

### 官方支持

- 网页图像转换器 Squoosh
- 数字相机图像导入导出工具Adobe Camera Raw
- 位图编辑器Affinity Photo
- 位图编辑器Chasys Draw IES
- 元数据编辑器ExifTool
- 多媒体框架FFmpeg
- 位图编辑器GIMP
- 图像查看器、照片管理应用gThumb
- 位图处理工具包ImageMagick
- 图像查看编辑器IrfanView
- Linux发行版KaOS
- 位图编辑器Krita
- Qt和KDE应用
- 位图查看编辑器XnView MP
- 网络浏览器Pale Moon
- Microsoft Windows：通过 微软商店安装扩展。

### 非官方支持

- Microsoft Windows：通过第三方Windows图像处理组件插件，即用于在照片查看器、文件资源管理器等中查看。
- macOS：通过独立应用程序和Quick Look插件。
- GTK和GNOME图像查看应用（Eye of GNOME、GNOME Files等）：通过GDK pixbuf插件。

### 初步支持

- Chromium：网页浏览器，处于测试中。在145.0.7632.0版本中恢复支持。可以通过 `enable-jxl-image-format` 标志开启。
- Firefox：网页浏览器，处于测试中。自版本149开始在稳定版提供支持。可以通过`image.jxl.enabled`标志开启（Firefox 90开始在Nightly开发版本中生效）。

## 标准化状态

通用名称｜部分｜首次公开发布日期（第一版）｜ISO/IEC编号｜正式名称

JPEG XL｜第1部分｜2022年3月30日｜ ISO/IEC 18181-1｜JPEG XL图像编码系统－第1部分：核心编码系统

第2部分｜2021年10月13日｜ ISO/IEC 18181-2｜JPEG XL图像编码系统－第2部分：文件格式

第3部分｜2022年10月3日｜ ISO/IEC 18181-3｜JPEG XL图像编码系统－第3部分：一致性测试

第4部分｜2022年8月5日｜ ISO/IEC 18181-4｜JPEG XL图像编码系统－第4部分：参考软件

## 基本资料

- 扩展名：.jxl
- mime：image/jxl
- 统一类型标识：public.jpeg-xl
- magic：`FF 0A`或`00 00 00 0C 4A 58 4C 20 0D 0A 87 0A`
- 开发者：联合图像专家小组、谷歌、Cloudinary
- 类型：有损或无损栅格图像格式
- 扩展自：PIK (图像格式)、FLIF–FUIF、ISO-BMFF
- 标准：ISO/IEC 18181
- 启用：是（免版税）
- 网站：https://jpeg.org/jpegxl（官方网站）、https://jpegxl.info（社区网站）
- 日语原文：JPEG XL参考软件（libjxl）
- 发行日期：2019年12月27日
- 软件版本周期：0.11.2
- 软件版本周期：2026年2月10日
- 编程语言：C++
- 操作系统：Unix-like、Windows、Haiku
- 许可协议：三条款版BSD许可证（曾为Apache许可证2.0）