上周有人发来一个文件夹:312 张商品图,尺寸从 800×800 到 5472×3648 不等,格式有 JPG、PNG 还有几张 HEIC。平台要求 1600×1600 的 JPG,不超过 2MB。另一个常见版本是博客搬家:两百多张 PNG 配图,要统一转成 WebP 并把宽度限制在 1600 以内。这两件事看起来不同,做法其实是同一条流水线。
为什么分开跑会伤画质
最直觉的做法是:先用缩放工具把尺寸改好、下载;再用转换工具改格式、下载;最后用压缩工具压体积。三步都能批量,但每一步结束时文件都要重新编码一次。JPG 是有损格式,每编码一次就丢一点信息,三次下来放大看边缘已经有明显的色块和毛边。
正确的做法是只在最后编码一次:图片解码成位图后,缩放、裁切、转格式都在内存里进行,直到最后一步才按目标格式和质量写出文件。批量图片处理就是按这个思路设计的——六个步骤固定顺序,中间没有任何有损环节。

场景一:三百张商品图上架
目标:1600×1600、JPG、不超过 2MB、右下角带店名。按步骤设:
- 尺寸:选「填满 1600×1600」。长图和竖图会先缩到刚好覆盖这个框。
- 裁切比例:1:1。超出正方形的部分从中间裁掉,主体居中的商品图不受影响。
- 水印:打开,文字填店名,位置右下,大小 4%,不透明度 50%。
- 输出:JPG,质量 85%,文件名选「重命名为 名字-001」,前缀填 SKU 或品类名。
312 张图在一台普通笔记本上大约三到四分钟跑完,结果都在 200KB 到 600KB 之间,远低于 2MB 的上限。几张 HEIC 原图直接被读进来,不用先转一遍。打包下载的 ZIP 里文件名整整齐齐,上传到后台不用再改名。
如果有些商品图主体明显偏在一侧,居中裁切会切掉它们。这种图挑出来,用图片裁剪手动框一下,再单独跑一遍流水线。一批里这种图通常不到一成。
场景二:博客图库整体换成 WebP
目标:所有配图转 WebP,宽度不超过 1600,截图类保持清晰。设置比上一个场景更简单:
- 尺寸:选「宽度 1600」,关掉「允许放大」。本来就不到 1600 宽的图不会被动。
- 输出:WebP,质量 80%。
- 文件名:保留原名。这样文章里的引用只需要把扩展名从 .png 改成 .webp。
两百张 PNG 转完一般能省 70% 以上的体积。要注意的只有一种图:带透明背景的 Logo 和图标。WebP 支持透明,流水线会保留透明通道,不用担心;但如果你的目标是 JPG,透明区域会被填成白色,这类图应该留在 PNG。
转换完之后用图片格式转换随手检查两张在旧浏览器里的兼容性,心里更有底。
「填满」「装进」「最长边」怎么选
缩放方式是最容易选错的一项,三种常用模式各管一种场景:
- 最长边:只关心图不要太大,不在乎比例。网页配图、相册分享用它。
- 装进 宽×高:整张图必须完整放进一个框里,不裁切,可能有一边留空。缩略图、幻灯片用它。
- 填满 宽×高:框必须被铺满,多出的部分裁掉。电商主图、头像、固定比例的卡片图用它,通常和「裁切比例」配合。
一个简单的判断:平台给的是「不超过多少像素」,用最长边或装进;平台给的是「必须是多少×多少」,用填满。
跑之前的两个检查
第一,看实时预览。流水线会把第一张图按当前所有设置实时渲染出来,水印位置、裁切是否切到主体、颜色有没有变,在这里一眼能看出来。确认了再点「全部处理」,不要处理完三百张才发现店名打在了商品上。
第二,留一份原图。流水线不会改动你的原文件,但重新编码后 EXIF 和拍摄信息就没了,打包下载前确认原图还在别处存着。需要清掉定位信息的照片这反而是好事,详见EXIF 元数据是什么、为什么要删。
批量改尺寸和格式的核心就一句话:设置一次,整批跑完,中间不要落盘。其余的变化,都只是三个缩放模式和两个输出格式之间的选择。
