上周给客户发一批产品图,一共32张,每张RAW导出JPEG后大概4.8MB。
邮箱附件限制25MB,我打包成ZIP还是1.5GB?不对,32乘4.8是153.6MB,压缩包顶多变成140MB,还是超。
于是开始压缩。先试了Photoshop“存储为Web所用格式”,质量拉到60,文件变成800KB,但放大看边缘有锯齿,产品上的小字“保修两年”糊了。
后来用Squoosh,选MozJPEG,质量75,文件只有420KB,画质肉眼几乎没差。
但透明背景的LOGO变成了白底,因为JPEG不支持透明。折腾了一下午,总结出几个关键点。
很多人一上来就问“怎么压缩到200KB”,其实先看格式。
JPEG适合照片,不支持透明;PNG适合图标、截图,支持透明但体积大;WebP两者兼顾,比JPEG小25-35%,但老版IE和部分安卓模拟器不支持。
我测了一张1920x1080的风景照:原图JPEG质量90是2.4MB,转成WebP质量80是1.1MB,转回JPEG质量80是1.6MB。
所以WebP确实能打。但如果你要发到微信朋友圈,微信会自动压缩,你传WebP可能被转成JPEG,反而多一次损失。
我的建议:发给客户或上传网站用WebP,发微信直接用JPEG质量80。
在线工具我试了TinyPNG、iLoveIMG、Compressor.io。
TinyPNG免费版一次最多20张,每张不超过5MB,压缩率不错但会丢元数据。
iLoveIMG可以调质量,但免费版有广告,处理速度慢。
Squoosh是Google的,离线也能用,参数最全:可以调压缩率、颜色质量、降噪、锐化。
我常用设置:MozJPEG质量75,渐进式,勾选“优化”;WebP质量80,方法6。还有个命令行工具ImageMagick,一行命令:magick input.jpg -quality 75 -resize 1920x1080> output.jpg,注意那个>是只缩小不放大。批量处理用mogrify,但记得先备份。
如果你要压缩到200KB以内,单纯调质量可能不够。
比如一张4000x3000的图,质量75还要1.2MB。
必须先缩尺寸:长边1920px,72dpi,再压质量。
我试了:4000x3000原图质量90=5.6MB,缩到1920x1440质量80=680KB,再降到质量70=420KB。
要200KB?继续缩到1280x960质量70=210KB,但打印就废了。
所以看用途:网页展示1280px够,手机看1920px够,印刷必须300dpi。
另外,不要反复保存JPEG,每保存一次就损失一次画质。我有个朋友把图压了5次,最后人脸像油画。
最后,透明背景的图别转JPEG,用PNG-8或WebP,否则透明区域变黑或白。