先说一件让我有点无语的事
去年帮一个做饰品的朋友处理店铺图。她拍照挺讲究,索尼 A7M3,一张原图 20 多 MB。传到平台上老是失败,提示图片过大。她的解决办法是微信发给自己再保存——微信会把它压到 200KB 左右。压完糊得连小吊坠的纹理都看不出来了。
我拿原图重新跑了一遍,同样的视觉质量,压到 380KB,清晰度还比微信版本高一截。她当时的表情就是「原来还能这样」。
这事说明一个问题。大部分人听到「图片加工」,脑子里第一反应是美颜、滤镜、抠图。但真实的日常需求里,审美向的操作可能只占一成多。剩下八成全是脏活:改尺寸、转格式、压体积、批量改名。这些活不需要审美,需要的是知道参数在哪。下面这三件事,我觉得是图片加工里最容易翻车的。
尺寸:PPI 是个骗局,别被它骗了
很多人拿到图先看分辨率,Photoshop 打开一看 72 PPI,觉得太低了,赶紧改成 300。改完发现文件大小没变,像素数量也没变,什么都没变。
因为 PPI 只是个打印用的元数据标签,它描述的是「这张图打印出来每英寸放多少个像素」,不改变图像本身。真正决定清晰度的是像素尺寸:1920x1080 就是 1920x1080,标 300 PPI 还是 72 PPI,屏幕上看都一样。
那什么时候要管像素尺寸?看投放渠道。亚马逊要求主图长边至少 1600 像素,到了这个数才有鼠标悬停放大的功能,低于这个数放大功能直接不给你开。淘宝主图建议 800x800 以上,比例 1:1,最大 3MB。小红书的竖图是 3:4,1242x1656 那一档最稳。
如果只知道「改尺寸」,直接 Resize 拉大,800 像素拉到 1600 像素,边缘会发虚。正确做法是找原始大图重新导,或者用 AI 超分工具补。Photoshop 的「保留细节 2.0」在 2 倍以内还算能用,超出 2 倍就明显有涂抹感了。改尺寸时还要注意别改变宽高比,ImageMagick 里 -resize 1600x1600 和 -resize 1600x1600\> 是两个意思,后者那个大于号表示只缩小不放大,批量处理时能省掉不少意外拉伸的麻烦。
格式:别默认选 JPEG
格式这件事很多人是跟着感觉走的。截图存 PNG,照片存 JPEG,完事。但实际场景比这个复杂。
我用一组 2400x1600 的商品图做过对比测试,同一张图不同输出:JPEG 质量 90 是 418KB,JPEG 质量 85 渐进式是 296KB,WebP 质量 85 是 212KB,AVIF 质量 60 是 168KB。肉眼在 100% 缩放下几乎看不出差别。放到 200% 看,AVIF 的边缘会有一点点平滑,JPEG 质量 85 的细节保留反而更好一点。
所以结论不是「用最新的格式就好」。要看用途。如果是网页,WebP 现在主流浏览器都支持了,比 JPEG 省 25% 到 35% 的体积,直接上。AVIF 更省,但编码慢,老设备解码也有开销,一般用在首屏大图。如果是投稿给平台或者发给甲方,老老实实 JPEG,很多审核系统和 OA 系统对 WebP、AVIF 的支持并不好,发过去打不开反而耽误事。如果是带文字的截图、界面图、logo,用 PNG 或者 WebP 无损,JPEG 处理文字边缘会产生彩色噪点,这个很常见。
还有一个被忽略的操作:去掉 EXIF。照片里的 GPS 位置、相机型号、拍摄时间都藏在这里面,既涉及隐私也占体积。一张 iPhone 拍的图,EXIF 大概有 15 到 30KB,批量 -strip 一下,几百张图能省出几 MB。
批量:三个命令解决九成问题
处理单张图,任何工具都能干。真正的效率差距在批量。我现在的流程基本是三步,用 ImageMagick 命令行。
第一步,统一尺寸并且只缩不放:
magick mogrify -path ./out -resize 1600x1600\> -strip *.jpg
那个反斜杠是防止 shell 把 > 当成重定向。第二步,转 WebP:
magick mogrify -path ./webp -format webp -quality 82 *.jpg
第三步,检查有没有漏网的超大文件:
find . -size +500k -name "*.jpg"
三行命令,1000 张图大概跑两分钟。比起开 Photoshop 批处理、设置动作再导出,这个流程省时间的地方在于不用点鼠标。不想碰命令行的话,XnConvert 是免费里比较好用的,支持拖拽、批量改名、批量加水印。Squoosh 是 Google 出的网页工具,适合单张调参,但没有批量功能。Pillow(Python)适合要写脚本的场景,Image.open().resize() 加 save(optimize=True),代码量也不大。
最后提醒一句
压缩完一定要抽样看几张,别全靠脚本跑完就交差。我遇到过一次,一批图里有几张是 CMYK 色彩模式的,转成 WebP 之后颜色整个偏了,蓝色变成紫色,那个是我自己没检查,重新导出才发现的。
还有个顺序问题:先改尺寸,再转格式,最后压质量。反过来先压质量再放大,等于把损失放大了一遍。这个顺序搞反了,画质掉的不是一点半点。