WebP 是 Google 推出的一种图像格式,用来减轻网页加载负担。它的有损模式基于视频压缩格式 VP8 中的静态图像技术,基于“照片本质上就是视频的一帧”的思路;在首次发布后不久,又增加了无损模式、透明度和动画功能。WebP 的目标是覆盖面:用一种格式同时完成 JPG、PNG 和动画 GIF 的工作,而且每种用途都能用更少的字节实现。所有主流现代浏览器都能显示 WebP,这也是为什么从现代网站保存的图片经常是 .webp 文件。
WebP 如何存储其图像
WebP 是由带标签的数据块构成的容器,内部内容决定了文件的行为方式,因为它有两种完全不同的压缩方式:
- 有损 WebP 的工作方式类似视频的关键帧。它根据相邻像素块来预测每个像素块,只保留差值,再把差值转换为频率值并进行近似取整。部分信息会被丢弃,因此有损 WebP 无法还原成原始像素,多次反复保存会叠加损伤,与 JPG 完全一样。
- 无损 WebP 则是完全不同的方法。它在整张图中查找重复的图案和颜色,保留最近使用颜色的小型缓存,并以紧凑的方式编码结果。不会丢弃任何信息,所以它的竞争对象是 PNG 而不是 JPG。
两种模式都可以携带完整的 Alpha 通道 ,因此可以实现部分透明,而且可以把透明部分无损保存、同时对颜色使用有损压缩,这种组合是 JPG 和 PNG 都不具备的。动画则是在同一个容器中的多帧序列,每帧都有自己的时间轴并保留全彩图像,从而消除了 GIF 的 256 色限制。有一个硬性限制需要了解:WebP 在任一方向上的尺寸都不能超过 16383 像素,因此非常大的扫描件或超长全景图将无法保存为 WebP。
WebP 携带哪些元数据
WebP 本身没有发明新的元数据方案。元数据是存储在像素旁边的描述性信息,而 WebP 容器通过可选数据块来保存沿用的各类标准。报告会列出实际存在的那些数据:
- EXIF 数据块,保存与 JPG 中相同的相机信息:
Make、Model、DateTimeOriginal、ExposureTime、FNumber、ISOSpeedRatings、FocalLength、LensModel和Orientation,以及包含经度、纬度和海拔信息的 GPS 分组。 - XMP 数据块,保存 Adobe 的 XML 元数据:作者、标题、说明、关键词、评分、版权声明和编辑记录。
- ICC 配置文件 数据块,用于描述这些数值所属的色彩空间。
WebP 中没有为较早的出版标准 IPTC 预留位置,因此 IPTC 字段只有在转换程序将其改写为 XMP 时,才能在转换为 WebP 后仍然保留。
实际情况是,WebP 文件往往完全不带任何附加信息 。命令行或服务器端编码器如果没有被明确告知要保留元数据,通常会直接丢弃它们,而网站自动处理的图片通常也不会附带任何额外信息。但这并非绝对。如果将手机拍摄的照片通过一个会保留元数据的转换程序生成 WebP,原始的相机型号、拍摄时间和 GPS 坐标就会完整带入 WebP。如果文件本身很重要,请查看报告,而不要想当然地认为转换过程已经清除了所有信息。
何时使用 WebP
在网站上展示图像时使用 WebP,这正是它的设计初衷:在保持相同画面的前提下使用更少的字节,用一种格式同时处理透明图片、照片和短动画。有损 WebP 可替代 JPG,无损 WebP 适合用来替代用于扁平图形的 PNG,动画 WebP 则可以以更佳的色彩效果取代动画 GIF。
在浏览器之外,WebP 的适用性要弱一些。桌面应用、印刷流程、办公软件和旧设备可能无法打开它,因此用 WebP 通过电子邮件发送或给打印机会比较麻烦,在这些场景中 JPG 和 PNG 依然是更稳妥的选择。把已有的 JPG 转成有损 WebP 也意味着再次对已经丢失过细节的图像进行重新编码,第二次压缩会在第一次的基础上进一步降低质量。应当尽量从你手头质量最高的原始文件进行转换,而不是从别人已经发给你的压缩文件开始。