动画 WebP (.webp)
RFC 标准WebP 是由 Google 开发的现代图像格式,为网页图像提供更优异的无损和有损压缩,同时支持 Alpha 透明度和动画帧。
将 JPG 转换为 WEBP
免费的浏览器端 JPG 转 WEBP 转换器。在您的设备上即时转换文件。
在线压缩 WebP
隐私保护 - 文件不会离开您的设备
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 WebP 文件:
字节级文件头签名 (魔数)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 WebP 文件:
十六进制签名 (偏移量 0):
52 49 46 46 ?? ?? ?? ?? 57 45 42 50ASCII 表示形式: RIFF????WEBP
标准化: RFC 6386 / RIFF Container Specification
技术规格
| 容器架构 | 资源交换文件格式 (RIFF) 容器,带有 'WEBP' FourCC |
| 压缩方式 | 有损 VP8 预测帧内编码与无损 VP8L 空间熵编码 |
| 字节序 | RIFF 块大小和容器标签采用小端序 (Little-Endian) |
| 色彩空间 | sRGB, 嵌入式 ICC 配置文件 (通过 VP8X 扩展标头) |
| 通道与结构 | RGB + Alpha (每通道 8 位) |
| 最大尺寸 | 16,383 x 16,383 像素 (14 位无符号整数) |
| 透明度 | 有损和无损模式下均支持完整的 8 位 Alpha 通道透明度 |
| 流式传输与渐进式加载 | 通过增量 VP8 块解码支持渐进式解码 |
技术对比矩阵:WebP 对比同类产品
| 技术属性 | WebP (当前) | JPEG | PNG | AVIF |
|---|---|---|---|---|
| 支持的压缩模式 | 有损 (VP8) 和无损 (VP8L) 兼备 | 仅有损 | 仅无损 | 有损 (AV1) 和无损兼备 |
| Alpha 透明度 | 支持 (有损和无损均支持) | 不支持 | 支持 | 支持 |
| 动画支持 | 支持 (带帧延迟的多帧) | 不支持 | 需要 APNG 扩展 | 支持 (AVIF 图像序列) |
| HDR / 广色域 | 仅 8 位 sRGB | 8 位标准 | 8 位和 16 位 | 10 位和 12 位原生 HDR |
| 浏览器支持 | 全球 97% 以上的用户使用的现代浏览器均支持 | 100% 全面支持 | 100% 全面支持 | 93%+ 现代浏览器 |
常见损坏模式与十六进制恢复指南
浏览器无法显示 WebP 图像或显示损坏的图像图标。
根本原因: RIFF 有效负载长度标头 (字节 4-7) 与磁盘上的实际字节长度不匹配。
恢复方法: 重新计算总文件大小减去 8 字节,并修补偏移量 0x04 处的 4 字节小端无符号整数。
解码失败并显示 'Invalid FourCC: Expected WEBP'。
根本原因: 字节 8-11 不包含 ASCII 字符 'WEBP'。
恢复方法: 验证偏移量 0x08 是否包含 0x57 0x45 0x42 0x50 ('WEBP'),并且块标头与 'VP8 ' 或 'VP8L' 匹配。
安全分析与解析器攻击向量
在发生 CVE-2023-4863 漏洞之后,WebP 解析受到了严格的安全审查,导致所有主流网络浏览器普遍进行了沙箱加固。
已知攻击向量
- CVE-2023-4863:解析无效的无损哈夫曼表时,libwebp 的 BuildHuffmanTable 函数发生堆缓冲区溢出,从而允许远程代码执行。
- 解码超大动画帧画布尺寸时发生整数溢出。
防御性最佳实践: 确保所有客户端和服务器库都使用 libwebp 1.3.2 或更高版本。在内存沙箱化的工作线程中解码 WebP 文件。
历史渊源与里程碑
核心优势与特点
- 在相同的 SSIM 质量下,有损 WebP 图像比同类 JPEG 图像小 25% - 35%。
- 无损 WebP 通常比标准 PNG 小 26%。
- 单一统一格式可处理照片、带透明度的图形以及轻量级动画剪辑。
技术局限与劣势
- 最大尺寸限制为 16,383 x 16,383 像素,无法满足超高分辨率全景图像的需求。
- 仅支持 8 位色彩深度 (无原生 10 位或 12 位 HDR 支持)。
- 编码复杂的有损图像比传统的 JPEG 编码器需要消耗更多的 CPU 周期。
趣味技术冷知识
- WebP 基于 Google 开源 VP8 视频编解码器的关键帧帧内预测算法。
- WebP 使用的 RIFF 容器与经典的 Microsoft AVI 和 WAV 文件使用完全相同的容器架构。
- 与 GIF 相比,文件大小取决于动画内容和编码设置,因此请比较实际结果。
常见技术问题
WebP 能完全替代 PNG 和 JPEG 吗?
WebP 适用于许多网页图像,但并不能在所有工作流程中取代 PNG 或 JPEG。请根据图像内容、透明度需求以及受众使用的浏览器或软件选择格式。
为什么 WebP 无损压缩比 PNG 更高效?
WebP 无损压缩使用了先进的空间预测器、色彩变换去相关、局部色彩缓存以及熵编码的 2D 变换,生成的文件通常比最优化的 PNG 文件小 26%。
WebP 支持动画吗?
WebP 支持动画图像。与 GIF 相比,文件大小取决于动画内容和编码设置,因此请比较实际结果。
相关的 WebP 转换对
将 JPEG 图像转换为 WebP,可能在视觉质量相近时减小文件体积;实际结果因图像内容和编码设置而异。
将 WebP 转换为 JPEG,可以让静态图像更容易用于不支持 WebP 的软件;JPEG 不保留透明度或动画。
将 PNG 图像转换为 WebP 可以减小文件体积并保留透明度;实际结果取决于采用有损还是无损编码,以及图像内容。
将 WebP 转换为 PNG,可为支持 PNG 的软件生成静态图像;转换不会保留 WebP 动画,也无法恢复有损源图像中已丢失的细节。
将动态 WebP 文件转换为动态 GIF,将现代光栅动画格式与需要通用兼容性的旧版网页标准联系起来。
从 WebP 图形制作单页 PDF,用于文档或审批环节。浏览器会将其重新绘制为图像,因此不会保留 WebP 数据和动态效果。