上传文件
  1. base64hub
  2. 图片工具
  3. Base64 转 WebP

Base64 转 WebP

粘贴 WebP 的 Base64 或 data:image/webp URI,即可预览图片并保存为 .webp 文件。仅凭字符串开头的几个字符,就能看出它是哪一种 WebP。

免费 无需注册,不限次数 本地 不上传任何内容 更新于 2026年10月27日
输入 –输出 –大小 –

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何将 Base64 转换为 WebP

  1. 粘贴 Base64 或完整的 data:image/webp;base64,... URI。包含 data URI 的代码(例如 CSS 的 url() 或 <img> 标签)也可以。
  2. 查看状态行中的 检测结果 是否为 WebP,再看预览图和上方的尺寸。动画 WebP 会在预览中播放。
  3. 点击 下载文件。扩展名已设为 webp。

三种 WebP

WebP 是一种 RIFF 容器,紧跟在 WEBP 标签之后的是三种块类型之一。由于这个标签位于固定的偏移处,类型在 Base64 中也出现在固定的位置:

Base64 开头块含义
UklGR…XRUJQVlA4IVP8有损,无透明度
UklGR…XRUJQVlA4TVP8L无损,可包含透明度
UklGR…XRUJQVlA4WVP8X扩展格式:带 alpha 的有损图片、动画、ICC 配置文件或 EXIF

UklGR 和 XRUJQ 之间的六个字符编码的是文件大小,每个文件都不一样。XRUJQ(来自 WEBP)始终位于第 12 到 16 个字符,VlA4(来自 VP8)位于第 17 到 20 个字符。你要看的是第 21 个字符:I、T 或 W。

WebP 的类型决定了转换文件时会发生什么。无损 WebP 可以很好地替代 PNG。有损 WebP 已经丢失了细节,转成 PNG 只会得到一个大文件,画质却回不来。扩展格式的文件可以包含多帧;转成静态格式只会保留第一帧。

在代码中检查 WebP 类型

用 Python 做同样的判断:读取块标签,对于扩展格式再读取标志字节:

import base64

def webp_kind(b64: str) -> str:
    data = base64.b64decode(b64.split(",", 1)[-1])
    if data[:4] != b"RIFF" or data[8:12] != b"WEBP":
        return "not WebP"
    chunk = data[12:16]
    if chunk == b"VP8 ":
        return "lossy"
    if chunk == b"VP8L":
        return "lossless"
    flags = data[20]
    parts = ["extended"]
    if flags & 0x10:
        parts.append("alpha")
    if flags & 0x02:
        parts.append("animated")
    return ", ".join(parts)

对于 Pillow 生成的 WebP 文件,它会返回 lossy、lossless,带透明度的有损图片返回 extended, alpha,动画返回 extended, animated。详见 Python 中的 Base64。

RIFF 不一定是 WebP

UklGR 只表示“RIFF”。WAV 音频和 AVI 视频也以同样的方式开头,区别在于第 8 到 11 字节的标签。解码器会检查这个标签,所以粘贴到这里的 WAV 会被报告为“这看起来是 WAV,而不是 WebP”,并提供保存为 .wav 的按钮。Base64 转音频 可以播放它。

WebP 的 Base64 出现在哪里

  • Canvas 导出,使用 toDataURL("image/webp", quality)。请检查结果:没有 WebP 编码器的浏览器会悄悄返回 PNG。
  • 图片 API 和 CDN 会向任何支持 WebP 的客户端提供 WebP。如果图片是由浏览器获取的,即使字段名为 thumbnail_jpg,里面也可能是 WebP。
  • HTML 和 CSS 中的内联占位图和图标,WebP 生成的字符串比 PNG 或 JPEG 更短。
  • 聊天表情贴纸,通常是 WebP,有时是动图。

如果老程序拒绝打开保存的文件,请把这里显示的 SHA-256 与它收到的文件进行比较。两者一致,就说明那个程序不支持 WebP,转成 PNG 或 JPEG 副本即可解决。

常见问题

我的 Base64 WebP 是有损还是无损的?

看字符串的第 21 个字符。VlA4 后面是 I 表示有损的 VP8 图片,T 表示无损的 VP8L 图片,W 表示扩展格式,带透明通道的有损图片或动画都使用这种格式。

能把解码出的 WebP 保存为 PNG 或 JPG 吗?

不能靠改扩展名,字节仍然是 WebP。先下载 .webp,再到 WebP 转 Base64 中把 转换为 设为 PNG 或 JPEG,然后在 Base64 转 PNG 中解码新的字符串。

为什么 canvas.toDataURL('image/webp') 返回的是 PNG?

无法编码 WebP 的浏览器(尤其是 Safari)会悄悄返回 PNG 的 data URI。把结果粘贴到这里:如果显示 PNG,就是这个原因。

为什么在旧款 Mac 或 iPhone 上预览失败?

Safari 14 和 15 只在 macOS 11 Big Sur 及更高版本上显示 WebP,Safari 14 之前的版本完全不支持。这时预览会提示浏览器无法显示该图片,但 下载文件 仍能保存有效的 .webp。