WebP(发音:weppy)是一种同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式,派生自影像编码格式VP8,被认为是WebM多媒体格式的姊妹项目,是由Google在购买On2 Technologies后发展出来,以BSD授权条款发布。
WebP最初在2010年发布,目标是减少文件大小,但达到和JPEG格式相同的图片质量,希望能够减少图片档在网络上的发送时间。2011年11月8日,Google开始让WebP支持无损压缩和透明色(alpha通道)的功能,而在2012年8月16日的参考实做libwebp 0.2.0中正式支持。根据Google较早的测试,WebP的无损压缩比网络上找到的PNG档少了45%的文件大小,即使这些PNG档在使用pngcrush和PNGOUT处理过,WebP还是可以减少28%的文件大小。
WebP支持的像素最大数量是16383x16383。有损压缩的WebP仅支持8-bit的YUV 4:2:0格式。而无损压缩(可逆压缩)的WebP支持VP8L编码与8-bit之ARGB色彩空间。又无论是有损或无损压缩皆支持Alpha透明通道、ICC色彩配置、XMP诠释数据。
WebP有静态与动态两种模式。动态WebP(Animated WebP)支持有损与无损压缩、ICC色彩配置、XMP诠释数据、Alpha透明通道。
技术
WebP的有损压缩算法是基于VP8视频格式的帧内编码,并以RIFF作为容器格式。因此,它是一个具有八位色彩深度和以1:2的比例进行色度子采样的亮度-色度模型(YCbCr4:2:0)的基于块的转换方案。不含内容的情况下,RIFF容器要求只需20字节的开销,依然能保存额外的元数据(metadata)。WebP图像的边长限制为16383像素。
WebP是基于块预测的。每个块都是根据它上面三个块的值和其左边一个块的值进行预测的(块解码以光栅扫描顺序完成:从左到右,从上到下)。块预测有四种基本模式:水平、垂直、DC(单色)和 TrueMotion。利用离散余弦变换或沃尔什-阿达玛转换将预测错误的数据和未预测块压缩在4×4像素子块中。这两种转换都是使用定点算术完成的,以避免舍入误差。输出使用熵编码进行压缩。WebP也明确支持并行解码 。
参考实现包含一个Linux命令行程序的转换器,以及以及用于解码的库,与WebM相同。开源社区很快设法将转换器移植到其他平台,例如Windows。
WebP的无损压缩采用先进的技术,例如用于不同颜色通道的专用熵代码,利用反向参考距离的2D位置和最近使用的颜色的颜色缓存。这补充了字典编码、霍夫曼编码和颜色索引变换等基本技术。
支持
当前网页浏览器当中,Google Chrome和Opera原生支持静态与动态的WebP格式,而Google Chrome自12版开始支持WebP的渐进式解码功能。此外所有可以原生播放WebM影像的浏览器,也可以透过javascript来显示WebP影像。又Pale Moon 26+浏览器仅支持静态的WebP图像。Firefox浏览器亦在65.0版本支持WebP图像。
网页浏览器GNOME Web和KDE图片浏览器Gwenview也支持WebP。
图像软件当中,Picasa(从3.9版本起)、PhotoLine、Pixelmator、ImageMagick、XnView、IrfanView、GDAL、Aseprite和GIMP(2.10起)皆原生支持WebP格式。
苹果在macOS Sierra及iOS 10的早期beta版本中加入了WebP支持。而在2016年9月7日发布的iOS 10和macOS Sierra GM种子版本中却移除了WebP的支持。
评论
x264的开发者之一:Jason Garrett-Glaser,针对WebP做出了几点评论,根据和其他编码器(JPEG、x264、Theora)测试的结果,他认为WebP的影像质量是最差的,多数是在模糊度方面。他也评论Google应该等到WebP可以超越JPEG之后再发布。不过在2011年4月20日,他提到新的WebP编码器表现的非常好,超越JPEG指日可待。
概况定义
由谷歌于2010年推出的新一代图片格式,在压缩方面比当前JPEG格式更优越。
谷歌表示,webp这种格式的主要优势在于高效率。他们发现,“在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%。谷歌浏览器已经支持webp格式,Opera在版本号Opera11.10后也增加了支持,然而火狐和ie暂时还不支持webp格式,可以采用flash插件来显示webp,当然这样会耗费一些性能。
美中不足的是,WebP格式图像的编码时间“比JPEG格式图像长8倍”。
分析人士认为,尽管WebP格式尚未像JPEG格式那样,得到各种软硬件的广泛支持,但谷歌推广这一格式的优势在于Chrome浏览器。这款谷歌开发的浏览器的市场份额已达50%以上。