内容站、公众号导出和 WordPress 迁移经常会碰到一堆图片。直接上传原图,页面慢;直接批量覆盖,又怕压坏、漏图或耗完 API 额度。图片压缩要做得稳,关键是先统计、再分批、最后保留失败清单。
TinyPNG 这类云端压缩服务适合处理 PNG 和 JPEG,但不处理 GIF,也需要 API Key。Key 不应该写进仓库或脚本默认值,只放在当前终端环境变量或本机私有配置里。
压缩前先跑统计
第一步不要马上压缩,先统计目录里有多少 PNG、JPEG、GIF,各自总大小是多少。很多时候真正拖慢目录的是 GIF,而压缩脚本根本不会动它。先看清楚体积结构,后续判断才不会偏。
如果目录来自公众号导出,建议先备份或确认 Git 能追踪变化。默认原地覆盖虽然方便,但出问题时要能恢复。
文件多时必须分批
几十张图片一次性压缩,网络抖动、额度限制、单张异常都可能让结果不清楚。分批处理更适合可续跑:比如每次 20 张,失败文件单独重试。
压缩日志至少要包含文件名、压缩前字节、压缩后字节和压缩比例。成功就是成功,失败就是失败,不要只打印一句“完成”。
压完后再核对目录
压缩完成后再跑一次统计,确认总体积确实下降。已经压过的图片重复压缩收益通常很小,还会浪费额度,所以不要把二次压缩当常规动作。
如果这些图片要进入 WordPress,还要继续检查文章里的相对路径是否仍然正确。压缩只改变磁盘文件,不应该顺手改 Markdown 链接。
批量工具的好坏,不在于一次能跑多少文件,而在于失败后能不能知道哪几张没处理、为什么没处理、下一次从哪里继续。
正文完




