2026-03-28 · 2026-07-26 更新
不损失可见画质的 JPEG 图片压缩方法指南
正确地为网页压缩 JPEG:将画质匹配人眼感知,首先调整尺寸,使用渐进式编码(progressive encoding),并避免重复压缩,同时实现精确的尺寸控制。

最后更新时间:July 26, 2026
JPEG 仍然是最常见的照片格式,而网络上的大多数 JPEG 文件都比实际需要的大小要大。良好地压缩它们并非简单地拖动一个滑块到某个数字——它关乎将画质与人眼在显示尺寸下实际能看到的匹配度,先调整尺寸,再进行一次编码。本指南将介绍实用的设置、工具以及在一张真实照片上测量的文件大小。
快速答案:如何压缩 JPEG?
将其调整到显示尺寸,然后使用渐进式编码并去除元数据,以 q80–85 的画质重新编码。对于一张典型的照片来说,这相当于在正常观看距离下进行了大约 70–90% 的尺寸裁剪,且没有肉眼可见的损失。如果追求最小的网络文件大小,请在调整尺寸后切换到 WebP 或 AVIF——但仍需保留 JPEG 作为备用格式。
| 步骤 | 原因 | 工具 |
|---|---|---|
| 将尺寸调整至显示尺寸 | 最大单字节节省 | 图片调整尺寸工具 |
| 以 q80–85 重新编码 JPEG | 去除冗余,损失几乎不可见 | 图片压缩工具 |
| 渐进式编码 | 分级加载,提升感知速度 | optimize=True, progressive=True |
| 剥离元数据 | 去除 EXIF/XMP 字节 | -strip |
| (可选) WebP/AVIF | 对现代浏览器而言更小 | 格式转换工具 |
JPEG 压缩实际是如何工作的?
JPEG 将图像分割成 8×8 像素块,将每个块转换为频率域,然后进行量化——它用较大的数字除以高频(精细细节)系数,使得许多系数四舍五入为零。画质滑块就是控制这个量化矩阵的:较低的画质意味着更大的除数、更多的零值、更小的文件大小以及丢弃的更多细节。然后这些零值会进行游程编码和 Huffman 编码,最终成为字节流的一部分。
这就是为什么 JPEG 会模糊文本和锐利的边缘:精细细节存在于高频系数中,而量化过程会将它们归零。如果将画质推得太低,就会看到 8×8 的块状伪影,这在上面的 q50 面板中可见。要了解完整的算法流程,请参阅 how image compression works。
您应该使用什么画质设置?
比较的是肉眼可见的画质,而不是数字本身。JPEG q85、WebP q75 和 AVIF q60 在视觉上看起来大致相似。在一张羽毛细节裁剪图上测量,JPEG 的大小最初急剧下降,然后趋于平稳:

实用的区间:
| 画质 | 文件大小 (相对) | 可见损失 | 适用场景 |
|---|---|---|---|
| 90–95 | 最大 | 无 | 印刷母版、存档文件 |
| 80–85 | ~15–25% of original | 在观看距离下无损失 | 网络照片(默认) |
| 70–75 | 更小 | 轻微,出现在平滑区域 | 缩略图 |
| 50–65 | 最小 | 可见块状伪影 | 不应用于任何重要内容 |
从 85 开始,只有当您需要节省字节时才降到 80 或 75。低于 70 的画质,伪影就会分散注意力。
方法 1:浏览器压缩器
对于单张图片,请使用 图片压缩工具:上传、调整尺寸至显示宽度、将 JPEG 画质设置为 85、启用渐进式编码,然后下载。如果需要实时视觉控制,Squoosh 会在您移动滑块时并排显示输出大小和预览图。
方法 2:命令行
对于一个文件夹,命令行编码器是最快且可脚本化的。
## ImageMagick: resize, q85, progressive, strip metadata, write to out/
mkdir -p out
mogrify -path out -resize 1920x -quality 85 -strip -interlace Plane *.jpg
## jpegoptim: lossless re-optimization, or set a max quality
jpegoptim --max=85 --strip-all --all-progressive *.jpg
## mozjpeg (better compression than libjpeg at equal quality)
cjpeg -quality 85 -progressive input.ppm > output.jpg
mozjpeg 在相同视觉画质下产生的文件比标准 libjpeg 更小,因此当您可以安装它时,它是最佳选择。jpegoptim 很方便,因为它可以在不损失质量的情况下,根据设定的画质上限进行原地重新压缩。
方法 3:Python
from PIL import Image
from pathlib import Path
def compress_jpeg(src: Path, dest: Path, quality: int = 85, max_width: int = 1920):
with Image.open(src) as img:
if img.mode != "RGB":
img = img.convert("RGB")
if img.width > max_width:
ratio = max_width / img.width
img = img.resize((max_width, int(img.height * ratio)), Image.LANCZOS)
img.save(dest, "JPEG", quality=quality, optimize=True, progressive=True)
for f in Path("photos").glob("*.jpg"):
compress_jpeg(f, Path("out") / f.name)
optimize=True 会构建最佳的 Huffman 表(文件更小,编码速度更慢);progressive=True 会写入渐进式 JPEG。
是否应该使用渐进式 JPEG?
对于首屏网络图片是应该使用的。渐进式 JPEG 是分级加载的,它会先显示一个低细节的全图预览,而不是从上到下地“擦除”过程。字节数相同,但感知速度更好。缺点是编码略慢,但这在您只进行一次上传编码时可以忽略不计。
压缩还是调整尺寸——哪个更重要?
两者都能减小文件大小,但必须先调整尺寸。压缩会丢弃每个像素的细节;而调整尺寸则丢弃了你根本不会显示的像素。一张压缩到 q85 的 4000px 照片,仍然是一个 4000px 的下载图,但只在 800px 显示。正如 batch resize guide 所展示的,先将尺寸调整至显示尺寸可以节省比任何画质微调更多的字节。

每张图片的推荐处理顺序是:调整尺寸至显示尺寸 → 压缩到 q85 → 剥离元数据 → 上传。如果追求最小的结果,还应导出 WebP/AVIF,并通过 <picture> 标签使用 JPEG 作为备用格式进行服务。
常见错误
- 二次压缩已压缩的 JPEG。 每一次有损编码都会增加伪影;文件甚至可能会变大。请从母版开始工作。
- 过度压缩以达到大小目标。 低于 q70,块状伪影就会分散注意力。与其进一步降低画质,不如将尺寸缩小。
- 为照片保存 PNG。 PNG 是无损的,但对于照片来说文件体积巨大。请对照片使用 JPEG(或 WebP),对图形/文本使用 PNG。
- 剥离了必需的 EXIF 信息。 如果是照片存档,请保留它;如果是用于公共网络,则剥离它。
- 忘记格式切换。 在相同画质下,WebP 和 AVIF 比 JPEG 小 25–50%。请参阅 format comparison。
最终导出检查清单
- 在进行 JPEG 压缩之前,将尺寸调整至显示宽度。
- 将原始文件保留在输出文件夹之外。
- 对于大型网络照片,使用渐进式 JPEG。
- 避免重复保存同一张 JPEG 文件。
- 在正常大小和 100% 的放大倍率下比较最终图像。
常见问题解答
JPEG 压缩会降低画质吗?
是的——JPEG 本身就是有损的。但在 q80–85 画质下,损失在正常观看距离下是肉眼不可见的,并且文件通常比原始文件小 75–90%。
网络最佳 JPEG 画质是多少?
80–85。这是文件大小较小且损失不明显的区间。缩略图使用 75,任何重要内容绝不能低于 70。
我可以压缩一个已经压缩的 JPEG 文件吗?
可以,但节省的空间极小,而且您会增加伪影。请只从高质量母版进行重新压缩。
照片用 JPEG 还是 WebP?
WebP 在相同画质下更小,因此对于现代网页更推荐使用它——并在 <picture> 中设置 JPEG 作为备用格式。将 JPEG 保留给电子邮件和老旧客户端。TinyPNG alternatives 指南列出了同时输出这两种格式的工具。
我应该为 JPEG 使用什么画质设置?
网络交付使用 80–85 画质(在观看尺寸下损失不可见,大约是 q100 文件大小的四分之一)。只有用于印刷或需要仔细检查的裁剪时才使用 90–95。低于 75 的画质,平滑渐变区域(如天空)会出现色带和伪影。请从无损母版开始,一次性压缩到目标画质。
什么是生成损失?
每当您重新保存一个 JPEG 文件时,它都会应用一轮有损压缩,伪影会累积——图像逐渐丢失细节并增加块状伪影。避免这种情况的方法是在无损格式(TIFF、PNG 或 RAW)中编辑,并在最后一次导出为 JPEG。切勿反复打开、编辑和重新保存 JPEG 文件。
我应该将 JPEG 转换为 WebP 吗?
对于网络交付,是的——WebP 在相同画质下比 JPEG 小 25% 到 35%,并且兼容所有当前的浏览器。仅当遇到非常老的浏览器时才保留 JPEG 作为备用格式。通过 <picture> 元素服务 WebP,并设置 JPEG 作为备用格式。请参阅 WebP converter guide。
什么是渐进式 JPEG?
这是一种分级加载的 JPEG——它首先显示一个模糊的全图预览,然后逐渐变得更清晰,而不是从上到下地“擦除”。它改善了在慢速连接上的感知加载速度,因为用户可以尽早看到整个图像。大多数编码器都可以以零文件大小成本写入渐进式 JPEG;请为首屏网络图片启用此功能。
什么是色度抽样?
这是一种 JPEG 技术,它存储的颜色细节分辨率低于亮度细节,因为人眼对亮度比对精确颜色更敏感。它在肉眼几乎不可见损失的情况下缩小了文件。大多数编码器默认在 q80 及以下画质应用此技术;只有当色彩保真度至关重要(例如艺术品或纯色图形)时才禁用它。
JPEG 支持透明度吗?
不支持——JPEG 没有 Alpha 通道,因此一个透明的图像在导出为 JPEG 时会强制添加背景(通常是白色)。请使用 PNG 或 WebP 来处理透明度,并将 JPEG 保留给照片。请参阅 transparent images guide。
图片来源
- JPEG 画质阶梯、前后对比和按画质大小图表——由作者使用一只金刚鹦鹉羽毛照片(Pexels #36720663,摄影师:Kaca Skok)生成,以展示不同画质级别下实际测量的 JPEG 输出结果。
继续阅读

2026-08-01
2026图片压缩全景:WebP、AVIF、JPEG XL与JPEG AI实测对比
我用cwebp、avifenc和cjxl对4张真实高清照片做了压缩基准测试。WebP比JPEG小32%,AVIF小65%,JPEG XL小30%。本文给出完整数据、浏览器支持现状、Core Web Vitals影响,以及2026年每种格式的最佳使用场景。

2026-07-26
快速网页图片优化终极清单:从格式选择到CDN设置,掌握所有关键步骤
这是一份完整的图片优化checklist,涵盖了格式选择、尺寸调整、压缩处理、responsive delivery、lazy loading和CDN setup。在每次发布前,请务必对照这份清单进行全面检查,确保您的网站加载速度达到最佳状态。

2026-07-26
如何在不损失画质的情况下将图片压缩到100KB以下
该工具通过移除目标设备无法显示的像素,并仅在必要范围内降低编码器质量。我们提供了来自五个真实文件的可复现结果,确保了压缩效果的可靠性与高质量,帮助您轻松达到理想的文件大小。