如何把 WebP 转换为 Base64
- 把
.webp文件拖到框里,或者用文件选择器选择它。 - 要更改格式,在 转换为 下选择 PNG 或 JPEG。选择 保持原格式 时,设置 最大宽度 会按所选 质量 重新编码为 WebP。
- 选择 输出为,默认是 data URI。
- 点击 复制输出。计量条会对比输入和输出的大小。
为什么 WebP 很适合做 data URI
Base64 会让编码的内容增大约三分之一,所以源文件越小越好。有损 WebP 通常比同等画质的 JPEG 小,无损 WebP 通常比 PNG 小,同时保留透明度。对于想要内联的图标、商品缩略图和占位图,WebP 通常能得到比 PNG 或 JPEG 更短的字符串。
动画 WebP 文件会按原样编码。和 GIF 一样,重新编码选项只会绘制第一帧,所以如果图片是动的,就别动这些选项。
目标不接受 WebP 时
很多软件仍然只认 PNG 或 JPEG:一些接受 Base64 图片的 API、较旧的桌面程序、文档生成工具以及许多邮件客户端。不必先在别处转换文件,直接在这里把 转换为 设为 PNG 或 JPEG,再编码结果即可:
- PNG 保留透明度和每一个像素,但体积更大。
- JPEG 对照片来说更小,但会用白色填充透明区域。
HTML <a download> 和 JSON 输出中的文件名会随新格式改变,例如 banner.webp 变成 banner.png。
在浏览器中重新编码为 WebP
大多数浏览器都能从 canvas 写出 WebP,所以缩放 WebP 或改变质量后仍然是 WebP。Safari 不行。在 Safari 中,工具会回退为 PNG,并在预览下方说明;而照片的 PNG 可能是原始 WebP 的好几倍大。如果需要 WebP 输出,请使用 Chrome、Edge 或 Firefox,或者保留原始文件。
在 Base64 中识别 WebP
WebP 使用 RIFF 容器,与 WAV 音频和 AVI 视频相同:
UklGRlAAAABXRUJQVlA4IEQAAAD...
└─┬─┘└─┬──┘│└─┬┘
RIFF size W EBP
UklGR 只说明这是“RIFF”。格式标记 WEBP 位于第 8 到 11 个字节,在第 12 到 16 个字符处显示为 XRUJQ,后面的 VlA4 对应 VP8 块。如果要在代码中匹配格式,请两部分都检查。更多文件签名列在 常见的 Base64 前缀 中,Base64 转 WebP 可以把字符串解码回文件。
常见问题
所有浏览器都能显示 WebP data URI 吗?
当前所有浏览器都可以。Safari 从版本 14 开始支持 WebP,需要 macOS 11 Big Sur 或更新的系统;iOS 从版本 14 开始支持。更早的 Apple 系统会显示破损图片。
怎样区分 WebP 的 Base64 和 WAV 的 Base64?
两者都是 RIFF 文件,都以 UklGR 开头。在 WebP 中,第 12 到 16 个字符是 XRUJQ(来自 WEBP);在 WAV 中是 XQVZF(来自 WAVE)。
为什么我要的是 WebP,得到的却是 PNG?
你的浏览器无法从 canvas 编码 WebP,主要是 Safari。工具会提示发生了回退,并给你一张 PNG,它是无损的,但通常更大。