Fri Mar 27 2026 20:00:00 GMT-0400 (北美东部夏令时间)
不损失可见画质的 JPEG 图片压缩方法指南
正确地为网页压缩 JPEG:将画质匹配人眼感知,首先调整尺寸,使用渐进式编码(progressive encoding),并避免重复压缩,同时实现精确的尺寸控制。

最后更新时间:June 27, 2026
JPEG 仍然是最常见的照片格式,而网络上的大多数 JPEG 文件都比实际需要的大小要大。良好地压缩它们并非简单地拖动一个滑块到某个数字——它关乎将画质与人眼在显示尺寸下实际能看到的匹配度,先调整尺寸,再进行一次编码。本指南将介绍实用的设置、工具以及在一张真实照片上测量的文件大小。
快速答案:如何压缩 JPEG?
将其调整到显示尺寸,然后使用渐进式编码并去除元数据,以 q80–85 的画质重新编码。对于一张典型的照片来说,这相当于在正常观看距离下进行了大约 70–90% 的尺寸裁剪,且没有肉眼可见的损失。如果追求最小的网络文件大小,请在调整尺寸后切换到 WebP 或 AVIF——但仍需保留 JPEG 作为备用格式。
| 步骤 | 原因 | 工具 |
|---|---|---|
| 将尺寸调整至显示尺寸 | 最大单字节节省 | Image Resizer |
| 以 q80–85 重新编码 JPEG | 去除冗余,损失几乎不可见 | Image Compressor |
| 渐进式编码 | 分级加载,提升感知速度 | optimize=True, progressive=True |
| 剥离元数据 | 去除 EXIF/XMP 字节 | -strip |
| (可选) WebP/AVIF | 对现代浏览器而言更小 | Image Converter |
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:浏览器压缩器
对于单张图片,请使用 Imagic AI Image Compressor:上传、调整尺寸至显示宽度、将 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 输出结果。
继续阅读

Wed Mar 18 2026 20:00:00 GMT-0400 (北美东部夏令时间)
WebP 转换器:如何将图片转换为 WebP 格式(并显示实际尺寸)
将 JPEG 和 PNG 图片转换为 WebP,以获得更小的网页文件。本指南涵盖了实际测量尺寸、使用 cwebp 命令、Python 和浏览器方法,以及一套完整的 JPEG/PNG 回退策略,帮助您优化图片大小。

Tue Mar 17 2026 20:00:00 GMT-0400 (北美东部夏令时间)
PNG转WebP:如何高效转换与压缩PNG图片
本文指导您如何将PNG格式转换为WebP,从而显著减小网页文件体积。我们将详细探讨无损WebP和有损模式的适用场景、提供实际测量大小对比,并演示使用cwebp及Pillow命令进行转换,同时保留PNG作为可靠的回退选项。

Tue Mar 10 2026 20:00:00 GMT-0400 (北美东部夏令时间)
图片SEO优化:实用的2026年检查清单
这是一份针对2026年的实用图片SEO检查清单,涵盖了alt text、文件名、格式、压缩、Core Web Vitals、structured data以及测量等关键要素,帮助您提升图片的搜索引擎可见性和性能。