一张 iPhone 照片 3–6 MB,一张桌面截图 2–4 MB,一个「存成 PNG 免得掉画质」的文件往往有 8 MB。乘以一整个作品集、一个博客、一条邮件长串,你为一堆和 500 KB 版本几乎看不出区别的图片,传出去了好几百兆。上传慢、加载慢、超出附件或表单的大小限制 —— 这些烦恼几乎都来自「文件比它需要的大得多」。
图片压缩就是把这个差距抹平。Zebra 用现代图像编码器,直接在你的浏览器里、通过 WebAssembly 运行。文件始终留在你的设备上,不上传到任何服务器。大多数照片压完能小 60–90%,而且看不出画质损失。
它和大多数「免费图片压缩」网站有一个根本区别:那些网站是把你的文件传到它们的服务器上压完再传回来,而 Zebra 全程在你这台设备上完成。对普通照片,这只是快一点、省流量;但对证件照、私聊截图、合同扫描件这类不该外流的图,这个区别就是「上没上传过别人的服务器」的区别。
有损压缩到底损了什么
先说清楚一个常被误解的点。JPEG 和 WebP 是有损压缩:它们丢掉的是人眼几乎察觉不到的信息 —— 比如天空里相邻两个极其接近的蓝色,合并成一个;比如高频噪点里的细微差异,直接抹平。丢的是「你本来也看不出来」的部分,所以在合理的质量档下,压完的图和原图肉眼无从分辨。
PNG 则是无损的:每个像素都精确保留。代价是照片这种充满细微渐变和噪点的内容,PNG 压不动,文件会大得离谱。所以规律是:照片用有损(JPEG/WebP),线条和文字用无损(PNG)。 Zebra 会替你判断:不带透明的照片 PNG 自动转 JPEG,真正带透明的 PNG 保持无损。理解了这条,你就不会再犯「把照片存成 PNG 保画质」这个最常见的错。
三步搞定
- 打开图片压缩工具。
- 把 JPG、PNG 或 WebP 拖进去(单张最大 25 MB)。
- 选 轻度、中等 或 强力,点 压缩,再点 下载。
Mac 上一张 400 万像素的 iPhone 照片大约 2 秒压完,1200 万像素的大约 4–6 秒。手机 Safari 会再多几秒。因为不上传,速度取决于你的 CPU,而不是你的网速 —— 这也意味着网差、断网都不影响,页面加载完之后整个压缩过程都在本地跑完。要压的是文档而不是图片的话,方法完全一样,只是换成 PDF 压缩那一套(pdf.js 加 pdf-lib,同样在浏览器里)。
图片为什么会这么大
想压得对,先得知道大在哪:
- 分辨率。 一张 4032×3024 的 iPhone JPEG 有 1220 万像素。JPEG 已经把它压到约 4 MB,但换一个更聪明的编码器、再稍微降一点质量档,还能再省 60%。
- 格式选错了。 PNG 会一个像素不落地无损保存。这对带清晰文字的截图、带透明的图标是对的;对照片就是错的 —— 你花了 4 MB 去精确记录一堆 JPEG 本来会愉快丢掉的噪点。
- 编码器太保守。 浏览器自带的 JPEG 编码器很保守。Zebra 用调优过的编码器(带 trellis 量化和渐进式扫描),在同等画质下把文件再压小 10–20%。同一张图,更小的文件。
- EXIF 元数据。 GPS 坐标、相机型号、镜头、完整编辑历史 —— 有时有用,但经常是你不需要的几百 KB。Zebra 重新编码时会把大部分 EXIF 去掉。这既省了体积,也顺带保护了隐私:你分享出去的图不再带着「在哪拍的、什么时候拍的」这些信息。
理解了这四点就会发现,压缩不是「牺牲画质换体积」这么简单 —— 换一个更聪明的编码器、把照片从 PNG 转成 JPEG、顺手去掉不需要的元数据,很多时候在你几乎看不出画质差别的前提下,体积就已经砍掉一大半了。
Zebra 用的三种编码器
Zebra 会根据你的文件格式和内容自动挑合适的编码器:
- mozjpeg —— 用于 JPEG 输入,以及「不带透明的 PNG」自动转换。靠 trellis 量化,稳定地比浏览器自带编码器和 Photoshop 的「存储为 Web 所用格式」在同等画质下再小 10–20%。
- oxipng —— 用于真正带透明的 PNG。无损的 DEFLATE 重优化,多轮滤波。一个 1 MB 的 PNG 图标集通常能压到 700–800 KB;数据比特级不变,只是打包得更紧。
- libwebp —— 用于 WebP 输入。WebP 本身已经很高效,但按指定质量目标重新编码,仍能再削 20–40%。
这三个编码器都编译成了 WebAssembly,完全在你的浏览器标签页里运行 —— 没有服务器、不上传、无遥测。你不用关心它们的名字或原理,拖文件进去就行:Zebra 会根据格式和内容自动挑对编码器,你只需要在轻度、中等、强力三档里选一档。
自动模式:安全时 PNG → JPEG
大多数「PNG」文件其实根本不需要是 PNG。人们以为「无损 = 画质更好」就把照片存成 PNG,结果得到一个 4 MB 的文件,而一个 400 KB 的 JPEG 看起来一模一样。这是最常见、也最容易一次性省下大体积的误区 —— 光是把一张误存成 PNG 的照片转回 JPEG,往往就能砍掉八九成体积,而画质毫发无损。
Zebra 会检查你拖进来的每一个 PNG:如果它的 alpha 通道完全不透明(没有透明区域),就把它重新编码成 JPEG。对这种「照片 PNG」,这是一次 5–10 倍的体积缩减,而且看不出差别。如果 PNG 真的用到了透明(UI 稿、图标、贴纸),它就保持 PNG —— Zebra 会无损地重优化它,不碰 alpha 通道。判断的依据是文件本身有没有真正用到透明,而不是它叫什么后缀,所以你不会遇到「明明是图标却被转成 JPEG、透明背景变成白块」这种事。
你不用自己选。把文件拖进去,我们替你走对路径。顺带一提,如果你拖进来的是 iPhone 的 HEIC 照片,同一套流程也会把它转成随处可开的 JPG —— 格式转换只是重新编码的一个副产物,具体可以看 HEIC 转 JPG 专题。
轻度、中等、强力
三档预设对应不同的质量目标:
| 预设 | JPEG 质量 | WebP 质量 | PNG 优化级 | 典型节省 |
|---|---|---|---|---|
| 轻度 | 88 | 88 | 2 | 30–50% |
| 中等 | 78 | 78 | 4 | 60–80% |
| 强力 | 65 | 65 | 6 | 80–95% |
轻度(质量 88)在任何正常屏幕上都和原图看不出区别。适合要打印或要放大看的照片,或者你只是想去掉元数据、把编码收紧一点。
中等(质量 78)是默认档。输出足够清晰,A4 打印没问题,在 Retina 和手机上和原图无从分辨。除非有特别理由,就选它。
强力(质量 65)在你放大到 200% 以上时,平坦区域(天空、墙面)会出现可见的瑕疵,但对邮件、网页分享、聊天这类「体积比抠像素更重要」的场景非常合适。
为什么什么都不离开你的设备
大多数免费压缩工具 —— TinyPNG、Compressor.io、ImageOptim Online —— 都会把你的文件上传到它们的服务器。这个模式有实实在在的代价:
- 你的图片落在别人的硬盘上。 就算承诺「24 小时内删除」,也存在一个保留窗口。对证件照、私聊截图、或任何涉及机密的东西,那个窗口就是不该有的窗口。
- 你要传两倍的流量。 上传到服务器,再从服务器下载。在手机上,这就是最慢的一环。
- EXIF 元数据跟着文件一起走。 你手机里的 GPS 坐标烤进了 JPEG 头部;你一上传,服务器也读到了。
Zebra 把现代图像编码器作为 WebAssembly 模块在你的浏览器标签页里运行。图片在本地被解码、重新编码、重新打包。没有网络请求,没有保留窗口。页面加载完之后就算断网,压缩照样能用。
对大多数人来说,平时压张图发个朋友圈,上不上传其实无所谓。但有几类图片,「有没有经过别人的服务器」是实打实要紧的:身份证和护照照片、银行卡截图、合同和发票扫描件、私聊记录、还没发布的设计稿。这些东西一旦上传,哪怕对方承诺 24 小时删,也已经在别人的磁盘上待过一段时间。浏览器本地压缩从根上避开了这个问题 —— 文件压根没离开过你的电脑。
为什么同样质量,Zebra 的文件更小
「不都是 JPEG 吗,能小到哪去?」区别在编码器。浏览器自带的、以及很多老工具用的 JPEG 编码器,选的是保守、快速的编码策略。Zebra 用的 mozjpeg 带 trellis 量化 和 渐进式扫描:它会更聪明地决定「哪些数据值得留、哪些可以扔」,在你指定的同一个质量档下,把文件再压小 10–20%,而画质不变。
对 PNG 也是同理:oxipng 做多轮滤波和 DEFLATE 重优化,比常规导出打包得更紧,而且是无损的 —— 数据比特级不变,只是排列更省空间。所以「同一张图、同样的画质,更小的文件」不是玄学,是编码器选得更好。
在手机上压图
不用装 App,手机浏览器就能压。在 iPhone 的 Safari 或安卓的 Chrome 里打开压缩工具,点上传、从相册选图,选中等,压完直接存回相册或分享出去。iOS 16 及以上的 Safari 完整支持这套 WebAssembly 编码器,一张 1000 万像素的照片在 iPhone 13 或更新机型上 2–4 秒就压完,比先传到某个网站、再等它压完传回来快得多,也不消耗流量。
因为处理全在本地,手机压图有个额外好处:即使在信号很差、或者干脆没网的地方(地铁、飞机、山里),只要页面之前加载过,压缩照样能用。这对「现在就要把这几张图发出去、但网卡得要命」的场景特别救急。
JPG vs PNG vs WebP — 压完该存成哪种
压缩之后,该保存成什么格式的一个简易判断:
- 真实场景的照片、不需要透明? 存 JPEG。质量 78–85 对除了印刷以外的一切都绰绰有余。
- 带透明的照片(少见,通常是抠图)? 受众用 2022 年后的浏览器就存 WebP,否则用 PNG 保底。
- UI 截图、图标、logo、任何带清晰文字的东西? 存 PNG。JPEG 在文字周围产生的振铃瑕疵又丑又没法修。
- 动图? 存 WebP(或为极老的兼容性存 GIF)。
- 现代网页、浏览器全支持? 一律 WebP。
关于 WebP 多说一句:它在同等画质下通常比 JPEG 再小 25–35%,是目前网页配图的最优选。唯一的顾虑是极老的浏览器和某些老旧的软件不认它 —— 但 2020 年之后的浏览器基本都支持,所以只要你的受众不是在用十年前的设备,网页和现代 App 里 WebP 都是省体积的首选。给别人发文件、要保证「谁都能打开」时,再退回 JPG 保底。
简单记:能控制打开环境(自己的网站、现代 App)就用 WebP,要发给不确定环境的人就用 JPG,带清晰文字或图标就用 PNG。 Zebra 会尊重你拖进来的格式,同时在安全的情况下(照片型 PNG)替你自动转成更省的 JPEG。
什么场景该用哪一档
预设不用背,但知道几个典型场景能省不少纠结:
- 发微信、发朋友圈、发聊天群。 用中等就好。对方在手机屏上看,根本分不出和原图的区别,而体积能小一大截,发得更快、也不容易被平台二次压糊。
- 上传到有大小限制的表单。 报名系统、政务门户、招聘网站常有「照片不超过多少 KB」的硬限制。先压中等,不够再压强力,基本都能压进去。
- 网站和博客配图。 图片是拖慢网页加载的头号原因。正文配图用中等甚至强力,首屏大图用中等,能明显提升打开速度。存成 WebP 还能再小一截。
- 邮件附件。 一封邮件塞十几张原图很容易超限。压强力再打包,附件体积立刻降下来。
- 要打印或归档的照片。 用轻度,或者干脆保留原图。这类场景画质优先,别为省几百 KB 牺牲细节。
一句话:屏幕上看的用中等,要打印的用轻度,只图体积最小(邮件、聊天)的用强力。
压缩、裁剪、去背 —— 顺序怎么排
压缩很少是唯一一步,它通常和别的处理搭配。一个顺手的顺序:
- 先裁剪,再压缩。 如果只是想让图适配某个社交比例,更聪明的第一步往往是裁剪而不是降质量 —— 裁掉多余的部分,像素少了,文件自然就小了,画质一点不损。
- 先修图,再压缩。 要调色、加滤镜或去背景,都在全质量的原图上做完,压缩永远放最后一步,避免在已经压过的图上反复重编码累积损失。
- 压缩永远对副本做。 母版留着全质量,压出来的是给分享、上传、发送用的副本。
什么时候不该压
- 要继续编辑的母版。 原图保持全质量,压副本。
- 本来就很小的文件。 200 KB 以下通常不值得压 —— 重新编码的开销可能比省下的还多。
- 带清晰文字的截图。 JPEG 的振铃瑕疵会毁掉文字。保持 PNG —— Zebra 会无损地重优化它。
- 要 A3 或更大尺寸打印的东西。 停在轻度,或者干脆别压。
Zebra 还会检测「重新编码反而变大」的情况(已经优化过的 PNG、本来就低质量的小 JPEG),这时它会把原文件原样还给你,而不是假装帮你压小了。
说到底,压缩的目标不是「越小越好」,而是「在你看不出差别的前提下尽量小」。屏幕上看的图,中等档几乎永远是对的答案;真正需要每一个像素的场景(印刷、归档、后期母版),就该保留全质量。分清这两类需求,你既不会传出一堆臃肿的大图,也不会为了省几百 KB 毁掉一张要打印的照片。