为什么使用WebP格式后图片在移动端显示模糊,该怎么解决?
我在项目里用WebP格式压缩图片,发现手机端显示的图片边缘特别模糊,这是为什么?
之前用这个JS脚本自动替换图片格式:
document.querySelectorAll('img').forEach(img => {
const src = img.src.replace(/.(jpe?g|png)$/, '.webp');
img.src = src;
});
测试时发现iPad Pro的图片文字边缘锯齿严重,而电脑上看没问题。尝试过加了但没效果,是不是需要调整压缩参数?或者WebP在移动端有特殊设置?
建议把图片转换逻辑移到后端处理,这样可以精细控制压缩参数。比如用Node.js可以这样写:
重点是quality参数,移动端建议设为85以上,lossless设为false即可,不要盲目追求压缩率。如果图片中有文字或图标,WebP的有损压缩会对边缘做平滑处理,造成锯齿感。这时候可以考虑用PNG格式或者开启sharp的
effort参数提升压缩质量。另外iOS系统对WebP兼容性比安卓差,有些老版本系统根本不支持。建议后端加个UA判断,对iOS设备返回PNG格式,或者前端JS检测User-Agent再决定是否替换为WebP: