Google 开发 WebP 图像格式,体积比JPEG小40%

Posted by pudd on October 1, 2010

现在网络上流通的图片所采用的格式大多是十几年前制定出来的,它们流传广泛、通用性好,但压缩的质量却依然受制于当年的开发技术,所以,Google 想要制定一个更优秀的图片格式,能在保持图片的质量和分辨率的同时,拥有比JPEG更好的压缩比,进而大大加速网络浏览中图片的加载速度。

WebP格式,正是 Google 交出来的方案。

目前网上最流行的有损图片格式当数JPEG,相比之下无损压缩的PNG和GIF仍占小数。当前网络环境下,各类图片的数据量占据了65%的网页总体积。图片体积过大显然会影响浏览体验,这在网速有限的地区尤为明显(天朝小水管)。WebP 格式致力于提高有损图片的压缩比,减少这硕大无比的65%数据的体积,无疑对网页提速大有裨益。

WebP文件使用RIFF格式作为容器 (文件规范决定文件信息数据的排布, wav 和 avi 格式也是基于RIFF),这种格式非常轻量级,在极端的情况下一个RIFF图像文件的数据开销不到20字节,同时RIFF有很好的扩展性,开发者可以往里面添加想要的元数据。

图像数据采用VP8编码,说起这个编码器不得不提 Google 五月份Web O/I 2010 大会上宣布的 WebM项目。Google 收购了 On2 公司,并将其 VP8 视频编码推向开源,以对抗 x264,成为HTML5视频标准。WebM是采用VP8编码的高画质、开放、免费实现以及专门针对 Web 优化的视频格式。

WebP 使用了与 WebM 相同的VP8编码器来压缩图像,利用预测编码技术,通过部分像素块的颜色来预测其邻近块的颜色值,并只记录两者的差值,因为多数情况下两者差距很小,甚至零差距,因而大大提高了压缩的比率。最后再将差值数据进行量化和熵编码保存。

为了证实VP8理论上的优质高效,Google 在网络上随机采集了100万张图片(大多数为JPEG PNG 和 GIF),在保持其图像质量不变的前提下进行了 WebP 重编码,证明采用 WebP 格式的图片体积减少39%,并且对非有损压缩格式图像(如 PNG)进行压缩时比率更高。

WebP项目的Gallery页面上有提供大量的 JPEG 和 WebP 效果对比图,当然,因为现在还没浏览器支持这一新图片格式,WebP的图片还是暂时以PNG格式保存。目前项目处于开发者预览阶段,只提供有Linux下的格式转换工具。另外,在格式开发进入Alpha阶段时,大概就能跟PNG一样支持半透明。

开发者正在努力让 Webkit 内核兼容WebP格式图片,估计能在下几个版本的 Chrome 里出现。

以下为官方 WebP 页面上的翻译内容:

什么是 WebP

WebP 是一种可用于摄影图像的有损压缩方法,其压缩率可调整,所以用户可以在文件尺寸和图像质量方面做自己的选择。

WebP 文件采用 VP8 图像数据并基于 RIFF 封装,网站管理员、网页开发者以及浏览器开发者都可以使用 WebP 格式创建更小的,画质更好的图像,以实现更快的网页速度。

WebP 这个单词读起来有点拗口是吧?那就读成“Weppy”[(wĕpˈē)]吧!

WebP 是如何工作的?

WebP 使用预测编码技术对图像进行编码处理,这个技术也同时被应用在 VP8 视频的编码解码过程,以压缩视频种得关键帧。预测编码技术的原理就是使用部分像素块的颜色来预测其邻近像素块的颜色值,并只对两者的差值进行编码。因为多数情况下两者差距很小,甚至零差距,因而大大提高了压缩的比率。最后再将差值数据进行量化和熵编码保存。

目前的版本中包含什么?

目前的版本提供了一个轻量级的 WebP 文件解码器(libvpx)和一个命令行工具(webpconv),用于对图像在 WebP 和普通格式之间转换。WebP 团队还在为 Webkit 引擎开发原生支持 WebP 的补丁,并且会在不久的 Google Chrome 中得以支持。

为啥要用 WebP?

用上了 WebP,你可以:

  • 在你的网站上提供更快的用户体验;
  • 降低你的流量和服务器成本;
  • 推动 Web 的发展;

via ChromiumBlog