如何将图片转换为 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 字符串,所有操作都在浏览器中完成:
- 打开 ViewJSON — 访问 viewjson.net
- 粘贴图片 — 从任意位置(文件管理器、截图工具、浏览器、设计软件)复制图片,然后在 JSON 编辑器中按 Ctrl+V 粘贴
- 查看预览 — ViewJSON 会自动将图片转换为 Base64 并插入为 JSON 字符串值。内联图片预览会立即出现,方便你确认是否是正确的图片。
- 复制 Base64 — 点击复制按钮或选择字符串值。你会获得完整的 Base64 编码字符串,可直接粘贴到 API 请求体中。
完整操作流程:
处理大型 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 →