← 返回博客

JPEG 质量滑块到底在做什么(不是你想的那样)

大多数用户将 JPEG 质量滑块视为一个简单的保真度百分比:100 表示完美复制,50 表示原始质量的一半。虽然这个想法很常见,但它根本不是压缩的工作方式。了解质量参数实际控制什么可以帮助您更好地决定图像处理。

DCT:JPEG 的实际工作原理

JPEG 压缩首先将图像分成 8×8 像素的块。每个块通过离散余弦变换(DCT)从空间数据(像素颜色)转换为频率数据。结果是每个块的一组 64 个频率系数——表示每个空间频率模式的存在量。

低频系数表示平滑渐变(大面积相似颜色),而高频系数表示精细细节(锐利边缘、纹理、噪点)。这是关键洞察:人眼对低频信息比高频信息敏感得多。

量化:质量真正重要的地方

DCT 之后,JPEG 应用量化——将每个频率系数除以量化表中的一个值,然后四舍五入到最近的整数。这就是数据不可逆丢失的地方。大的除数产生更多零(压缩效果更好)但丢失更多信息。小的除数保留更多数据但导致更大的文件。

质量参数控制量化表。当您将质量设置为 80 时,编码器缩放基础量化表,使除数相对较小——保留大多数频率信息。质量 50 使用更大的除数,将更多系数归零并产生更多压缩伪影。

为什么质量 80 ≠ 原始图像的 80%

质量数字不是视觉质量的百分比。它是应用于 JPEG 标准定义的参考量化表(IJG 表)的缩放因子。以下是不同质量级别实际发生的情况:

渐进式 JPEG:免费优化

还有另一个影响 JPEG 质量和文件大小的设置:渐进编码。渐进式 JPEG 将图像数据存储在多次扫描中,从粗略到精细。通过慢速连接加载时,浏览器几乎可以立即显示低质量预览并逐渐细化。

但渐进编码还有一个实际好处:它通常比基线编码产生更小的文件。多扫描结构允许编码器优化整个图像的霍夫曼表,在相同质量设置下产生 2–10% 更小的文件。

CompactJPG 默认使用渐进编码——对于网页图像严格更好。

检测现有质量

图片压缩中最常见的错误之一是重新压缩已经压缩过的 JPEG。如果您的图像最初以质量 75 保存,以质量 80 重新编码不会改善它——只会让文件变大,同时增加第二代压缩伪影。

CompactJPG 通过从图像的 DQT(定义量化表)标记中检测原始质量来避免这种情况。如果目标质量不低于原始质量,它会原样返回原始文件。

实用建议