Vision API リクエスト用に画像を Base64 に変換する方法
2026 年 2 月 22 日公開 · 約 5 分で読めます
Vision API が Base64 を必要とする理由
OpenAI GPT-4o、Google Cloud Vision、Anthropic Claude、Qwen-VL といった最新の画像認識 API は、画像を 2 つの方法で受け付けます。1 つは画像の公開 URL を指定する方法、もう 1 つは画像データを 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 変換ツール
ドラッグ&ドロップで変換できるサイトは多数ありますが、明らかな問題があります:ファイルが他人のサーバーにアップロードされるということです。テスト用のスクリーンショットなら問題ないかもしれませんが、社内資料、医療画像、NDA の対象となるデータには使えません。
もっと良い方法:貼り付けて、プレビューして、コピー
ViewJSON なら、もっとシンプルにできます。画像をエディターに直接貼り付けるだけで Base64 文字列が即座に生成され、すべてブラウザ内で完結します:
- ViewJSON を開く ── viewjson.net にアクセス
- 画像を貼り付ける ── ファイルエクスプローラー、スクリーンショットツール、ブラウザ、デザインツールなどから画像をコピーし、JSON エディター内で Ctrl+V を押すだけ
- プレビューを確認する ── ViewJSON が自動的に画像を Base64 に変換し、JSON 文字列として挿入します。インラインのプレビューがすぐに表示されるので、正しい画像かどうかをその場で確認できます。
- Base64 をコピーする ── コピーボタンをクリックするか文字列を選択するだけ。完全な Base64 エンコード文字列が取得でき、API リクエストにそのまま使えます。
操作の全体像:
巨大な Base64 文字列の処理
Base64 エンコードされた画像は非常に長くなることがあります。高解像度の JPEG 1 枚で 10 万文字を超えることも珍しくありません。エディターの動作を軽快に保つため、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 | ✅ インライン | ✅ 完全ローカル | 2 ステップ |
今すぐ試す
画像を ViewJSON に貼り付けるだけで、Base64 文字列を即座に取得。スクリプト不要、アップロード不要、プライバシーの心配もなし。
ViewJSON を開く →