【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-{zh-cn:太;zh-tw:兆;}-像素）、4099个32位深通道（包含alpha通道）的静态或动态图像及其嵌入预览的有损压缩和无损压缩。它支持针对网络传输的渐进式解码和最小化信头开销特性，以及针对图像编辑和数码印刷的图层、CMYK和Spot color支持。它还针对无缝处理Rec. 2100等广色域的Perceptual quantizer、Hybrid log–gamma和转换曲线进行了特别设计。
== 特点 ==
主要特点有：
* 更多功能：与传统图像格式（例如JPEG、GIF和PNG）相比，有着更佳的效率与更丰富的功能；
* 更大尺度：长宽可超过十亿（）个像素；
* 更多通道：最多4099个通道，包括主通道（单通道的灰度、三通道的RGB或四通道的CMYK）、可选的多达4096个可用于透明度、深度、Thermography等的额外通道；
* 多帧支持：支持用于动画的非零时长帧和类似图像软件中图层的零时长帧，且帧的大小不受图像画布大小影响，并支持多种混合模式；
* 独立图块：允许图像分多图块保存，以支持分块解码大幅图像；
* 渐进式解码：专为支持不同显示分辨率的响应式加载；
* 可逆JPEG转码：可实现约20%的数据流压缩；
* 无损编码：包括无损alpha编码；
* 类型感知：可根据图像内容使用分别为摄影图像和合成图像优化的两种模式；
* 低码率优化：在低比特率下相较旧格式质量更可接受；
* 感知优化：参考编码器默认使用感知色彩空间、自适应量化和保守的默认设置；
* 色域支持：内置广色域、转移曲线和HDR支持；
* 动画支持：但编码真实视频时仍建议使用常规的视频编码；
* 高效编解码：无需专用硬件，JPEG XL的编解码速度即可与使用libjpeg-turbo的JPEG相当，比使用x265的HEIC速度快一个数量级，并可以并行。
* 开源免费：具有使用三条款版BSD许可证的开源参考实现的免版税格式。
== 技术细节 ==
JPEG XL 编解码器架构图
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 color space衍生的XYB色彩空间（但为支持重压缩传统JPEG仍支持YCbCr），基于PIK格式的有损模式。
* Modular（模块化）模式是响应式的，用于高效的无损内容压缩以及近无损压缩。它可被VarDCT在内部用于存储二维数据，即除了交流（高频）离散余弦变换系数之外的所有数据，包括直流图像（1:8抽样图像）、自适应量化权值、滤镜强度。所有附加通道（如透明度、深度、Thermography和spot color等）总是使用此模式存储。此模式基于FUIF，并结合了无损PIK、无损WebP和标准化过程中的其他合作成果。借助哈尔变换的“挤压”（squeeze），此模式也支持有损压缩，并实现渐进式特性：图像的质量会随着数据加载过程逐渐改善。
VarDCT模式的图像可借由模块化“挤压”的独立“直流帧”存储的直流系数实现渐进式加载，支持1:16、1:32等抽样比例。“挤压”变换也可以用于将alpha通道和VarDCT模式的色彩通道一同渐进式编码，使两种模式协同工作。
JPEG XL默认使用视觉无损下仍有较好压缩效果的设置。
这些模式可由单独的图像特征模型协助：
* Centripetal Catmull–Rom spline用于编码头发等（参考编码器暂未实现）；
* 重复的“补丁”，如文字、点和“精灵”；
* 噪声合成：由于噪声难以压缩，将其剥离然后由解码器重新生成可能更佳。这类似于AV1等现代视频编码的Film grain合成，尽管JPEG XL噪声合成的目的不是模仿模拟摄影胶片的颗粒，而是在像素层级建模数字相机在高感光度设置下的Photon noise。
JPEG XL编码可以无损地转码JPEG最常用的子类型的文件，实现方式是将JPEG的DCT系属直接拷贝到8×8的VarDCT块，并借助JPEG XL更好的熵压缩算法实现更小的文件大小。此过程是可逆的，可以从转换结果中逐位重建原始JPEG图像，尽管有一些限制条件。
预测是基于逐像素、无辅助信息的去相关器运作的，包括参数化的自校正加权预测器集合。Context model包括特化的静态模型和强大的元自适应模型，它们考虑局部错误，具有信号树结构和分上下文的预测器选择。熵编码基于LZ77，可使用Asymmetric numeral systems或前缀码（适用于低复杂度的编码器，或减少短数据流的开销）。date=April 2021
动画（多帧）图像不执行高级帧间预测，尽管有一些基本的帧间编码工具可用：
* 帧可以小于画布大小，只更新画布的一部分；
* 除了替换前序帧外，帧数种混合模式，如相加或相乘；
* 在后面的帧中使用“补丁”编码工具最多可以“记住”并引用四帧。
== 软件 ==
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解码器 date=20221012072315
** 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许可证
=== 官方支持 ===
* 网页图像转换器 Squoosh date=20230119174259
* 数字相机图像导入导出工具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：通过第三方Windows Imaging Component插件，即用于在照片查看器、文件资源管理器等中查看。
* macOS：通过独立应用程序和Quick Look插件。
* GTK和GNOME图像查看应用（Eye of GNOME、GNOME Files等）：通过GDK pixbuf插件。
=== 初步支持 ===
* Chromium：网页浏览器，自91版至110版提供测试选项。
* Firefox：网页浏览器，处于测试中，自Firefox 90开始可以通过image.jxl.enabled标志开启。
== 标准化状态 ==