Skip to content
encode2026-07-252 分钟阅读

什么是 Base64 转图片

Base64 转图片是将 Base64 编码的文本字符串还原为二进制图片文件的过程。它是「图片转 Base64」的逆操作。

一个典型的 Base64 图片字符串以 Data URI 前缀开头:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...
^^^      ^^^^        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
协议     MIME类型     Base64 编码的图片数据

为什么需要 Base64 转图片

  1. API 响应处理:后端返回 Base64 图片数据,前端需要保存为图片
  2. 浏览器缓存:将内联的 Base64 图片提取为独立文件
  3. 数据迁移:从数据库中提取 Base64 存储的图片
  4. 邮件处理:解析邮件中的 Base64 附件
  5. 截图保存:HTML Canvas 截图的 Base64 数据保存为文件
  6. 日志分析:从日志中提取 Base64 编码的图片

如何使用在线工具

使用 DevToolkit Pro 的 Base64 转图片工具

  1. 粘贴 Base64 编码字符串
  2. 支持带或不带 Data URI 前缀
  3. 自动检测图片格式(PNG、JPEG、GIF 等)
  4. 预览还原后的图片
  5. 一键下载为图片文件

代码中的 Base64 转图片

JavaScript(浏览器端)

function base64ToImage(base64String) {
  // 移除 Data URI 前缀
  const base64 = base64String.replace(/^data:image\/\w+;base64,/, '');
  // 解码为二进制
  const binaryString = atob(base64);
  const bytes = new Uint8Array(binaryString.length);
  for (let i = 0; i < binaryString.length; i++) {
    bytes[i] = binaryString.charCodeAt(i);
  }
  // 创建 Blob 并下载
  const blob = new Blob([bytes], { type: 'image/png' });
  const url = URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.href = url;
  a.download = 'image.png';
  a.click();
}

Node.js

const fs = require('fs');

function base64ToImage(base64String, outputPath) {
  const base64 = base64String.replace(/^data:image\/\w+;base64,/, '');
  const buffer = Buffer.from(base64, 'base64');
  fs.writeFileSync(outputPath, buffer);
  console.log(`图片已保存到 ${outputPath}`);
}

// 使用
base64ToImage('data:image/png;base64,iVBORw0KGgo...', 'output.png');

Python

import base64

def base64_to_image(base64_string, output_path):
    # 移除 Data URI 前缀
    if ',' in base64_string:
        base64_string = base64_string.split(',')[1]
    # 解码并保存
    image_data = base64.b64decode(base64_string)
    with open(output_path, 'wb') as f:
        f.write(image_data)

常见 MIME 类型

| MIME 类型 | 说明 | 文件扩展名 | |-----------|------|-----------| | image/png | PNG 图片 | .png | | image/jpeg | JPEG 图片 | .jpg / .jpeg | | image/gif | GIF 动图 | .gif | | image/webp | WebP 图片 | .webp | | image/svg+xml | SVG 矢量图 | .svg | | image/bmp | BMP 位图 | .bmp |

FAQ

Base64 转图片会有质量损失吗?

不会。Base64 是无损编码,解码后的数据与原始二进制完全一致。但如果图片本身经过了压缩(如 JPEG),质量损失来自压缩而非 Base64 编码。

为什么转换后的图片打不开?

常见原因:Base64 字符串被截断、包含非法字符、MIME 类型不匹配。检查字符串完整性并确保没有多余的空格或换行符。

为什么图片变大了?

Base64 编码本身会使数据增大约 33%。这是编码方式的固有开销,解码后恢复原始大小。


本文由 DevToolkit Pro 提供。更多开发者工具请访问 首页


ad