【编解码:WebP协议】

一 简介

WebP 是一种新型的图片格式,使用 VP8 关键帧编码以有损方式压缩图片数据,或使用 WebP 无损编码,其无损图片的大小比 PNG 图片小 26% ,有损图片比采用等效 SSIM 质量索引的同类 JPEG 图片缩小 25-34%
无损 WebP 支持 Alpha 通道,带上Alpha通道后仅多 22%。在可以接受有损 RGB 压缩的情况下,有损 WebP 也支持透明度,其提供的文件大小通常比 PNG 小 3 倍。动画 WebP 图片均支持有损、无损和透明度,与 GIF 和 APNG 相比,这种格式可以减小文件大小

二 协议

1 WebP文件头

| ‘R’ | ‘I’ | ‘F’ | ‘F’ |
| File Size |
| ‘W’ | ‘E’ | ‘B’ | ‘P’ |

上述的统称为WebP文件头:WebP header,4个字节的文件FourCC(RIFF),4个字节的文件大小,4个字节的标识(WEBP),总计12个字节

2 数据块

| ‘V’ | ‘P’ | ‘8’ | ‘*’ |
| data |

上述统称chunk,若为有损压缩则编码FourCC为(”VP8 “),无损压缩则编码FourCC为(”VP8L“),L即LossLess,具体的data的编码协议则查阅相关文档 无损编码 有损编码

3 拓展数据

| ‘V’ | ‘P’ | ‘8’ | ‘X’ |
| 拓展数据 |

4个字节FounCC(”VP8X“)
拓展数据构成总计:4+3+3 = 12个字节
Rsv字段:2 位,置 0
ICC 配置文件 (I)字段:1 位,如果文件包含 ICC 配置文件,置1
Alpha (L)字段:1 位,如果图片的任何帧包含透明度信息 (“alpha”),置1
Exif 元数据 (E)字段:1 位,如果文件包含 Exif 元数据,置1
XMP 元数据 (X)字段:1 位,如果文件包含 XMP 元数据,置1
动画 (A)字段:1 位,如果这是动画图片,置1,则包含ANIM,ANMF块
保留 ®字段:1 位, 置0
预留字段:24 位,置 0
伪画布宽度:24 位, 实际的画布宽度需要此值再加1
伪画布高度:24 位, 实际画布高度需要此值再加1
画布宽度和画布高度的乘积不得超过 2^32 - 1

4 动画

ANIM 块

| ‘A’ | ‘N’ | ‘I’ | ‘M’ |
| background color |
| loop count |

4个字节FounCC(”ANIM“)
background color :4个字节,bgra背景色
loop count:2个字节,动画的循环次数,0 表示无限

ANMF块

| ‘A’ | ‘N’ | ‘M’ | ‘F’ |
| 数据 |

4个字节FounCC(”ANMF“)
FrameX:24 位 ,框架左上角的 X 坐标为 2倍该值
FrameY:24 位 ,框架左上角的 Y 坐标为 2倍该值
伪帧宽:24 位,帧宽度为此值 +1
伪帧高:24 位,帧高度为此值 +1
帧时长:24 位,显示下一帧前的等待时间,以 1 毫秒为单位
预留:6 位,置 0
混合方法 (B):1 位,指示当前帧的透明像素如何与上一画布的相应像素混合,0使用alpha混合,1不混合
处理方法 (D):1 位,指示在画布上显示当前帧之前(在渲染下一帧之前)如何处理当前帧,0不处置将画布保留原样;1处理为背景颜色,在当前帧覆盖的画布上,使用 ANIM 分块中指定的背景颜色填充矩形
帧数据:16 字节,包含帧的可选 Alpha 子区块、帧的比特流子分块(也就是上述的数据块)、可选的未知分块列表

5 ALPHA

| ‘A’ | ‘L’ | ‘P’ | ‘H’ |
| 数据 |

4个字节FounCC(”ALPH“)
Rsv:2 位,置 0
预处理 §:2 位,这些信息性位用于指示在压缩过程中执行的预处理。解码器可以使用这些信息(例如,在显示值之前抖动值或平滑渐变),0未进行预处理,1降低等级
过滤方法 (F):2 位,0无,1水平过滤器,2垂直滤镜
压缩方法 ©:2 位,0未压缩,1使用 WebP 无损格式进行压缩
Alpha 位流,数据块大小 :1 个字节

6 颜色配置文件

| ‘I’ | ‘C’ | ‘C’ | ‘P’ |
| Color Profile |

4个字节FounCC(”ICCP“)
此区块必须出现在图片数据之前。最多只能有 1 个此类分块。如果存在更多这样的区块,忽略除第一个区块之外的所有其他区块。如果此分块不存在,则应采用 sRGB

7 元数据

元数据可以存储在 EXIF’XMP 或数据块中。每种类型的数据块 (‘EXIF’ 和 'XMP ') 最多只能有一个块。如果有多个此类块,忽略除第一个块之外的全部块

EXIF

| ‘E’ | ‘X’ | ‘I’ | ‘F’ |
| Exif Metadata |

4个字节FounCC(”EXIF“)

XMP

| ‘X’ | ‘M’ | ‘P’ | ’ ’ |
| XMP Metadata |

4个字节FounCC(”XMP “)

三 文件布局示例

1 采用 Alpha 格式的有损编码图片可能如下所示:

WebP文件头
± VP8X (descriptions of features used)
± ALPH (alpha bitstream)
± VP8 (bitstream)

2 无损编码的图片可能如下所示:

WebP文件头
± VP8X (descriptions of features used)
± XYZW (unknown chunk)
± VP8L (lossless bitstream)

3 具有 ICC 配置文件和 XMP 元数据的无损图片可能如下所示:

WebP文件头
± VP8X (descriptions of features used)
± ICCP (color profile)
± VP8L (lossless bitstream)
± XMP (metadata)

4 包含 Exif 元数据的动画图片可能如下所示:

WebP文件头
± VP8X (descriptions of features used)
± ANIM (global animation parameters)
± ANMF (frame1 parameters + data)
± ANMF (frame2 parameters + data)
± ANMF (frame3 parameters + data)
± ANMF (frame4 parameters + data)
± EXIF (metadata)

参考官方说明

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值