动态WebP图片格式简介


背景

最近接到一个Android端支持apng和webp动图播放的需求,所以对apng、webp图片格式进行了详细的学习,今天在这里针对webp格式的图片进行一下简介。

WebP图片简介

WebP是Google于2010年提出的一种新的图片压缩格式。它为网络图片提供了无损和有损压缩能力,同时在有损条件下支持透明通道。根据Google较早的测试,WebP的无损压缩比网络上找到的PNG档少了45%的文件大小,即使这些PNG档在使用pngcrushPNGOUT处理过,WebP还是可以减少28%的文件大小。

同时,谷歌于2014年提出了动态WebP,拓展WebP使其支持动图能力。动态WebP相比GIF支持更丰富的色彩,并且也占用更小空间,更适应移动网络的动图播放。

动态WebP详解

下面进入我们的主题,动态webp,这里我会对其文件格式用于解析播放的部分做一下讲解。

播放原理

webp的播放原理类似于gif和apng,都是逐帧播放,记录每一帧变化区域的长宽、坐标、播放延时,来还原播放

文件格式

首先我们来看一个示例:


webp动图示例

上面就是一个动态webp该有的文件格式,下面我们来分析一下。

首部:webp首部包含12字节,分别为RIFF、File Size以及WEBP,其中File Size为文件大小,WEBP为文件标示,我们可以根据WEBP来判断其文件格式

扩展格式:扩展格式包括:VP8X用于指明使用的特性、可选的‘ICCP’用于色彩配置、可选的‘ANIM’用于动画控制、可选的‘EXIF’用于EXIF元数据、可选的‘XMP’用于XMP元数据。对于静态webp图片,其只包含1帧的数据,而动态webp包含多帧。


l:当图像包含透明数据时置位。

a:动态WebP置位,此时ANIM和ANMF数据块中的数据将会被使用来控制动画。

Canvas Width Minus One:画布的真实宽度是该数值+1。

Canvas Height Minus One:画布的真实高度是该数值+1。

可以看出,我们可以通过此数据块拿到透明度、animation动画标记以及画布的宽高。

动画:动画我们主要关注ANIM和ANMF块。

其中ANIM Chunk定义了动画的全局参数,包括backgroundColor以及loopCount。

而对于ANMF Chunk,其包含了一帧的图像数据,一个动画里面会包含多个ANMF Chunk。它内部定义了:

Frame X: 该帧数据左上角X坐标为该值 * 2。

Frame Y: 该帧数据左上角Y坐标为该值 * 2。

Frame Duration: 播放该帧后的延时时间。

Blending method (B): 标识如何混用前面画布的相应透明像素点。置0时,需要清空前一帧。置1时,不清空,直接渲染这一帧数据。

Disposal method (D): 标识该帧数据在被显示后如何处理画布。置0时不处理;置1时将画布矩形区域转换成ANIM定义的背景颜色。

Frame Data:以2字节为单位,包含图像比特流数据以及可选的透明度数据。

总结

作为一种新兴的图片格式,webp在压缩算法上进行了优化,同时有着不错的显示效果。对于动图,它的体积比gif小,但是显示效果比gif强,但是支持广泛度上不如gif。

参考

https://zhuanlan.zhihu.com/p/23648251

https://zh.wikipedia.org/wiki/WebP

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容