返回博客
技术科普

2026 从 JPEG 到 AI 压缩:图片压缩算法 5 代演进与原理深度解析

发布于17 min read
分享文章

让我们直接看数据:压缩率从 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 的无损压缩模式使用完全不同的算法,包括:

  1. 色彩转换:将 ARGB 转为更可压缩的色彩表示
  2. LZ77 前向引用:引用先前出现过的像素块
  3. 色彩缓存:缓存最近使用的颜色,重复色可用极少比特表达
  4. 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 架构:

  1. 编码器网络(Encoder):将原始图像压缩为低维的潜在表示(latent representation)
  2. 量化:将连续的潜在向量离散化
  3. 熵模型(Entropy Model):学习潜在表示的概率分布,用于算术编码
  4. 解码器网络(Decoder):从潜在表示重建图像

目前的研究进展

模型/方法 机构 特点 相对 VTM(H.266 参考软件)压缩效率
Hyperprior (Ballé 2018) Google 奠基性工作,引入超先验模型 接近 VTM
Cheng 2020 学术界 高斯混合模型改进熵估计 略优于 VTM
ELIC (2022) 学术界 高效潜在图像压缩 优于 VTM 5-10%
TIC (2024) Meta Transformer-based Image Compression 优于 VTM 10-15%
Google MIC (2025) Google 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#DCT#有损压缩#无损压缩#AI压缩
B

作者

Brian Lee

技术分析师

专注图片格式、压缩技术与 API 整合,用数据说话。