图片加工怎么不糊?我把顺序搞反了三年,才明白要先定交付规格

关键词:图片加工,批量压缩,WebP转换,图片处理顺序,EXIF剥离

摘要:一篇有点啰嗦但很具体的图片加工经验:为什么大多数人把处理顺序搞反了,一批217张商品图的实测体积数据,以及一条能直接跑的 ImageMagick 批处理命令。

先讲个事

图片

上周帮朋友弄一批商品图,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 免费但要自己配环境,对显卡还有点要求。不过说实话,这仨都没法凭空造出不存在的信息,一张真的糊掉的图,放大之后也就是一张大的糊图。

所以还是那句话——顺序对了,后面省一半力气。顺序错了,再好的工具也是在收拾烂摊子。

标签: