JPG 压缩:同样的体积,怎么保留更多细节
JPEG 是目前唯一一个几乎所有设备都能打开的图片格式,所以它也是被压得最狠的格式。这一页讲清楚质量参数到底在丢什么、为什么先缩边长比先降质量划算,以及怎么判断一张照片已经压到极限。
也可以把图片直接拖到这一块 · 图片不上传,处理在本机完成
JPG 的体积由三件事决定
很多人以为体积只由质量参数决定,其实分辨率的影响往往更大。一张 4000×3000 的照片有 1200 万像素,即使质量设到 0.3,它仍然比一张 1200×900 的质量 0.9 要小不了多少——因为像素量决定了数据量的下限。
JPEG 的压缩原理是把画面切成小块做频域变换,再根据量化表丢掉人眼不敏感的高频信息。质量参数控制的正是这张量化表的激进程度:质量越低,被丢弃的高频信息越多,表现就是细节被抹平、色块变大、边缘出现波纹。
- 分辨率:像素总量,决定数据量的下限,影响最直接
- 质量参数:控制丢弃多少高频细节,影响细节保留程度
- 编码方式:标准模式与极端模式,同样的质量下后者更慢但更小
质量设在哪个区间最划算
JPEG 的质量与体积不是线性关系。从 1.0 降到 0.9,体积可能直接少三成而肉眼几乎无感;从 0.5 再往下降,体积省得越来越少,画质却崩得越来越快。所以要找的是那条曲线的转折点。
| 质量 | 适用场景 | 代价 |
|---|---|---|
| 0.9–1.0 | 需要后期再修、要印刷的照片 | 体积基本没有优化空间 |
| 0.8–0.9 | 交付、投稿、发原图给人看 | 放大到 100% 才有细微差别 |
| 0.7–0.8 | 网页配图、社交分享、多数上传场景 | 暗部和肤色开始有极轻微损失,日常看不出 |
| 0.5–0.6 | 体积有硬性上限,且观看尺寸不大 | 天空和虚化背景出现色块,边缘有波纹 |
| 低于 0.5 | 不建议,除非只是做预览图 | 明显色块、文字边缘发虚,基本不可用于交付 |
先缩边长,还是先降质量
这是压缩照片时最常见的选择困难,答案很清楚:先缩边长。
原因在于两种手段损失的东西不一样。缩边长丢的是像素,只要目标观看尺寸不需要那么多像素,丢掉的就是冗余信息,视觉上几乎没有代价;降质量丢的是画面内部的细节精度,无论你把图放到多大看到的结果都已经变了。一张 4000 像素宽的照片缩到 1600 像素,再配质量 0.85,结果往往比保持 4000 像素配质量 0.5 又小又清楚。
只有在已经缩到目标观看尺寸、体积仍然超限时,才轮到动质量参数。
极端模式换来的那一截体积
标准编码为了速度做了不少简化,极端模式会尝试更多的编码组合,用更长的处理时间换更小的文件。对单张照片来说差别可能只有百分之几到百分之十几,但在需要严格控制体积的场景下,这一截往往正好够用。
代价是处理时间明显变长。对批量任务来说,打开极端模式会让整批的处理时长成倍增加,建议只在最终交付前对少量关键图片使用。
JPG 压不了的两类图
JPEG 从根本上不支持透明通道,也不适合表现锐利的文字和线条。这两点在压缩时表现为两个典型问题。
- 透明背景的图转成 JPG 后,透明区域会被填充成你指定的底色,处理不好就是一片黑或一片白。这类图应该用 PNG 或 WebP。
- 界面截图、表格、图表转成 JPG 后,文字边缘会出现彩色噪点和雾状模糊,因为 JPEG 的压缩方式本身就假设画面是连续色调的照片。截图类内容应该用 PNG。
- 已经压过一轮的 JPG 再压一次,画质损失是叠加的。如果手上只有压过的版本,把质量设在 0.85 以上,避免二次损失被放大。
常见问题
JPG 压缩设多少质量最合适?
多数场景下 0.7 到 0.85 是甜点区,体积能降到原来的三分之一到五分之一,而日常观看看不出差别。要交给人后期处理或印刷,用 0.9 以上。要到 0.6 以下才开始出现肉眼可见的色块和边缘波纹,那个区间只适合对体积有硬性上限的情况。
JPG 压缩后能恢复吗?
不能。JPEG 是有损压缩,被丢掉的高频信息不会保留在任何地方,压缩不可逆。唯一可靠的做法是保留原始文件,只对输出的副本做压缩,需要改参数时从原图重新压一次,而不是在已经压过的结果上再压一次。
为什么压完还是有一块一块的色斑?
这是 JPEG 原理决定的块状效应,在暗部、天空和背景虚化这类大面积平滑区域最明显。缓解办法是提高质量参数,或者先把图片尺寸缩小一些——缩小会让这些区域的像素被平均,块状感随之减弱,而体积下降得更多。
JPG 支持透明背景吗?
不支持。JPEG 格式本身没有透明通道,透明区域在保存时会被填充成指定颜色。如果你的图需要透明背景,应该输出 PNG 或者 WebP,这两个格式都能保留透明通道。
相关页面
最近更新:2026-09-15