图片加工批量处理踩过的 7 个坑:我从 8000 张电商返工图里整理出的参数清单

关键词:图片加工,图片批量处理,JPEG压缩,图片格式转换,色彩空间

摘要:做过 8000 多张电商图返工之后总结的图片加工参数清单:dpi 的误区、JPEG 反复保存的损失叠加、sRGB 转换、锐化顺序、ImageMagick 和 Squoosh 批量命令,以及 JPEG/WebP/AVIF/PNG 的实测体积对比。

去年双十一前一周,客户运营在群里甩了条消息:所有主图从 1200×1200 改成 800×800,白底,后天中午前要。我手上这个家居品牌有 3400 个 SKU,每款 4 张图。第一反应是打开 PS 录个动作批处理,全选、图像大小、存储为 JPEG 质量 60、覆盖。跑完大概 40 分钟,2.1GB 变 380MB,看着挺美。结果第二天运营说"图怎么糊了,字边上一圈毛刺"。这就是我交的第一笔学费——图片加工里最贵的成本不是软件,是你不知道自己漏掉了哪一步

下面这些是我这几年反复踩、反复改留下的设置清单。不讲软件推荐,讲参数和顺序。

一、先搞清楚:屏幕只认像素,dpi 是印厂的事

我见过太多人把 72dpi 改成 300dpi 然后兴奋地说"清晰了"。不会清晰的。1200×1200 像素的图,不管你标 72 还是 300,在浏览器里就是 1200×1200 个像素点,物理尺寸只对打印或排版软件有意义。真正决定"糊不糊"的是像素总量和缩放算法。

我的做法:母版永远留最大的那一份,导出时按用途定像素。详情页主图 800×800 或 1000×1000,微信推文封面 900×383,小红书竖图 1242×1660,公众号头图 900×383。把这些尺寸写进 PS 动作或者 XnConvert 的预设里,别每次手动输。

顺带说下采样算法。PS 里"图像大小"下面的重新采样,缩小时选"两次立方(较锐利)(缩减)",这是 PS 里缩小最不容易发糊的选项。别用"邻近(硬边缘)",那是给像素画用的,缩照片会出锯齿。

二、JPEG 是有损的,而且损失会叠加

第一段那个翻车,根子上就在这。JPEG 压缩走的是 8×8 块的 DCT 变换加量化,每次"打开→保存"都会重新量化一遍。一张图来回存 5 次质量 80,画质大概相当于一次性存质量 55 左右。字边缘、细纹理最先崩。

我现在的规矩:母版一律 PSD 或 TIFF(LZW 压缩),或者相机 RAW 转 16bit TIFF;需要发出去的时候从母版一次性导出 JPEG,这次导出的质量参数就是我认可的最高值;已经导出的 JPEG 绝对不再"打开改个字再保存",要改回母版改。

质量参数给几个数:电商主图 85,正文插图 80,缩略图 70,微信聊天随手发的 75。低于 70 开始在大色块边缘出现可见色带(banding),天空渐变特别明显。

三、色彩空间:sRGB 是安全区,别手贱

PS 默认可能给你开 Adobe RGB 或 ProPhoto RGB。这俩色域大,修图时留着有用,能多保留一点高饱和色的层次,但导出时必须转 sRGB。

原因:浏览器和大多数 App 基本按 sRGB 解释颜色。直接丢一张 Adobe RGB 上去,颜色会发灰发闷——同样的数值在 sRGB 里代表的颜色更"浓"。反过来,iPhone 拍的 Display P3 照片直接丢到网页上,某些安卓机型看着过饱和,红得发荧光。

转换动作:编辑 → 转换为配置文件 → sRGB IEC61966-2.1,渲染意图选"相对比色",勾上"使用黑色补偿"。别用"指定配置文件",那是只改标签不转数据,会更乱。导出 JPEG 时记得把 ICC 配置文件嵌进去,不然又白转。

四、锐化的顺序:先缩再锐,不是先锐再缩

顺序错了效果差挺多。先锐化再缩小,锐化出来的边缘会被缩放算法重新采样一遍,白边黑边糊在一起,看着像糊了一层脏东西。

正确顺序:降噪(高 ISO 才需要)→ 调整尺寸 → 输出锐化。PS 里"USM 锐化"我常用的三档:

  • 网页小图(800px 左右):数量 80%,半径 0.6,阈值 2
  • 详情页大图(1500px 以上):数量 60%,半径 0.8,阈值 3
  • 需要印刷的:数量 120%,半径 1.2,阈值 4

半径超过 1.5 基本就是给图加白边了。阈值的作用是保护平滑区域不出噪点,肤色和天空尤其明显,别设 0。

五、批量工具:别一把梭全上 PS

13600 张图用 PS 批处理,我试过,中途内存爆了。后来换组合拳:简单缩放+格式转换+去元数据,用 XnConvert(免费,Win/Mac/Linux 都有,支持 500 多种格式),好处是能导出动作脚本,下次直接跑。

命令行党用 ImageMagick,一条命令吃一个目录:

magick mogrify -path ./out -resize 1200x1200\> -strip -quality 82 -interlace Plane -sampling-factor 4:2:0 *.jpg

拆解一下:1200x1200\> 里的 \> 意思是只缩不放,避免小图被拉大;-strip 清掉所有 EXIF/IPTC 元数据(注意会连 ICC 色彩配置文件一起清,如果原图是 Adobe RGB,得先转 sRGB 再跑);-interlace Plane 是隔行扫描,网页加载时逐层显示;-sampling-factor 4:2:0 是色度抽样,能再省 15% 左右体积,代价是纯红纯蓝边缘有点糊,logo 图别用这个参数。

要更极致的压缩,用 Squoosh 的命令行版:

npx @squoosh/cli --resize '{"width":1200}' --mozjpeg '{"quality":82,"trellisMultipass":true}' --output-dir ./out *.jpg

Squoosh 是 Chrome 团队做的,mozjpeg 是 Mozilla 的 JPEG 编码器,trellis 量化开起来大概能比 PS 同质量省 8%~12% 体积。

插一句翻车记录:我第一次用 mogrify 忘了加 -path,直接把源目录里的原图全改了,-strip 还把拍摄信息一起删了。那晚是从回收站一张张捞回来的。跑任何批量命令前,先拿一个子文件夹试。

六、格式怎么选,我测的一组数据

同一张 1200×1200 的产品照(浅灰背景,一个木制托盘),同一台机器导不同格式,体积大概是这个量级:

格式 质量参数 体积 透明 说明
JPEG 82 ~215KB 全平台,最保险
JPEG 60 ~98KB 背景纯色勉强能看,纹理多的必糊
WebP 80 ~135KB 全平台可用,Safari 14 起支持
AVIF 50 ~78KB Chrome 85+ / Firefox 93+ / Safari 16.4+
PNG-24 ~1.4MB 只在需要无损+透明时用
PNG-8 ~90KB 是(1 位) 图标、纯色文字,最多 256 色

结论别搞太复杂:内容图优先 WebP;追求极致体积且能接受兼容风险用 AVIF;需要绝对无损和高质量透明用 PNG。别再无脑全 PNG 了,一张 2000px 的 PNG 挂首页,首屏能拖慢半秒以上。

七、顺手删掉的元数据

EXIF 里除了拍摄参数,还有 GPS 经纬度、相机序列号、Lightroom 编辑历史,甚至原始文件路径。发到公网前建议清掉,手机拍的尤其注意 GPS——你家地址就在里面。

但有两样别一起删:ICC 色彩配置文件(删了颜色会变)和版权信息(要维权时这是证据)。Lightroom 导出时有"最小化元数据"选项,会保留版权和 ICC 但清掉 GPS 和相机信息,比无脑 -strip 靠谱。ImageMagick 想精细控制得用 -define profile:skip=GPS 这类参数,比 -strip 麻烦但安全。

最后说点主观的

图片加工这件事,工具每隔两年换一批,从 PS 到 Affinity Photo 到各种网页工具,但真正让你少返工的从来不是软件版本,是三个习惯:母版留得住、导出参数写得下来、批量跑之前先小样试。我给自己建了个纯文本的 export-settings.md,每次客户提新尺寸就往里加一行,现在快 60 行了。它比任何一款软件都值钱。

标签: