为什么要做 png 转 webp
几乎总是为了页面体积。PNG 是无损的,这在你还在做图的时候正是你要的,而在线上页面上正是你不 要的。一张存成 PNG 的首屏大图轻松就 3 MB,同一张图存成 WebP 是 300 KB,而访客能看到的任何 尺寸下两者都一模一样。
WebP 是那个让你做成这笔交易、又不用交出透明通道的格式。历史上的难题就在这里:JPEG 小但是压 成实心的,PNG 保住 alpha 通道但很重,没有一个选项能两头都要。WebP 两头都要得到。
"浏览器不支持"已经不是理由了
这曾经是反对意见,现在过时了。Chrome 2010 年就上了 WebP,Firefox 2019 年,Safari 是 2020 年 的 14 版,也就是覆盖到 iOS 14 及以后;Edge 从 Chromium 那边直接继承。
实际结果是:现役的浏览器全都读得了 WebP。剩下的支持缺口在桌面软件那边,而不在浏览器——这和 AVIF 的情况正好反过来,也是今天做网页输出时 WebP 更稳的原因。
质量档位,以及什么时候别动它
这个滑块控制的是一个有损编码器,所以 100% 并不等于原文件。默认的 92% 下,大多数图片和 PNG 左右并排都分不出来,而体积上该省的已经省掉了绝大部分。
有一类情况需要留神:大面积纯色带硬边的图形、文字截图、以及像素画。任何有损压缩都会在高对比 边界上留下淡淡的振铃,在截图里这是看得见的。这类内容要么把质量推到 100%,要么就留着 PNG。
母版别扔
因为输出是有损的,WebP 是发布产物,不是工作文件。下次需要新尺寸时从 PNG 重新转一遍,不要拿 WebP 接着改,否则会把一代又一代的压缩叠在一起。
本机、私密、不排队
转换用的是你浏览器内建的 canvas 编码器。什么都不会被发出去,这也意味着批量的唯一上限就是你 自己的机器。