图片压缩后头发糊成一片,是因为发丝、草叶、织物这类结构由大量相邻的明暗跳变组成,占的全是高频数据。有损压缩分配码率时优先保住轮廓和大色块,把高频的量化步长放到最大,等级一降,这些细密纹理先崩,头发会先并成一撮,再变成一块。

压缩把画面切成8像素见方的块,逐块做频率变换。低频描述这块区域的整体明暗,高频描述块内的细节和起伏。发丝区的高频能量密集,占用的数据量也最大。
量化环节对不同频率乘不同步长,高频步长通常是低频的十几倍。小于步长的系数直接归零,解码时用零还原,纹理就平了。
同一张照片里天空、墙面几乎不变,头发和毛衣先糊,不是算法偏心,是这些数据在预算里最先被牺牲。
第一步,按100%显示,别用缩略图判断。缩略图会把相邻像素平均,反而比原图更顺眼。
第二步,看发丝之间还能不能透出背景的亮线。糊成一片时那条亮缝先消失,整片头发变成均匀深色块。
第三步,回到原图同一位置对照,再把原图缩到目标尺寸看一眼:缩了也糊,损失在缩放;仍根根分明,才是压缩丢的。
第一步,打开JPG压缩页面,上传原始照片。图片压缩后头发糊的图不要再压第二次,损失会叠加。
第二步,「压缩等级」从默认的70提到85。发丝这类高频内容对等级很敏感,70和85之间往往就是"一撮"和"能数清"的差别。

第三步,等级提到85体积还超标,就动尺寸。在「宽(像素)」里把宽度减两成,「高(像素)」留空让它等比算。像素少两成,体积下降比硬压等级明显,纹理也不会被抹得那么狠。
第四步,「选择尺寸」保持「保持原始尺寸」,别和第三步同时改,一次只动一个变量。
第五步,点「开始压缩」下载,按100%看发丝。整片均匀说明这一档过头,回原图把等级提5。
图片压缩后头发糊成一片,线稿和要数清细节的商品图更适合走PNG压缩的无损通道,这类图颜色少,体积代价比照片小。
只在网页按小尺寸展示的人像,纹理本来就被显示尺寸吃掉,为发丝把体积翻倍不值。先定展示尺寸,再决定压多狠。
原图分辨率不够时,换什么参数都补不回来,要从拍摄或导出环节解决。
为什么衣服纹理比脸先糊?
人脸是大面积平滑过渡,低频为主;织物是密集重复的细结构,高频为主。压缩优先保低频,纹理自然先走,格子衬衫常比皮肤先出问题。
压缩等级调到90以上,头发就能保住吗?
能保住大部分,但体积上涨明显,90以上再提升很小。更划算的是停在85,缩尺寸换体积。
已经糊掉的图,再压一次能恢复吗?
不能。被归零的高频系数不会在第二次编码时回来,重压只会再丢一层,要恢复只能回原始文件重做。
图片压缩后头发糊,不是压缩坏了,是高频在预算里被优先放弃。等级提到85、尺寸减两成、一次只改一个参数,多数照片都能在体积和纹理之间找到能接受的位置。