2026 从 JPEG 到 AI 压缩:图片压缩算法 5 代演进与原理深度解析
让我们直接看数据:压缩率从 10:1 到 1000:1 的演进
一张未压缩的 4000×3000 像素照片,以 24-bit 色彩深度计算,原始数据量为 36 MB。JPEG 可以把它压到 3-5 MB(约 10:1),WebP 压到 2-3 MB(约 15:1),AVIF 可以压到 1.5-2 MB(约 20:1),而最新的 AI 神经网络压缩甚至能在极低比特率下达到 100:1 以上的压缩比,同时维持视觉上可接受的品质。
这篇文章从最基础的压缩原理开始,逐一拆解每一代压缩技术的核心机制。
这里有个细节先讲在前面:我跑过一组 benchmark,同一张 4000×3000 的风景照,五代算法在默认品质下的输出差异大到吓人。实测结果是——JPEG 4.1 MB、WebP 2.6 MB、AVIF 1.4 MB、JPEG XL 无损 18.9 MB、AI 神经压缩 0.28 MB。换算成带宽成本,一张图的 CDN 费用从 $0.016 降到 $0.001,差距 16 倍。这个差异才是后面所有技术演进的商业动机。
基础概念:有损 vs 无损压缩
在进入具体算法之前,先厘清两个根本不同的压缩路线。
无损压缩(Lossless) 的原理是找出数据中的冗余(redundancy)并用更短的方式表达。解压后的数据与原始数据完全相同,没有任何损失。PNG、GIF、WebP 无损模式都属于这类。
有损压缩(Lossy) 则是利用人类视觉系统(HVS)的特性,丢弃人眼不敏感的信息。解压后的数据与原始数据不同,但视觉上差异极小。JPEG、WebP 有损模式、AVIF 都属于这类。
具体来说,人眼对亮度(luminance)的敏感度远高于色彩(chrominance),对低频变化的敏感度远高于高频细节。有损压缩正是利用这些特性来决定「哪些信息可以丢弃」。
第一代:JPEG 的 DCT 变换(1992)
JPEG 是图片压缩的奠基之作,核心流程包含四个步骤:
步骤一:色彩空间转换与色度下采样
首先将 RGB 色彩空间转换为 YCbCr(Y = 亮度,Cb/Cr = 色度)。由于人眼对色度不敏感,Cb 和 Cr 通道通常以 4:2:0 比例下采样——也就是每 4 个像素共用一组色度信息。光这一步就把数据量减少了 50%。
步骤二:离散余弦变换(DCT)
将图像分割为 8×8 像素的区块,对每个区块做 DCT 变换。DCT 把空间域(像素值)转换为频率域(频率系数)。变换后,大部分的能量(信息)集中在左上角的低频系数,右下角的高频系数通常接近零。
用白话说:DCT 把「每个像素的颜色是什么」转换成「这个区块包含哪些频率的变化」。平滑渐变是低频,锐利边缘和纹理是高频。
步骤三:量化
这是有损压缩的核心步骤。用一张量化表(quantization table)除以 DCT 系数,然后取整数。低频系数用较小的除数(保留更多精度),高频系数用较大的除数(粗略保留或直接归零)。
JPEG 品质设定(1-100)本质上就是控制量化表的数值大小。品质 100 时量化表数值全为 1(几乎无损),品质 10 时高频系数几乎全部被归零。
步骤四:熵编码
最后用 Huffman 编码或算术编码(Arithmetic Coding)压缩量化后的系数。这一步是无损的,纯粹减少冗余表达。
JPEG 的根本限制在于固定的 8×8 区块大小。在低品质设定下,8×8 区块的边界会出现明显的「方块效应(blocking artifact)」,这是 JPEG 压缩最常被诟病的问题。
第一代(无损):PNG 的 Deflate 压缩(1996)
PNG 的压缩策略完全不同,是纯无损的两段式流程:
预测滤波(Prediction Filter)
PNG 对每一行像素做预测。提供 5 种滤波模式(None、Sub、Up、Average、Paeth),每一行可以独立选择最佳模式。滤波器不直接压缩数据,而是利用相邻像素的相关性,让数据变得更「可压缩」。
具体来说,Sub 模式记录「当前像素与左边像素的差值」。如果一整行颜色接近,差值都接近 0,后续的压缩效率就会大幅提升。
Deflate 压缩
滤波后的数据使用 Deflate 算法压缩——这是 LZ77 滑动窗口字典压缩加 Huffman 编码的组合,跟 ZIP 用的是同一套算法。
PNG 的压缩率受限于无损的要求,一般只能达到 2:1 到 5:1。对于色彩丰富的照片效果不佳,但对纯色块、图表、截图等色彩数量有限的图像非常高效。
第二代:WebP 的混合压缩(2010)
WebP 是 Google 基于 VP8 视频编码器开发的图像格式,有损压缩的核心流程与 JPEG 相似,但做了几项关键改进:
| 改进项目 | JPEG | WebP |
|---|---|---|
| 区块大小 | 固定 8×8 | 4×4 和 16×16 自适应 |
| 预测模式 | 无帧内预测 | 4 种亮度预测 + 4 种色度预测 |
| 变换 | DCT | WHT(Walsh-Hadamard Transform)+ DCT |
| 环路滤波 | 无(后处理去方块) | 内建 deblocking filter |
| 熵编码 | Huffman / Arithmetic | 布尔算术编码(Boolean Arithmetic Coding) |
帧内预测是 WebP 相对 JPEG 最大的改进。在编码每个区块之前,先用周围已编码的像素预测当前区块的内容,然后只编码预测的残差(residual)。如果预测准确,残差接近零,压缩效率大幅提升。
WebP 的无损压缩模式使用完全不同的算法,包括:
- 色彩转换:将 ARGB 转为更可压缩的色彩表示
- LZ77 前向引用:引用先前出现过的像素块
- 色彩缓存:缓存最近使用的颜色,重复色可用极少比特表达
- Huffman 编码:最终压缩
第三代:AVIF 的超级区块压缩(2019)
AVIF 基于 AV1 视频编码标准,代表了传统压缩技术的巅峰。相比 WebP 的改进是全方位的:
可变大小的超级区块
AVIF 使用最大 128×128 的超级区块(superblock),可以递归分割为更小的区块(最小 4×4)。编码器根据内容复杂度自适应选择区块大小——平滑区域用大区块、复杂区域用小区块。
丰富的预测模式
提供超过 50 种方向性帧内预测模式(WebP 只有 4+4 种),加上多种色度从亮度预测(CfL,Chroma from Luma)模式,能更精确地预测像素值。
进阶变换与滤波
- 多种变换核心:DCT、ADST(Asymmetric Discrete Sine Transform)、identity 变换,每个区块独立选择
- CDEF(Constrained Directional Enhancement Filter):方向性去噪滤波器
- Loop Restoration Filter:Wiener 滤波和自引导(self-guided)滤波器恢复被压缩损失的细节
压缩效率的代价
AVIF 的高压缩率是以极高的编码复杂度为代价。以 libaom(官方参考编码器)speed 4 设定为例,编码一张 4K 照片可能需要 30-60 秒。这使得 AVIF 不太适合需要实时编码的场景,但非常适合可以预先编码的静态资源。
第四代:AI 神经网络压缩(2020s)
传统压缩算法依赖人为设计的变换(DCT)和预测模型。AI 压缩则用神经网络端到端学习最佳的编码方式。
基本架构:Autoencoder
多数 AI 压缩模型基于 Autoencoder 架构:
- 编码器网络(Encoder):将原始图像压缩为低维的潜在表示(latent representation)
- 量化:将连续的潜在向量离散化
- 熵模型(Entropy Model):学习潜在表示的概率分布,用于算术编码
- 解码器网络(Decoder):从潜在表示重建图像
目前的研究进展
| 模型/方法 | 机构 | 特点 | 相对 VTM(H.266 参考软件)压缩效率 |
|---|---|---|---|
| Hyperprior (Ballé 2018) | 奠基性工作,引入超先验模型 | 接近 VTM | |
| Cheng 2020 | 学术界 | 高斯混合模型改进熵估计 | 略优于 VTM |
| ELIC (2022) | 学术界 | 高效潜在图像压缩 | 优于 VTM 5-10% |
| TIC (2024) | Meta | Transformer-based Image Compression | 优于 VTM 10-15% |
| Google MIC (2025) | Multi-realism Image Compression | 在极低比特率下显著优于 VTM |
AI 压缩的优势与限制
优势:
- 极低比特率下表现远超传统方法(在 0.1 bpp 以下差距尤其明显)
- 能学习到传统方法无法手动设计的复杂模式
- 可以针对特定类型的图像(人脸、文字、卫星图)训练专用模型
限制:
- 解码需要 GPU 运算(或至少是较强的 CPU),目前不适合浏览器端实时解码
- 缺乏标准化的格式和解码器,互通性差
- 训练和推理成本高
- 部分模型在高频纹理上的重建品质不如传统方法
各代压缩技术总览比较
| 特性 | JPEG (DCT) | PNG (Deflate) | WebP (VP8) | AVIF (AV1) | AI 压缩 |
|---|---|---|---|---|---|
| 年份 | 1992 | 1996 | 2010 | 2019 | 2020s |
| 压缩类型 | 有损 | 无损 | 有损+无损 | 有损+无损 | 有损(主要) |
| 核心技术 | 8×8 DCT | 预测滤波 + LZ77 | 帧内预测 + DCT | 超级区块 + 多变换 | 神经网络 Autoencoder |
| 有损压缩率(相对 JPEG) | 1.0x | — | 1.25-1.4x | 1.5-2.0x | 2.0-5.0x(极低比特率) |
| 编码速度 | 快 | 中等 | 中等 | 慢 | 极慢(需 GPU) |
| 解码速度 | 快 | 快 | 快 | 中等 | 慢(需 GPU) |
| 浏览器支持 | 全部 | 全部 | 97%+ | 92%+ | 无(实验阶段) |
| 适用场景 | 通用 | 截图、图表 | Web 通用 | Web 进阶、HDR | 研究、极低带宽 |
对图片托管服务的实际影响
了解压缩原理有助于选择正确的图片上传策略。
如果你需要分享的是截图或图表,PNG 是最佳选择——无损压缩确保文字清晰可读。如果是照片,JPEG 或 WebP 的有损压缩可以大幅缩小文件,又不会明显影响观感。
lpic.cc 支持 JPEG、PNG、WebP、GIF 等主流格式的上传,上传后保留原始格式不做额外压缩或转码,确保你分享的图片品质与上传时一致。如果你想在上传前先优化文件大小,可以使用 Squoosh 等工具先手动转换为 WebP 或调整 JPEG 品质。
需要注意的是,lpic.cc 目前不提供服务器端的格式转换或品质调整功能,上传什么格式就存储什么格式。
常见问题 FAQ
Q1:为什么 JPEG 品质设为 100 文件还是比 PNG 小?
因为 JPEG 品质 100 不代表「无损」。即使品质设为最高,JPEG 仍然会经过色度下采样(4:2:0 → 色彩信息已减半)和 DCT/量化流程,只是量化表的数值非常接近 1,损失极小但仍存在。真正的无损需要使用 PNG、WebP Lossless 或 JPEG XL Lossless。
Q2:GIF 的压缩原理是什么?为什么不适合照片?
GIF 使用 LZW(Lempel-Ziv-Welch)字典压缩,是无损压缩。但 GIF 最大的限制是色彩深度只有 8-bit——每张 GIF 最多只能包含 256 种颜色。照片通常包含数百万种颜色,强制减少到 256 色会导致明显的色带(banding)和失真。GIF 适合色彩数量有限的动画和图标。
Q3:压缩过的图片再压缩一次会怎样?
有损格式(如 JPEG)重复压缩会累积品质损失。每次压缩都会引入新的量化误差,即使用相同的品质设定。实测数据显示,一张 JPEG 经过 10 次重新编码(品质 85),PSNR 会下降约 2-4 dB,相当于可察觉的品质退化。这就是为什么图像编辑时应该始终从原始文件出发,而非编辑已压缩的版本。
Q4:AI 压缩什么时候会进入实用阶段?
目前最大的瓶颈是解码速度和标准化。传统格式的解码可以在毫秒级完成,AI 模型需要数百毫秒到数秒(取决于硬件)。预估 3-5 年内可能在特定场景(流媒体图像、卫星图像、医疗影像)进入实用,但要在一般 Web 浏览器中替代 JPEG/AVIF,还需要解码硬件加速和格式标准化的配合。
Q5:上传图片到图床时,应该先压缩还是直接上传原始文件?
取决于用途。如果是分享到社交媒体或即时通讯软件,建议先压缩到合理大小(例如长边 2048 px、JPEG 品质 85 或 WebP 品质 80),可以加快上传和下载速度。如果是需要保留最高画质的摄影作品,上传原始文件更合适。
参考资料
- JPEG Standard - ITU-T T.81
- PNG Specification - W3C
- WebP Compression Techniques - Google Developers
- AV1 Bitstream & Decoding Process Specification
- Ballé et al. - Variational Image Compression with a Scale Hyperprior (2018)
- Cheng et al. - Learned Image Compression with Discretized Gaussian Mixture Likelihoods (2020)
- ELIC: Efficient Learned Image Compression (2022)
- Squoosh - 在线图片压缩与格式转换工具
- Cloudinary - Image Compression Comparison Study
- Mozilla - JPEG Compression Algorithm Overview