Fri Mar 27 2026 20:00:00 GMT-0400 (北美东部夏令时间)

不损失可见画质的 JPEG 图片压缩方法指南

正确地为网页压缩 JPEG:将画质匹配人眼感知,首先调整尺寸,使用渐进式编码(progressive encoding),并避免重复压缩,同时实现精确的尺寸控制。

不损失可见画质的 JPEG 图片压缩方法指南

最后更新时间: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 的大小最初急剧下降,然后趋于平稳:

Bar chart of measured JPEG size by quality: q95 largest, dropping through q85, q75, q65, q50 — the sweet spot is q75-85

实用的区间:

画质 文件大小 (相对) 可见损失 适用场景
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 所展示的,先将尺寸调整至显示尺寸可以节省比任何画质微调更多的字节。

Source detail next to the q85 web-ready result: at display size the compressed version is indistinguishable

每张图片的推荐处理顺序是:调整尺寸至显示尺寸 → 压缩到 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

Moody close-up of Canon 24mm and 18-55mm lenses under vibrant lighting.

图片来源

  • JPEG 画质阶梯、前后对比和按画质大小图表——由作者使用一只金刚鹦鹉羽毛照片(Pexels #36720663,摄影师:Kaca Skok)生成,以展示不同画质级别下实际测量的 JPEG 输出结果。

阅读指南的同时,欢迎使用这些免费工具。

PNG转WebP:如何高效转换与压缩PNG图片 的封面图片

Tue Mar 17 2026 20:00:00 GMT-0400 (北美东部夏令时间)

PNG转WebP:如何高效转换与压缩PNG图片

本文指导您如何将PNG格式转换为WebP,从而显著减小网页文件体积。我们将详细探讨无损WebP和有损模式的适用场景、提供实际测量大小对比,并演示使用cwebp及Pillow命令进行转换,同时保留PNG作为可靠的回退选项。

图片SEO优化:实用的2026年检查清单 的封面图片

Tue Mar 10 2026 20:00:00 GMT-0400 (北美东部夏令时间)

图片SEO优化:实用的2026年检查清单

这是一份针对2026年的实用图片SEO检查清单,涵盖了alt text、文件名、格式、压缩、Core Web Vitals、structured data以及测量等关键要素,帮助您提升图片的搜索引擎可见性和性能。