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

Base64 转 JPG

粘贴照片的 Base64,带不带 data:image/jpeg;base64, 前缀都可以,保存为 .jpg。解码后的文件与原始 JPEG 逐字节一致,元数据也包括在内。

免费 无需注册,不限次数 本地 不上传任何内容 原样 与原始文件逐字节一致 更新于 2026年10月27日
输入 –输出 –大小 –

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

如何将 Base64 转换为 JPG

  1. 把字符串粘贴到输入框。以 /9j/ 开头的纯 Base64 和完整的 data:image/jpeg;base64, URI 都可以,包含它们的 <img> 标签或 CSS 规则也行。
  2. 状态行会确认 有效的 Base64,检测结果 为 JPEG,预览会显示照片及其像素尺寸和文件大小。
  3. 设置 文件名,然后点击 下载文件。

大照片也没问题。几 MB 的 Base64 字符串可以直接粘贴,也可以从 .txt 文件打开;超过 4 MB 的内容会直接解码,不在文本框中显示。

你会得到什么

解码返回的正是当初被编码的字节。画质不变,也不会重新压缩。这也意味着原始文件中包含的一切都会原样回来:

  • EXIF 元数据:相机型号、拍摄时间、方向,如果开启了定位,还有 GPS 坐标。如果 Base64 是别人发给你的,这张照片透露的信息可能比对方想透露的更多。如果你准备转发它,请先去掉元数据,例如用 JPG 转 Base64 并勾选 移除元数据(EXIF)。
  • 嵌入的缩略图和颜色配置文件。
  • 图像结束之后的尾随数据。一些 Android 手机拍摄的动态照片会在 JPEG 之后追加一段短视频,这就是为什么这种“照片”可能比预期大好几倍。

预览下方的 SHA-256 可以证明保存的文件与你拿到的哈希值相符。

区分真正的 JPEG 和冒充的 JPEG

解码器只看字节,不看标签。装着 PNG 数据的 data:image/jpeg URI,或者名为 photo_jpg 却装着 WebP 的 API 字段,都会如实报告:“这看起来是 WebP,而不是 JPEG”,并附带 下载为 .webp 按钮。

图片 CDN 会根据浏览器的 Accept 请求头选择输出格式,所以在浏览器中以 photo.jpg 获取、再做 Base64 编码的图片,可能是 WebP 或 AVIF。在浏览器中用“复制图片”得到的图片通常以 PNG 格式进入剪贴板,即使页面上显示的是 JPEG,所以从剪贴板编码得到的就是 PNG 的 Base64。

如果你确实需要 JPEG,改名是没用的。先按真实格式保存文件,再用 图片转 Base64 并在 转换为 中选择 JPEG,然后在这里解码结果。

识别被截断的 JPEG

JPEG 文件以标记 FF D9 结尾。根据文件长度除以 3 的余数,Base64 的结尾有三种情况:

文件长度 mod 3最后的字节Base64 结尾
2FF D9/9k=
1.. FF D9/2Q==
0.. FF D9/Z,通常是 //Z

被截断的 JPEG 仍然可以解码。浏览器会画出收到的部分,所以照片底部是灰色的或缺失,渐进式 JPEG 则看起来很模糊。常见原因包括数据库字段太短、日志系统限制单行长度,以及即时通讯应用拆分长文本。请从源头重新复制这个值。

在 Python 中做同样的检查:

import base64

def check_jpeg(b64: str) -> str:
    data = base64.b64decode(b64.split(",", 1)[-1])
    if not data.startswith(b"\xff\xd8\xff"):
        return "not a JPEG"
    end = data.rfind(b"\xff\xd9")
    if end < 0:
        return "truncated: no end-of-image marker"
    extra = len(data) - end - 2
    return f"complete, {extra} bytes after the end marker" if extra else "complete"

这只是一个快速测试。相机拍摄的 JPEG 带有 EXIF 缩略图,缩略图有自己的 FF D9,所以严重截断的照片仍可能通过检查。Python 中的 Base64 有更多关于解码文件的内容。

常见问题

  • “长度错误”。 丢失或多出了一个字符,通常发生在复制时的换行处。请重新复制完整的值。
  • 无效字符 \。 字符串来自转义了斜杠的 JSON(\/9j\/4AAQ...)。用 修复 Base64 处理,或先对 JSON 反转义。
  • 照片非常大。 Base64 会掩盖图片的真实大小:4 MB 的字符串对应 3 MB 的照片。大小 一行显示解码后的大小,像素尺寸列在预览上方。

常见问题

解码后的文件应该用 .jpg 还是 .jpeg?

都可以。两个扩展名表示同一种格式,所有程序都接受。工具使用 .jpg;如果某个系统坚持要长的那种,在 扩展名 中填入 jpeg 即可。

怎么检查 JPEG 的 Base64 字符串是否完整?

完整的 JPEG 以字节 FF D9 结尾,所以它的 Base64 通常以 /9k=、/2Q== 或 /Z 结尾。字符串结尾与此不同,或者图片下半部分缺失,都说明数据被截断了。

能查看解码后照片的 EXIF 数据吗?

工具不会列出 EXIF 字段,但 显示 hex 转储 可以看到 Exif 块,文本列中通常还能看到相机厂商。完整信息请下载文件后用 EXIF 查看器打开。

为什么解码后的照片在某些应用里是歪的?

手机经常把像素横着存储,并在 EXIF 标签中记录旋转方向。浏览器会应用这个标签,所以预览看起来是正的,但忽略该标签的软件会按原始方向显示。无论哪种情况,字节都没有改变。