如何在不损失画质的前提下压缩图片
多数人把图片压缩当成一笔交易:体积变小,画质变差。这个交换确实存在,但它不是你该动的第一根杠杆。在你碰画质滑块之前,还有三个因素在决定文件大小——其中两个能在不丢一个像素的前提下把照片砍掉一半以上。
这篇文章讲清楚:到底是什么在决定体积、不同用途该瞄准多大、以及怎么在不把照片交给陌生人服务器的情况下做完这件事。
有损与无损:这个区分是关键
无损压缩重写文件的内部表示,去掉冗余,但每个像素值保持不变。一张截图的 PNG 常常能这样瘦掉 40–70%,出来的是逐比特相同的图。截图、Logo、图表、UI 稿,以及任何大片纯色加锐利边缘的东西,都该用无损。
有损压缩丢掉人眼大概率注意不到的信息——主要是平缓过渡区域里的高频细节。JPEG 和 WebP 就是这么干的。一张手机拍的 4MB 照片能压到 300KB,在正常观看尺寸下看不出差别。再往下压就开始露馅了:平缓渐变里出现块状色斑、高对比边缘出现光晕、文字上那种糊掉的“JPEG 味”。
实用规则:图形用无损,照片用有损。 对截图用有损压缩,任何有意义的压缩率下都会得到一团糊。对照片用无损压缩基本没用,因为照片数据本身就接近随机。
真正决定体积的是什么
大家第一反应都是去拖画质滑块。它是第三重要的因素。
1. 分辨率。 文件大小大致随像素数增长。一张 4000×3000 的照片有 1200 万像素;缩到 1200×900 只剩 108 万像素,约为原数据的 9%。如果这张图最终以 800px 宽显示,那把它存成 4000px 宽纯属浪费,跟你怎么压没关系。先缩尺寸,再压缩。 这一步的效果通常胜过画质滑块能做的任何事。
2. 格式。 同样的视觉质量下,新格式就是更小。Google 自己公布的基准测试里,WebP 比 JPEG 小约 25–35%,AVIF 通常还要再小一截。支持度现在很广——所有主流浏览器都能渲染 WebP,AVIF 也紧随其后。例外是需要兼容老旧软件的场景,那 JPEG 仍然是默认选择。
3. 画质设置。 到这一步才轮到它。把 JPEG 质量从 100 降到 80,体积常常减少 3–5 倍,肉眼几乎无感。从 80 降到 60 就开始能看出来了。降到 50 以下通常不值——细节明显丢失,而省下的体积比你想的少,因为剩下的数据恰好是难压的那部分。
按用途定目标
下面是工作经验范围,不是铁律。把它们当起点,并且在图片真正会被观看的尺寸下检查结果。
| 用途 | 目标体积 | 说明 |
|---|---|---|
| 网页首屏大图 | 150–300KB | 先缩到显示宽度 |
| 博客正文插图 | 50–150KB | 1200px 宽通常足够 |
| 缩略图 / 卡片图 | 15–40KB | 400px 宽,画质可以压狠一点 |
| 邮件附件 | 单张 500KB 以内 | 很多客户端限制整封邮件的总大小 |
| 社交平台发帖 | 1MB 以内 | 平台反正会二次压缩,不用跟它较劲 |
| 打印或存档 | 不压缩 | 保留原图,体积不是这里的约束 |
最后一行比看上去更重要。留好原图,压副本。 存储很便宜,丢了的原图不便宜。
在浏览器里压缩
所有主流在线压缩工具都是同一个套路:你上传文件,服务器压缩,你下载结果。这意味着你的图片——可能是护照扫描件、签过字的合同、孩子的照片——会躺在别人的磁盘上,躺多久不知道,什么政策不知道。
ToolVeil 的压缩工具在本地干活,用的是浏览器自己的 canvas 和编码接口。没有任何数据被传输。你可以自己验证:打开浏览器开发者工具,切到 Network 面板,压缩一张图。不会出现任何上传请求。
- 把图片压到指定大小 —— 填入表单要求的上限,工具给出「刚好压得进去」的最高画质。常见上限:老式网页表单 100KB、美国签证照片 240KB、邮件与求职门户 500KB。
这个工具会自动调整质量直到文件达标,用的是“刚好能压进目标”的最高质量设置。如果你想自己控制格式和质量,用图片格式转换器。如果照片是 iPhone 拍的 HEIC 文件,先转格式——见如何把 HEIC 转成 JPG。
输出格式由工具决定。 它们优先用 WebP——同等画质下更小,还能保留透明通道——只有在 JPEG 更贴合你的目标体积时才退回 JPEG,所以下载下来的文件通常是 .webp。这对网页和多数现代平台没问题,但有些上传表单,尤其是签证和考试报名系统,只收 JPG。要传这类系统,把结果再用图片格式转换器转一遍并重新确认体积:同等画质下 JPEG 会略大,原本刚好压进上限的文件可能会重新超标。
如果图片需要匹配的是某个平台的尺寸而不是某个具体体积,社交图片尺寸调整可以一次搞定两件事。
三个把成果毁掉的操作
先压缩再缩尺寸。 你把画质预算花在了没人会看到的像素上,最后文件还是太大。应该先缩到显示尺寸,再压缩。
对已经压过的文件再压一次。 每一轮 JPEG 编码都会再丢一批信息。“再小一点点”来十轮,比一开始就用对设置压一轮差得多。永远从原图重新开始。
用有损编码压截图。 文字和 UI 边缘正是有损压缩最不擅长的东西。凡是锐利边缘加纯色块的图,用 PNG 或 WebP 无损。
常见问题
压缩图片会降低画质吗? 用无损压缩不会,像素完全相同。用有损压缩技术上会,但这个损失是设计成在正常观看尺寸下看不见的。真正看得见的画质损伤,通常来自压过头,而不是来自压缩本身。
网页图片用什么格式最好? 大多数照片和图形用 WebP,需要兼容性时退回 JPEG,需要无损保真或透明通道时用 PNG。在支持的前提下,AVIF 还能更小。
一张照片能压到多小才不糊? 这更多取决于观看尺寸,而不是某个具体数字。以 300px 宽观看的图,30KB 看着没问题;同一个文件拉到 1920px 的首屏大图上就是灾难。在它实际展示的尺寸下判断。
为什么我的 PNG 比原来的 JPEG 还大? 因为 PNG 是无损的。把照片转成 PNG 会保留每个像素,也就保留了 JPEG 当初已经丢掉的全部数据。想省空间就别把照片转 PNG,效果正好相反。
能不能压缩图片但不上传到任何地方? 能。现代浏览器可以完全在内存里完成解码、缩放和重新编码。本站的压缩工具就是这么工作的,你可以在浏览器的 Network 面板里自行确认。