先说翻车现场
上个月帮朋友处理婚礼跟拍的200张精修,原图是索尼A7M4拍的,6000x4000、24MP,单张JPEG 18-25MB。我图省事,先丢进TinyPNG免费版,结果它单张限5MB、一次最多20张,我分批传了10次;压完在27寸显示器上看,新娘肤色发灰,婚纱蕾丝边缘糊成一片。后来用Photoshop“导出为”勾了“转换为sRGB”,长边2048、质量82,同一张图体积从22MB降到1.6MB,肤色和蕾丝都保住了。我才意识到:批量压缩翻车,十有八九不是压缩率太高,是色彩空间和锐化没管。在线工具只帮你砍体积,不帮你统一输入。
我对比的5个工具,说点具体数字
| 工具 | 批量能力 | 我测的参数 | 200张耗时 | 坑 | | TinyPNG免费版 | 一次20张、单张5MB | 默认无损/有损 | 约15分钟含上传 | 会二次压缩JPEG,EXIF常被清 | | Squoosh | 浏览器单张为主 | AVIF质量50 | 没法正经批量 | 200张时Safari内存到1.8GB崩了一次 | | ImageMagick | 命令行批量 | 质量82、长边2048、锐化0.5x0.5+0.5+0.008 | 38秒(i5-12400) | mogrify默认覆盖原图,必须先备份 | | Photoshop动作 | 批量动作 | 质量82、转sRGB、长边2048 | 约6分钟 | 动作录错一步就全错 | | Sharp脚本 | Node并发4 | AVIF质量50+JPEG质量82双输出 | 22秒 | 要装Node环境,新手门槛高 |
我的独立观点:在线工具适合3-5张应急,不适合200张;浏览器工具最大的问题不是画质,是不可复现。你这次传20张、下次传50张,参数根本记不住。命令行丑,但能写进脚本,半年后还能跑出一样的结果。
我现在用的工作流,参数直接抄
步骤1:先备份原图,别嫌麻烦。用ExifTool读一遍色域和尺寸:exiftool -csv -ColorSpace -ImageSize -FileSize *.jpg > report.csv,重点看有没有Adobe RGB的图混在sRGB里。步骤2:统一转sRGB再缩,命令是magick mogrify -path ./out -profile sRGB.icc -resize '2048x2048>' -quality 82 -unsharp 0.5x0.5+0.5+0.008 *.jpg。注意>只缩不放,小图不会被拉大。步骤3:输出文件名加_web,原图不动;抽查用magick identify -format '%f %wx%h %b' *.jpg。参数上,微信/网页长边2048、质量82够用;电商主图我改成长边1200、质量85,白底要单独加一步去灰。别迷信AVIF,Chrome 85+和Safari 16.4+才支持,给客户交付我一般JPEG+WebP双份,用<picture>回退。
最后说几个我踩过的坑
第一,很多在线压缩会剥离EXIF版权信息,我有次压产品图,客户发现版权字段没了,差点退款;要保留就用ExifTool的-tagsFromFile。第二,别追求“压到100KB”,婚纱照压到100KB在手机上看还行,放到27寸显示器上肤色断层很明显。第三,批量处理前先拿3张不同场景试参数:室内暖光、室外逆光、白底产品,三张都过了再跑全量。我现在更信“输入一致性”而不是“压缩率90%”,工具收藏了100个不如把一套参数写成脚本。朋友那200张最后按上面的流程重跑,总输出从4.8GB降到310MB,打印6寸和朋友圈发图都没问题。