Claude API 圖片輸入(vision)怎麼傳:base64、url、file_id 三種寫法,數量、大小和 token 怎麼算

想讓 Claude 看圖?在 content 裏放 image 塊,來源可以是 base64、url 或 file_id。本文講三種寫法、支持的格式、數量和 10 MB 單圖限制、按 28 乘 28 補丁估算 token,以及官方列出的識圖侷限。

NNathaniel bigo··原創首發·AI 輔助撰寫
8 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 其他 帳號
本文根據 Claude 官方《Vision》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。代碼裏的模型名取自官方當天示例,請以官方模型頁為準。本站(bigolab.com)不是 Anthropic 官方網站。API 是按用量計費的獨立服務,與 Claude 訂閱分開計算,Key 的獲取見 /guides/claude-api-key-console。

適用於誰

  • 想讓 Claude 識別截圖、票據、圖表、照片的開發者;
  • 在網頁或應用裏的 Claude 能看圖,卻不知道 API 裏怎麼傳的人;
  • 圖片多、請求慢或報錯,想弄清上限和 token 的人。

在 claude.ai 裏直接上載圖片的說明,不屬於本文範圍,網頁端文件限制見 /guides/claude-file-upload-limits。

結論先說

  1. 圖片放進 image 內容塊,和 text 塊一起放在用戶消息的 content 數組裏。
  2. 三種來源:base64(把圖片編碼進請求)、url(給一個公開圖片網址)、file(用 Files API 先上載,再引用 file_id)。
  3. 支持 JPEG、PNG、GIF、WebP。 GIF 動圖只用第一幀。
  4. 數量:每個請求最多 100 張(上下文窗口為 200k token 的模型)或 600 張(其他模型);單張在 Claude API 上最大 10 MB(base64 編碼後)。
  5. 圖片放在文字前面,官方說這樣效果更好。

三種傳圖方式

圖:本站根據 Claude 官方《Vision》 整理的示意圖

一、方式一:base64

把圖片讀成字節、編碼成 base64 字符串,放進請求。Python:

python
import base64
import anthropic

client = anthropic.Anthropic()

with open("chart.png", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

message = client.messages.create(
    model="claude-opus-5-5",  # 以官方模型頁當天為準
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": image_data,
                    },
                },
                {"type": "text", "text": "請描述這張圖裏的主要資訊。"},
            ],
        }
    ],
)
print(message.content[0].text)

media_type 要和圖片真實格式一致:PNG 寫 image/png,JPEG 寫 image/jpeg。TypeScript 裏把文件讀成 base64 的寫法是 fs.readFileSync("chart.png").toString("base64"),其餘結構完全相同。

二、方式二:url

圖片已經在公開網址上,就不必自己編碼:

python
message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {"type": "url", "url": "https://example.com/chart.png"},
                },
                {"type": "text", "text": "這張圖表說明了什麼?"},
            ],
        }
    ],
)

官方提示:如果你用的是 Amazon Bedrock 或 Google 託管的 Claude 模型,這些平台只支持 base64 來源。所以代碼要換平台時,不要預設 url 一定能用。網址必須是伺服器能訪問到的公開地址。

三、方式三:先上載,再引用 file_id

多輪對話裏,每一輪請求都會把完整歷史重發一遍。如果圖片是 base64,圖片字節就會在每一輪重複發送,請求會越來越大、越來越慢。官方的建議是用 Files API 上載一次,之後只引用 file_id:

python
{"type": "image", "source": {"type": "file", "file_id": "file_xxx"}}

上載、管理、限制等細節見 /guides/claude-api-files-api。

四、多張圖、順序和提示詞

一個 content 數組裏可以放多個 image 塊。本站的建議是在每張圖前面用文字標一下,例如“圖 1:”,再放圖片,最後寫問題,這樣模型更容易分清哪句話指哪張圖。這只是一種寫法習慣,官方沒有強制要求。

提醒兩點:

  • 官方建議“先圖後文”,但先文後圖也能正常工作;
  • Claude 不會讀取圖片的元數據(比如拍攝時間、位置),只看畫面內容。

五、數量和大小限制

項目官方限制
每個請求的圖片數200k 窗口的模型 100 張,其他模型 600 張
單張尺寸最大 8000 乘 8000 像素
單張體積Claude API 上 10 MB(base64 編碼後)
請求總大小128 MB(第一方 Claude API)

兩點補充:

  • 超過 20 張圖時有更嚴格的單圖尺寸限制。 它按請求裏所有 image 塊算,包括你重發的歷史輪次裏的圖。被拒絕時錯誤訊息會提到 “many-image requests”。官方給的避免辦法是每邊縮到 3000 像素以內,或把圖片與文檔塊控制在 20 個以內;
  • 圖多時請求總大小常比張數先到上限,這時用 Files API 引用 file_id 可以讓請求體變小。

六、token 怎麼估算

圖片 token 的估算方法

圖:本站根據 Claude 官方《Vision》 整理的示意圖

官方的算法:圖片按 28 乘 28 像素的補丁處理,每個補丁算一個視覺 token,所以一張圖約等於

向上取整(寬 ÷ 28)× 向上取整(高 ÷ 28)個 token。

每個模型有“長邊上限”和“視覺 token 上限”,超過任一個,圖片會先按比例縮小。官方分了兩檔:

檔位適用模型長邊上限視覺 token 上限
高解像度Claude 4.7 及之後的模型2576 像素4784
標準其他模型1568 像素1568

官方表格裏的例子:1000 乘 1000 像素的圖,兩檔都是 1296 個 token,不會縮小;1920 乘 1080 的圖,標準檔縮到 1456 乘 819,約 1560 個 token,高解像度檔不縮小,約 2691 個 token。官方還提醒:高解像度檔同一張圖可能比標準檔多用約三倍視覺 token,不需要那麼高保真時,先自己縮小再發,能省 token、降延遲。

真實費用請用官方的 token 計數接口先量一下,見 /guides/claude-api-count-tokens,價格以官方價格頁當天為準。

七、官方列出的侷限

  • 低質素、旋轉過、小於 200 像素的圖,容易出錯甚至“幻覺”;
  • 位置和座標是近似值,使用前要自己核對;
  • 數物體的個數只能給近似值,物體多又小時容易不準;
  • 不能判斷一張圖是不是 AI 生成的,別依賴它做這件事;
  • 複雜的醫學影像(如 CT、MRI)不是它的設計用途,輸出不能替代專業診斷。

壓縮圖片會減小請求,但 JPEG 壓縮過重會讓文字難以辨認,官方建議檢查實際發出的圖片。

常見問題

Q:圖片能和 PDF 一起發嗎?

可以。PDF 用 document 塊,寫法見 /guides/claude-api-pdf-support。

Q:同一張圖反覆問,能省錢嗎?

可以配合提示詞緩存,見 /guides/claude-prompt-caching。

Q:報錯 400 或 413?

圖片過大、格式不對、數量超限都可能觸發,整體排查見 /guides/claude-api-error-codes。

參考資料

  • Claude 官方:Vision — https://platform.claude.com/docs/en/build-with-claude/vision

Nathaniel 的更多內容

  1. 01

    Claude Code 處理大倉庫:怎麼讓它只看需要的目錄(子目錄 CLAUDE.md、claudeMdExcludes、deny 規則)

    倉庫太大,Claude Code 總在讀無關文件、讀進別的包的規則?本文按官方大倉庫指南講:從哪個目錄啟動、子目錄 CLAUDE.md、claudeMdExcludes、Read 的 deny 規則、worktree.sparsePaths、additionalDirectories,以及一份合併後的配置示例。

    Claude0
  2. 02

    Claude Code 在 CI 裏跑:從本機 claude -p 到 GitHub Actions 的完整例子(自動審 PR、控成本)

    一條線走完 Claude Code 的 CI 用法:先在本機用 claude --bare -p 配 --json-schema 跑通,再寫進 GitHub Actions 用 claude-code-action@v1 自動審 PR,最後加上 --max-turns、超時、並發限制來控成本,並附上常見故障的排查順序。

    Claude0
  3. 03

    Claude Code 自定義 subagent 實例:測試員、調試員、只讀調研員、只讀數據庫員怎麼寫

    四個可直接改的 subagent 實例:跑測試的 test-runner、找根因的 debugger、只讀調研員、用 PreToolUse hook 限成只讀 SQL 的 db-reader;講 tools、disallowedTools、model、maxTurns 怎麼配,怎麼點名調用。

    Claude0
  4. 04

    Claude Code 的 CLAUDE.md 模板:前端、後端、數據分析各一份,附拆分與自檢方法

    直接拿去改的三份 CLAUDE.md 模板(前端、後端、數據分析),每份都控制在官方建議的 200 行以內;再講怎麼用 .claude/rules 的 paths 拆出專屬規則、用 @ 導入長文檔,以及用 /context all 和 /doctor prompt-audit 檢查是否生效。

    Claude0
  5. 05

    Claude Code 自己寫一個插件並發布到 marketplace:plugin.json、marketplace.json、validate 到團隊安裝的完整流程

    想把自己寫的 Skill、Hook 打包給團隊用?按 Claude Code 官方 Plugins 文檔,從目錄結構、plugin.json、claude plugin validate,到寫 marketplace.json、推到 Git、讓同事一條命令安裝,再到版本更新,走完一遍完整流程。

    Claude0
  6. 06

    Claude Code 寫一個會自動觸發的 Skill:從需求到觸發,用 description、when_to_use 和 paths 控制它什麼時候出場

    寫好的 Skill 總是不觸發,或者什麼都觸發?本文按 Claude Code 官方「Extend Claude with skills」走一遍完整實例:把「改數據庫遷移前先檢查」寫成一個會自動出場的 Skill,包含 description、when_to_use、paths、附帶腳本、觸發測試和評估。

    Claude0

同產品的其他教學

  1. 01

    Claude Code 配 Sentry MCP 排查線上報錯:添加命令、瀏覽器授權、貼 issue 連結修 bug 和插件子智能體

    線上報錯只能手動複製堆棧給 Claude Code?Sentry 官方提供 MCP 服務,可以讓它直接讀 issue、堆棧和 trace。本文按 Claude Code 官方 MCP 文檔和 Sentry MCP 官方說明,講添加命令、/mcp 授權、典型排查流程、插件方式和自託管注意事項。

    Claude0
  2. 02

    Claude Code 配 Context7 MCP 查最新文檔:兩種安裝方式、use context7 怎麼寫、指定庫和版本

    Claude Code 寫出來的代碼用了舊版 API?Context7 是一個把庫的最新文檔餵給編程助手的 MCP 服務。本文按 Context7 官方倉庫和文檔,講兩種安裝方式、在 Claude Code 裏的添加命令、use context7 與 library ID 的寫法,以及使用時的注意事項。

    Claude0
  3. 03

    Claude API 用量層級與速率限制:Evaluation / Start / Build / Scale 怎麼分、月度花費上限、自設上限和怎麼申請提額

    Claude API 的限額到底按什麼算?按官方《Rate limits》講清用量層級、RPM / ITPM / OTPM、緩存讀取為何不佔 ITPM、各層級月度花費上限、自設花費上限的 400、工作區限額、響應頭,以及在 Console 裏 Request tier increase 提額。

    Claude0
  4. 04

    Claude API 模型 ID 怎麼寫、怎麼查可用模型:dateless 命名、別名區別、Models API 的 lifecycle 和 capabilities

    model 參數該填什麼?按官方《Models overview》《Model IDs and versioning》《List Models》講清 Claude 模型 ID 的格式、4.6 之前帶日期與之後不帶日期的區別、別名是什麼,以及用 GET /v1/models 查可用模型、生命週期和能力字段。

    Claude0
  5. 05

    Claude API 代碼執行工具(code execution)怎麼用:tools 寫法、上載文件分析、取回生成文件、容器限制和計費

    想讓 Claude API 真的跑代碼做數據分析、生成圖表和文件?按官方《Code execution tool》講清三個工具版本、最小請求、上載 CSV 分析、$OUTPUT_DIR 取回文件、容器內存與聯網限制、錯誤碼、容器複用和計費規則。

    Claude0
  6. 06

    Claude API 聯網搜尋工具(web search tool)怎麼用:tools 寫法、max_uses、域名過濾、引用字段和計費

    想讓 Claude API 回答帶最新資訊?按官方《Web search tool》講清 web_search 工具的三個版本、請求寫法、max_uses、域名過濾、引用字段、錯誤碼和計費,附排查表。

    Claude0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~