一张 JPEG 为什么会长出方块、蚊子噪点和白色光环?
TL;DR
JPEG 通过色度抽样、分块变换、量化和熵编码大幅缩小照片,其中量化会永久舍弃部分细节。压缩过强或反复保存后,方块、边缘光环与蚊子噪点便会显现。本文从人眼偏好出发解释这些痕迹如何产生。
JPEG 通过色度抽样、分块变换、量化和熵编码大幅缩小照片,其中量化会永久舍弃部分细节。压缩过强或反复保存后,方块、边缘光环与蚊子噪点便会显现。本文从人眼偏好出发解释这些痕迹如何产生。

把一张照片反复截图、转发和保存后,天空可能出现一格一格的色块,文字边缘冒出白圈,细线周围还围着像蚊群一样的噪点。这些痕迹不是相机突然坏了,而是 JPEG 有损压缩在不断舍弃信息后留下的脚印。
JPEG 的目标不是逐像素保留原图,而是在视觉质量尚可的前提下大幅缩小文件。它之所以成功,是因为压缩过程利用了人眼并非同样敏感于所有信息。

第一步:少记一些颜色细节
图像可以拆成亮度与颜色差异。人眼通常对明暗轮廓比对细微色彩变化更敏感,因此 JPEG 常使用色度抽样:保留较完整的亮度信息,降低颜色通道的空间分辨率。
照片里这通常不明显,但红色文字、界面截图和锐利彩色边缘容易发糊。JPEG 适合连续色调照片,却不是保存小字号文字、像素画和透明图形的理想格式。
第二步:把小方块改写成波纹配方
JPEG 通常把图像分成 8×8 像素的小块,再通过离散余弦变换,把每块像素改写为一组不同频率的变化。低频描述大面积缓慢明暗变化,高频描述细纹、噪点与锐利边缘。
接着发生真正不可逆的一步:量化。压缩器用不同尺度除这些系数并取整,高频细节通常被舍弃得更多。质量设置越低,取整越粗,文件越小,丢失也越明显。MDN 对 JPEG 的说明将其过程概括为色度抽样、离散余弦变换与量化,以及后续的游程和霍夫曼编码。
最后的编码继续消除重复,但不再是画质损失的主要来源。真正让信息回不来的,是前面的抽样与量化。
三种常见伤痕怎样出现
方块效应来自每个 8×8 区块被相对独立地处理。压缩很强时,相邻块边界无法自然衔接,天空和皮肤等平滑区域便显出棋盘格。
边缘光环或振铃来自有限频率近似锐利突变。黑字与白底交界越突然,变换后越容易在边缘两侧留下亮暗波纹。
蚊子噪点常围绕文字、树枝等高对比边缘闪现。高频细节被粗略量化后,重建出的误差聚集在轮廓附近,看起来像细小颗粒在边缘盘旋。MDN 的媒体编码指南也指出,使用离散余弦变换的 JPEG 可能出现这类痕迹。
为什么反复保存越来越糟
打开 JPEG 并不会损坏图片,关键在于再次有损编码。每次保存,软件都在上一次已经取整的结果上重新分块、变换和量化。若裁剪或尺寸变化让区块边界移动,旧伤痕与新一轮误差还可能叠加。
因此,编辑时应保留无损母版或原始文件,只在最终发布时导出 JPEG。社交平台往往会再次压缩上传图片,提前把质量降得太低,会让两轮损失相加。
什么时候换一种格式
截图、图标、线稿和含透明区域的图像通常更适合 PNG 等无损格式。现代 WebP、AVIF 等格式能在许多场景提供更高压缩效率,但是否合适仍取决于兼容性、编码速度和内容类型。格式名称不是质量保证,任何有损格式在过强压缩下都会产生痕迹。
JPEG 也并非落后的坏格式。它让照片在网络带宽昂贵的年代得以广泛流通,今天仍拥有极好的兼容性。方块和光环只是它做出取舍的可见边界:为了让文件轻得足以快速传递,它把人眼通常不在意的信息先丢掉;当我们要求它丢得太多,那些被忽略的部分就会回来提醒我们。



