图片压缩怎么做才不变糊:质量、宽度与反效果
决定一张图片体积的旋钮只有两个,而多数人只敢动其中一个。这篇讲怎么两个都用上,以及什么时候压缩其实已经没有东西可压了。
两根杠杆,按影响力排序
图片压缩 把它们直接摆了出来:
- 最大宽度(px) —— 默认 1920,高度按比例自动缩放,清空则不限宽。
- 质量 —— 1 到 100 的滑块,默认 80,传给编码器时换算成 0.01–1.00。
降采样在"每损失一点可见画质能省多少字节"上是压倒性赢家。手机拍的照片常常有 3000–4000 像素宽,而它在页面上最多显示 800 像素,多出来的部分纯属重量。把 4032 降到 1920,还没碰质量滑块,八成像素就已经没了。先定宽度,再调质量。
宽度这一项只会缩小。比最大宽度更窄的图保持原尺寸——工具不会放大,所以对一张 1200 宽的图设"最大宽度 2000",尺寸上等于什么都没做。
填进去的数字是按原样使用的。输入框带着 50–10000 的范围属性,但那只是浏览器控件的提示,代码里并没有做校验,所以你真填个极端值,就会得到那个极端结果。
质量到底管什么
质量控制的是有损编码器(JPEG 与 WebP)的力道。大致:
- 90–100 —— 几乎无损,文件很大,网页场景基本不值得。
- 75–85 —— 常规发布区间,噪点被观看尺寸盖住。
- 60–70 —— 渐变和细纹理开始发糊,缩略图、预览图可接受。
- 50 以下 —— 边缘和肤色出现块状失真、色带涂抹。
由此有两条推论。第一,对 PNG 输出,质量完全不起作用。 PNG 是无损格式,编码器根本不理这个数字;把 PNG 那一档从 80 拉到 10,除了你的预期之外什么都不会变。要让 PNG 变小,只能缩尺寸或转成有损格式——见图片格式互转。
第二,每次都是重新编码。原始字节不会被复用,元数据也会被丢掉:EXIF 拍摄信息、GPS、色彩描述、缩略图都留不住。这在隐私上通常是加分项,但也意味着这个工具不适合"轻轻动一下、保留原始记录"的用法。
什么时候压缩反而让文件变大
这是最常见的意外,而且不是故障:
- 本就优化过的 JPEG,按质量 80–90 重编很容易变大——编码器花钱的方式和原来那个不一样。
- 大片平色的 PNG 已经被压得极好,再编一次几乎不变。
- 很小的图,固定开销占大头,任何百分比变化都显得夸张。
界面会给出压缩前、压缩后和一个前面带减号的百分比。文件变大时,这个减号和负数会拼成 --20.0% 这种样子。读它的绝对值,别被符号骗了:结果是大了 20%。
如果"压缩后"不比原来小,就不要下载它。 留着原文件。
可参考的目标值
以下是粗略经验,针对典型 16:9 照片或 1920 宽截图:
| 用途 | 宽度 | 质量 | 合理体积 |
|---|---|---|---|
| 网页大图横幅 | 1600–1920 | 70–78 | 150–350 KB |
| 文章内配图 | 800–1200 | 72–80 | 60–150 KB |
| 缩略图/卡片 | 300–500 | 65–75 | 15–40 KB |
| 邮件附件 | 1280–1600 | 75–80 | 150–300 KB |
| 带文字的截图 | 1200–1920 | 85–95,或直接 PNG/WebP 无损 | 以可读性为准 |
最后一行比数字本身更重要:有色背景上的文字正是有损压缩最先毁掉的东西。狠压之后放大到 100%,把图里最小的字读一遍。看不清,就说明受限的是那块区域,而不是你的体积目标。
一套不浪费时间的流程
- 先定这张图将来会被显示到的宽度,一次性设好最大宽度。
- 质量 80 压一次,看省了多少百分比。
- 还大就往下一档 10 个点地试,不要一步跳到 30。
- 放大到 100% 检查承载信息的位置:文字、人脸、边缘、细线。
- 如果撞到墙,就换格式,而不是继续降质量。一张 PNG 截图转 WebP 常常直接减半且看不出差别。
压缩是个循环,而且很短,两三下就该收敛。
不适合批量,也不适合文档
一次一个文件。有一整个文件夹要处理时,用图片批量处理——只收 PNG、JPEG、WebP,能缩放能转格式,最后给一个 ZIP。注意它对每个文件都会重编码,所以参数完全不动地跑一遍,也照样会重写每一份文件。
要让 PDF 变小请用 PDF 压缩,那是文档管线,取舍完全不同,见 PDF 压缩:怎么把文件变小又尽量不毁画质。
隐私
压缩全程在浏览器标签页内完成:本地读取、本地画布缩放、本地编码。不上传、不排队、无需账号,页面加载之后断网也能用。对外请求只有页面的统计与广告脚本。
相关指南
- 图片格式互转:转成 PNG / JPEG / WebP 时到底发生了什么 — 一次重编码会改掉什么,透明通道规则
- 批量缩放与格式转换,先弄清这几点 — 一次处理很多文件时的同类取舍
- 把多张截图拼成长图 — 拼完的长图往往正需要这一步