图片压缩哪家强?我拿28张照片干到10MB,终于看透TinyPNG和Squoosh的猫腻

关键词:图片压缩,TinyPNG,Squoosh,ImageMagick,WebP

摘要:用28张实际照片对比TinyPNG、Squoosh、ImageMagick和cwebp,从压缩率、耗时、画质三个维度说点别人没讲的细节。

上个月整理相机存储卡,发现里面有128张RAW和JPG混着,总共将近6个G。手机微信收图片要压缩,邮箱附件也限20MB,我硬着头皮开始研究压缩。刚开始用的是朋友圈发图前截图,画质糊成马赛克。后来一个玩摄影的朋友甩给我一句:别折腾了,用TinyPNG。我试了,压缩完确实小,可张张上传到人家服务器,心里总不踏实。于是干脆把市面上能说的上名字的都拉出来遛了一圈——TinyPNG,Squoosh,ImageMagick,还有Google的cwebp。

图片

测试样本就是我那28张旅行照片,有云层、建筑、人像、还有一片纯色的夜空。每张原图大概7到12MB之间,总大小约240MB。我统一压成WebP格式,因为微信和Chrome都认这个,而且比JPEG小20%左右。TinyPNG我用的是网页版,单张最大5MB,超过得付费,我把全部照片都缩到5MB以内才传给它的,过程憋屈得很。Squoosh是开源的,装在浏览器里跑,拖进照片就能看实时预览。ImageMagick我用命令行,参数能精确到压缩算法的method级别,比如method=0最快但压得少,method=6最慢但压得狠。cwebp同样,cwebp -q 75 -m 6 input.jpg -o output.webp,-q是质量系数,75是我试了很多次觉得均衡的值。

图片

拿那张夕阳下的云层照片说,原图是4.2MB的JPEG,分辨率5184×3456。TinyPNG压缩后到1.1MB,耗时3.2秒,放大200%看,云层边缘还算柔和,但远处建筑物的窗户有点糊。Squoosh我用的默认优化器,压到1.3MB,只要0.4秒,不过天空从橘红到深紫的过渡出现了明显的色带,就像西瓜皮上那一道白边。ImageMagick用-quality 75 -define webp:method=6,输出1.0MB,耗时0.8秒,细节保留不错,但整体对比度被提得有点过,人脸肤色偏黄。cwebp同参数下1.1MB,0.7秒,放大后噪点最少,可是边缘锐利得不像真实世界,像后期赛博朋克滤镜拉过一样。为了验证不是个例,我又挑了一张人像、一张夜景,结果规律类似:在线工具总是慢半拍,本地工具里Squoosh最快但质量不稳定,cwebp最讲究“清晰”,ImageMagick最听话。

图片

折腾完这一轮,我自己的结论可能和你听说的不太一样。我不在乎你用什么工具,但请你千万别迷信在线压缩——你的照片传上去,等于把原图交到一个不知道在哪的服务器里,而且免费版有次数限制,我压到第21张时直接弹窗要我等一分钟。如果你只发朋友圈,Squoosh够了,它快、免费、完全本地,记得把颜色保留模式选“perceptual”,能减少色带。如果图库量大,超过一百张,就去装ImageMagick,写个循环脚本,把-quality调成75,method调成6,睡一觉起来全好了。要是你的目标用户只用Chrome和Edge,cwebp是性能天花板,但别忽视兼容性——我家老iPad的Safari还是不支持WebP。说到底,压缩就是一场和心理预期的交易,省了多少MB,就得接受多少肉眼可见的损失。别做那个为了180K把照片压出马赛克的狠人,真没必要。

图片