View JS N

如何将图片转换为 Base64 用于 Vision API 请求

发布于 2026 年 2 月 22 日 · 阅读约 5 分钟

Vision API 为什么需要 Base64

OpenAI GPT-4o、Google Cloud Vision、Anthropic Claude、Qwen-VL 等现代视觉 API 接受两种图片输入方式:指向图片的公开 URL,或将原始图片数据编码为 Base64 字符串直接嵌入 JSON 请求体中。

如果图片已经托管在线上,URL 方式很简单。但在许多实际场景中,图片在你的本地机器上:刚截取的屏幕截图、扫描的文档、从视频中提取的帧,或开发流水线中的测试图片。这些情况下,Base64 编码是最直接的方式——它让你无需先上传到服务器就能将图片直接嵌入 API 请求体中。

典型的带 Base64 的 Vision API 请求如下:

{
  "model": "gpt-4o",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "What's in this image?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/png;base64,iVBORw0KGgo..."
          }
        }
      ]
    }
  ]
}

挑战在于如何将本地文件转换为 Base64 字符串,特别是在开发和测试过程中需要反复操作时。

常见方法(及其不足)

1. Python 脚本

import base64

with open("screenshot.png", "rb") as f:
    encoded = base64.b64encode(f.read()).decode()
print(encoded)

可以用,但需要安装 Python,需要编写(或找到)脚本,然后从终端复制输出。如果反复测试不同的图片,每次都要运行脚本,再手动将输出粘贴到 JSON 中。

2. 命令行

# macOS / Linux
base64 -i screenshot.png | pbcopy

# Windows PowerShell
[Convert]::ToBase64String([IO.File]::ReadAllBytes("screenshot.png")) | Set-Clipboard

如果记得语法,速度很快,但输出只是一个纯字符串。你没办法验证结果——是正确的图片吗?编码正确吗?只有在发送 API 请求并检查结果后才能知道。

3. 在线 Base64 转换器

很多网站提供拖拽式的文件转 Base64 功能。但显而易见的问题是:你的文件会上传到别人的服务器。测试用的截图或许无所谓,但专有数据、内部文档、医疗图片或任何受保密协议约束的内容就不行了。

更好的方式:粘贴、预览、复制

ViewJSON 提供了更简单的流程。将图片直接粘贴到编辑器中,即时获取 Base64 字符串,所有操作都在浏览器中完成:

  1. 打开 ViewJSON — 访问 viewjson.net
  2. 粘贴图片 — 从任意位置(文件管理器、截图工具、浏览器、设计软件)复制图片,然后在 JSON 编辑器中按 Ctrl+V 粘贴
  3. 查看预览 — ViewJSON 会自动将图片转换为 Base64 并插入为 JSON 字符串值。内联图片预览会立即出现,方便你确认是否是正确的图片。
  4. 复制 Base64 — 点击复制按钮或选择字符串值。你会获得完整的 Base64 编码字符串,可直接粘贴到 API 请求体中。

完整操作流程:

演示:将图片粘贴到 ViewJSON 并获取带有内联预览的 Base64 字符串

处理大型 Base64 字符串

Base64 编码的图片可能非常长。一张高分辨率 JPEG 能产生超过 100,000 个字符。为了保持编辑器流畅,ViewJSON 会自动截断长字符串的显示。但截断只是视觉上的。

当你复制一个被截断的 Base64 值时,ViewJSON 的无损剪贴板恢复机制会自动介入。它会检测到你正在复制截断的字符串,并自动将完整的原始内容恢复到剪贴板。你得到的始终是完整的、未修改的 Base64 字符串,不会是会导致文件损坏的截断版本。

构建完整的 API 请求体

获得 Base64 字符串后,需要将其封装为正确的 API 格式。以下是常见 Vision API 的示例:

OpenAI GPT-4o Vision

{
  "model": "gpt-4o",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "Describe this image" },
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/png;base64,<YOUR_BASE64_HERE>"
          }
        }
      ]
    }
  ],
  "max_tokens": 300
}

Google Cloud Vision

{
  "requests": [
    {
      "image": {
        "content": "<YOUR_BASE64_HERE>"
      },
      "features": [
        { "type": "TEXT_DETECTION" }
      ]
    }
  ]
}

在 ViewJSON 中粘贴图片后,复制生成的 Base64 字符串并插入到 API 请求体中。你也可以使用 ViewJSON 的 API 请求构建器来设置 URL、请求方法、请求头和请求体,然后将整个请求导出为 cURL 命令。

隐私:无需上传

与在线 Base64 转换网站不同,ViewJSON 完全在浏览器中运行。图片转 Base64 的过程使用浏览器内置的 FileReader API 在本地完成,你的图片不会发送到任何服务器。

这使得它适合转换敏感图片:用于医疗 AI 接口的医学影像、用于 OCR 服务的内部文档、用于视觉搜索系统的专有产品图片,或任何你不想上传到第三方转换器的文件。

方法对比

方法 可预览? 隐私 步骤数
Python 脚本 ❌ 不可 ✅ 本地 4-5 步
命令行 ❌ 不可 ✅ 本地 3-4 步
在线转换器 ⚠️ 部分支持 ❌ 需上传 3-4 步
ViewJSON ✅ 内联预览 ✅ 100% 本地 2 步

立即体验

将任意图片粘贴到 ViewJSON,即时获取 Base64 字符串。无需脚本、无需上传、无隐私顾虑。

打开 ViewJSON →