先讲个事
上周帮朋友弄一批商品图,217 张,手机拍的,他之前用某个在线工具一张一张传,传了快三个小时,中间还断了两回网。我接手的时候看了一眼他处理好的文件——长边 3000px,单张 1.8MB,网页上根本用不到这么大。
真正的问题不是他工具选错了,是他一开始就把原图裁成了 3000px,等到要传的时候舍不得再压,怕缩了看着不清。我那天用 mogrify 跑了一遍,217 张,40 秒,总体积从 390MB 掉到 31MB。他盯着屏幕看了半天,说这也太糊弄人了吧。不糊弄,肉眼看不出差别。
所以这篇想说的不是「哪个软件好用」,而是图片加工的顺序问题。顺序错了,后面每一步都在给前面擦屁股。
我管它叫倒推式加工
大部分人修图的流程是:拍/拿到原图 → 调色修瑕疵 → 导出的时候才想「要多大」。这是正向流程,也是返工率最高的流程。
我现在的习惯是反过来:动手之前先确定交付规格——交付到哪、长边多少像素、什么格式、什么色彩空间、允许多大体积。这五个数定死了,再回头看原图该怎么裁、该保留多少细节。
听着像废话,但实际差别很大。比如你要投的是公众号头图,封面图 900×383,正文插图长边 1080,那修图的时候完全不用管暗部噪点——缩到这个尺寸噪点自己就没了。反过来你要交付的是可点开看大图的电商详情页,长边 2000,那暗部噪点和轻微的手抖就得老老实实处理。
这个思路还有一个副作用:你会开始嫌弃自己拍得不够大。因为你知道有些细节一旦缩下去就回不来了,而有些细节根本不重要。
三个最常见的顺序错误
第一个,先锐化后缩放。 这个错的人最多。锐化的本质是增强边缘对比度,你锐化完再降采样,那些被强化过的边缘会被重新计算一次,结果就是白边、锯齿、细密纹理变成麻点。正确顺序永远是先缩放到目标尺寸,再做一次轻锐化,ImageMagick 里就是 -resize 后面跟 -unsharp 0x1,半径给 0.5 到 1 之间,量给 0.5 到 0.8。别贪多,过度锐化比不锐化难看十倍。
第二个,先转格式后调色。 特别是从 HEIC 或者 RAW 转出来的时候。有些转换器默认给你转成 sRGB 并且顺手压一次,你再在上面调色,色彩断层就出来了。正确做法是在色彩位深足够(16bit 或者至少 8bit 无压缩)的状态下调完,最后一步才转色彩空间和格式。
第三个,反复另存。 JPEG 是有损的,每存一次就重新量化一次。一张 q90 的图存五遍,和存一遍再压到 q90,画质差得肉眼能看出来,尤其在渐变天空这种区域会出现色带。所以批处理要一次到位,别分好几轮。
顺带提一句色彩空间:网页和大多数 App 只认 sRGB。你把 Adobe RGB 的图直接丢上去,浏览器不读或者读不懂那个 ICC,颜色会发灰发淡,红的能给你偏成砖红。这个坑我踩过,当时以为是显示器的问题,折腾了一下午。
实测体积,以及一条能直接跑的命令
拿一台普通安卓手机拍的 4000×3000 JPEG 做样本,四组参数:
| 处理方式 | 长边 | 体积 |
|---|---|---|
| 原图 q92 | 4000 | 约 3.2 MB |
| JPEG q82 + strip | 1600 | 约 210 KB |
| WebP q80 | 1600 | 约 130 KB |
| AVIF q55 | 1600 | 约 85 KB |
AVIF 体积最好看,但编码速度是 WebP 的五六倍,200 张图能让你等到怀疑人生,而且部分老设备兼容性还有问题。我的建议是:通用场景用 WebP,兼容性有硬要求的才退到 JPEG q82。
那条命令长这样,Windows 上装了 ImageMagick 之后在图片目录里开 PowerShell 就能跑:
mogrify -path ./out ^
-auto-orient ^
-resize '1600x1600>' ^
-colorspace sRGB ^
-strip ^
-quality 82 ^
-interlace Plane ^
*.jpg
-auto-orient 是按 EXIF 里的方向信息把图转正,这个千万别省,不然一堆竖拍的照片出来全是躺着的。-strip 是删掉所有元数据,包括 GPS、相机型号、拍摄时间。这一条能省 2 到 30KB 不等——有些手机照片的 EXIF 里嵌了缩略图,能占二十多KB,比它该有的体积还大。
要是你想保留版权信息只删 GPS,用 exiftool:exiftool -GPS:all= -overwrite_original *.jpg。
还有一件事,关于那个 72dpi。经常有人问导图要不要设成 72。答案是不用,导出时的 DPI 只是个元数据标记,只影响打印软件读到的默认尺寸,网页和 App 根本不看这个数。真正决定清晰度的只有像素数。别在这上面浪费时间了。
工具怎么选
说几个我用过或者见过的。
ImageMagick:命令行,批处理能力最强,免费。Windows 安装的时候记得勾选 legacy utilities,不然后面有些老命令找不到。缺点是参数多,写错一个符号它不报错但是结果不对,我第一次用 -resize 1600x1600 没加那个大于号,结果小图被强行放大了一倍,一堆模糊的图混在里面,发现的时候已经上传了。
XnConvert:图形界面,跨平台,免费,支持拖拽加动作链,适合完全不想碰命令行的。界面设计得……怎么说呢,有点九十年代的感觉,但功能是真的全。
Lightroom 导出预设:如果你已经有 LR,直接用它的导出面板就行,能存成预设,一下午几百张没问题。缺点是它绑定在你的工作流里。
sharp(Node)或者 Pillow(Python):如果你要把图片加工嵌到自己的脚本或者网站后台里,用这俩。sharp 处理速度比 Pillow 快不少,尤其中等尺寸的图,内存占用也低。
手机端的话,iOS 有快捷指令可以批量压缩,安卓上各种相册 App 也都带了,但批量重命名和色彩空间这块基本做不了。
最后一条反直觉的
很多人觉得自己手机拍的照片糊,其实不是拍糊了,是转换的时候被坑了。HEIC 转 JPEG 如果按默认参数走,有些工具会给你压到 q70 甚至更低,再加上一次降采样,细节就没了。如果你拿到的图本身就有点糊,先别急着上放大算法,检查一下它是不是已经过了好几轮压缩。
放大这块我用过 waifu2x、Real-ESRGAN 和 Topaz Gigapixel。Topaz 效果最稳但收费,waifu2x 对插画类特别好但对真实照片一般,Real-ESRGAN 免费但要自己配环境,对显卡还有点要求。不过说实话,这仨都没法凭空造出不存在的信息,一张真的糊掉的图,放大之后也就是一张大的糊图。
所以还是那句话——顺序对了,后面省一半力气。顺序错了,再好的工具也是在收拾烂摊子。