Base64 Image Decoder

将Base64数据URI解码回可视图像

Base64输入

什么是Base64图像解码?

Base64图像解码是Base64图像编码的反向操作:它采用代表图像的Base64字符串或数据URI,并将其转换回可见的二进制像素数据。当您收到如data:image/png;base64,iVBORw0KGgo...的字符串时,解码会删除数据URI前缀,反转RFC 4648中定义的Base64编码,并重建原始图像字节。然后浏览器可以将解码的字节渲染为可见图像。

数据URI(RFC 2397)将MIME类型和Base64编码的内容打包成一个字符串。它们经常出现在API响应、HTML电子邮件源代码、CSS样式表和数据库记录中,其中图像存储为文本而不是二进制文件。解码这些字符串是必要的,以预览图像、验证其内容或将其另存为独立文件。由于Base64使用4个ASCII字符来表示每3个字节的二进制数据,编码的字符串始终比原始图像大约33%。

此工具解析完整的数据URI(data:image/png;base64,...)和没有data:前缀的原始Base64字符串。对于原始字符串,通过检查前几个Base64字符来自动检测图像格式,这些字符对应于文件的magic bytes——例如,iVBORw0KGgo始终表示PNG文件。解码的图像直接在浏览器中呈现,可以作为文件下载。

开发人员的常见场景是使用REST API,该API返回配置文件照片或文档缩略图作为JSON字段内的Base64字符串——例如,{}与图像。要使用该图像,您提取字段值,删除数据URI前缀直到逗号(包括逗号),然后通过JavaScript中的atob()或Python中的base64.b64decode()等解码器传递剩余的Base64字符以恢复原始字节。将完整值粘贴到此工具中会跳过所有这些手动步骤,并立即呈现图像。

为什么使用此Base64图像解码器?

此工具将Base64图像数据完全在您的浏览器中转换为可查看、可下载的图像——无需上传、无需服务器处理、无需帐户。

即时预览
粘贴Base64字符串或数据URI,立即查看解码的图像。不要等待服务器端处理——浏览器会在本地解码并呈现结果。
🔒
隐私优先处理
您的图像数据永远不会离开您的设备。解码完全在浏览器中使用本机JavaScript API运行。没有Base64字符串被发送到任何服务器。
🖼️
自动格式检测
支持PNG、JPEG、SVG、WebP、GIF、BMP和ICO。MIME类型从数据URI前缀提取,或在不存在前缀时从Base64 magic bytes自动检测。
📋
下载结果
将解码的图像保存为具有正确扩展名的文件。下载使用检测到的格式——不需要手动将.txt重命名为.png。

Base64图像解码用例

前端调试
检查嵌入在HTML、CSS或JavaScript源代码中的Base64编码图像。粘贴数据URI以验证正确的图像在部署前被呈现。
API响应检查
REST和GraphQL API通常在JSON有效负载中以Base64字符串的形式返回图像——用户头像、文档缩略图或QR码。解码它们以验证内容与预期相符。
电子邮件模板开发
HTML电子邮件通常将图像嵌入为数据URI,以绕过外部图像阻止。解码Base64以预览收件人在不发送测试电子邮件的情况下将看到的内容。
数据库记录验证
当图像作为Base64文本存储在数据库列中(MongoDB、PostgreSQL文本字段)时,解码示例记录以在迁移或导入后确认数据完整性。
安全分析
检查日志、电子邮件或网络流量中可疑的Base64图像负载。解码揭示实际的图像内容和格式,帮助识别跟踪像素或意外的嵌入数据。
学习和教育
通过编码图像然后解码回来,了解Base64编码的工作原理。将原始文件与往返结果进行比较,以验证Base64是无损编码。

图像的数据URI结构

数据URI将图像类型和编码内容打包成一个字符串。每个组件对于正确解码都是必不可少的:方案(data:)表示URL是自包含的,而不是对外部资源的引用;MIME类型(例如image/png)告诉渲染器在解释原始字节时使用什么格式;标记;base64,将Base64编码的内容与对纯文本格式使用百分比编码的数据URI区分开来。Base64有效负载本身可能以一个或两个填充字符=结尾——当输入字节数不是三的倍数时,这些是必需的,确保编码长度始终是四的倍数。省略或截断这些组件中的任何一个都会导致解码失败或生成损坏的图像。

成分描述
data:URI scheme identifier
image/pngMIME type declaring the image format
;base64,Encoding declaration (always base64 for binary)
iVBORw0KGgo...Base64-encoded pixel data

从Base64检测图像格式

当Base64字符串没有data:前缀时,可以通过检查前几个字符来识别图像格式。这些字符对应于文件的magic bytes——每个图像文件开头的固定字节序列,用于识别格式:

格式Base64前缀十六进制签名MIME类型
PNGiVBORw0KGgo89 50 4E 47image/png
JPEG/9j/FF D8 FFimage/jpeg
GIFR0lGOD47 49 46 38image/gif
WebPUklGR52 49 46 46image/webp
SVGPHN2Zy3C 73 76 67 (text)image/svg+xml
BMPQk42 4Dimage/bmp
ICOAAABAA00 00 01 00image/x-icon

代码示例

如何在流行的语言和环境中将Base64图像字符串解码回图像文件:

JavaScript (browser)
// Decode a Base64 data URI to a Blob and create a download link
const dataUri = 'data:image/png;base64,iVBORw0KGgo...'

// Method 1: fetch API (simplest)
const res  = await fetch(dataUri)
const blob = await res.blob()
// blob.type → "image/png", blob.size → 2048

// Method 2: manual decode for older environments
const [header, b64] = dataUri.split(',')
const mime    = header.match(/:(.*?);/)[1]   // → "image/png"
const binary  = atob(b64)
const bytes   = Uint8Array.from(binary, c => c.charCodeAt(0))
const blob2   = new Blob([bytes], { type: mime })

// Create a download link
const url = URL.createObjectURL(blob)
const a   = document.createElement('a')
a.href = url
a.download = 'decoded.png'
a.click()
URL.revokeObjectURL(url)
Python
import base64
import re

data_uri = 'data:image/png;base64,iVBORw0KGgo...'

# Parse the data URI
match = re.match(r'data:(image/[\w+.-]+);base64,(.+)', data_uri)
mime_type = match.group(1)    # → "image/png"
b64_data  = match.group(2)

# Decode and write to file
image_bytes = base64.b64decode(b64_data)
ext = mime_type.split('/')[1].replace('jpeg', 'jpg').replace('svg+xml', 'svg')

with open(f'output.{ext}', 'wb') as f:
    f.write(image_bytes)
# → writes output.png (byte-for-byte identical to the original)

# Decode raw Base64 (no data: prefix)
raw_b64 = 'iVBORw0KGgo...'
image_bytes = base64.b64decode(raw_b64)
Node.js
import { writeFileSync } from 'fs'

const dataUri = 'data:image/png;base64,iVBORw0KGgo...'

// Extract MIME type and Base64 payload
const [meta, b64] = dataUri.split(',')
const mime = meta.match(/:(.*?);/)[1]  // → "image/png"

// Decode to Buffer and save
const buffer = Buffer.from(b64, 'base64')
writeFileSync('output.png', buffer)
// → output.png (identical to the original file)

// Validate by checking magic bytes
console.log(buffer.subarray(0, 4))
// PNG → <Buffer 89 50 4e 47>  (\x89PNG)
// JPEG → <Buffer ff d8 ff e0>
CLI (bash)
# Decode a raw Base64 string to an image file (Linux)
echo 'iVBORw0KGgo...' | base64 -d > output.png

# Decode a raw Base64 string to an image file (macOS)
echo 'iVBORw0KGgo...' | base64 -D > output.png

# Extract Base64 from a data URI and decode
echo 'data:image/png;base64,iVBORw0KGgo...' | \
  sed 's/^data:.*base64,//' | base64 -d > output.png

# Identify the image format from the decoded file
file output.png
# → output.png: PNG image data, 64 x 64, 8-bit/color RGBA

常见问题

数据URI和原始Base64字符串之间的区别是什么?
数据URI包含声明MIME类型和编码的前缀:data:image/png;base64,iVBORw0KGgo....原始Base64字符串仅包含编码字节(iVBORw0KGgo...),没有元数据。此工具接受两种格式。当您粘贴原始字符串时,它会从Base64 magic bytes自动检测图像格式。
解码Base64会改变图像质量吗?
不会。Base64是一种无损编码,可将二进制数据转换为ASCII文本,然后转换回去,而不会更改任何字节。解码的图像与原始文件逐字节相同。您注意到的任何质量差异都来自图像格式本身(例如,编码前应用的JPEG压缩),而不是Base64解码步骤。
我怎样才能知道Base64图像是什么格式?
如果字符串以data:image/png;base64开头,则格式在MIME类型中声明。对于原始Base64字符串,请检查前几个字符:iVBORw0KGgo表示PNG,/9j/表示JPEG,R0lGOD表示GIF,UklGR表示WebP。这些前缀对应于每种格式的magic bytes。
为什么我的Base64字符串无法解码?
常见原因包括截断数据(字符串在复制-粘贴期间被切断)、不正确的字符(Base64使用A-Z、a-z、0-9、+、/和=进行填充)、嵌入的空格或换行符,以及缺少或格式错误的数据URI前缀。此工具会自动删除空格,但无法恢复截断或损坏的数据。
从不可信来源解码Base64图像是否安全?
此工具在浏览器沙箱中解码和呈现图像,将其与系统隔离。但是,SVG图像可能包含嵌入的JavaScript。现代浏览器会阻止通过img标签或数据URI呈现的SVG中的脚本执行,但要谨慎使用来自不可信来源的SVG。该工具不执行来自解码图像的任何脚本。
我可以在没有互联网连接的情况下解码Base64图像吗?
可以,在页面加载后。所有解码都使用本机JavaScript API(atob、Uint8Array、Blob)在浏览器中本地运行。在解码过程中不会发出任何网络请求。该工具在离线状态下的工作方式相同。
此工具可以处理的最大Base64字符串长度是多少?
实际限制取决于浏览器的内存。大多数现代浏览器可以轻松处理几兆字节的数据URI。对于非常大的图像(10 MB+编码),您可能会遇到较慢的渲染。在这种大小下,使用Node.js或Python以编程方式解码并直接写入文件比使用基于浏览器的工具更有效。