OpenAI 圖像生成 API 怎麼用:gpt-image 系列、images.generate 與 Responses 工具、尺寸質素和遮罩編輯

用 OpenAI API 生成或編輯圖片,有 Image API 和 Responses 裏的 image_generation 工具兩條路。本文按官方文檔給 Python 和 Node 示例,講 gpt-image 模型選擇、尺寸質素格式參數、遮罩編輯、被攔截時的錯誤處理,以及需要組織驗證的提醒。

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

適用於誰

  • 想在自己的程序裏“用文字生成圖片”或“改一張圖”的開發者;
  • 在 Image API 和 Responses 的 image_generation 工具之間拿不定主意的人;
  • 聽說 GPT Image 要組織驗證、不知道是不是影響自己的人。

結論先說

  1. 官方現在用兩個模型做圖像生成和編輯:gpt-image-2.5-sunburst 適合編輯精度最重要的流程,gpt-image-2.5-flare 適合快速、高質素的日常生成。官方頁面還提到 GPT Image 2.6,但現有示例用的是 2.5,以官方模型頁為準。
  2. 有兩條路:Image API(images.generate 和 images.edit),或者 Responses API 裏的內置 image_generation 工具。
  3. 選擇原則:只要從一個提示詞生成或編輯一張圖,用 Image API;要做對話式、可以反覆修改的圖片體驗,用 Responses API。
  4. 返回的是 Base64,需要自己解碼儲存成文件。
  5. 可能需要組織驗證:官方提示,使用 GPT Image 模型前,你可能需要在開發者控制檯完成 API Organization Verification,具體步驟看官方幫助文章。

圖像生成兩套接口怎麼選:入口、model 怎麼填、適合場景、圖片輸入、結果位置

圖:本站根據 OpenAI 官方《Image generation》 整理的示意圖

一、用 Image API 生成一張圖

Python(先 pip install openai):

python
from openai import OpenAI
import base64

client = OpenAI()

prompt = "一幅兒童繪本風格的插畫:獸醫用聽診器給一隻小水獺聽心跳。"

result = client.images.generate(
    model="gpt-image-2.5-sunburst",  # 以官方模型頁當天為準
    prompt=prompt,
)

image_bytes = base64.b64decode(result.data[0].b64_json)
with open("otter.png", "wb") as f:
    f.write(image_bytes)

Node.js(儲存為 .mjs):

javascript
import OpenAI from "openai";
import fs from "fs";

const openai = new OpenAI();

const result = await openai.images.generate({
  model: "gpt-image-2.5-sunburst", // 以官方模型頁當天為準
  prompt: "一幅兒童繪本風格的插畫:獸醫用聽診器給一隻小水獺聽心跳。",
});

const imageBytes = Buffer.from(result.data[0].b64_json, "base64");
fs.writeFileSync("otter.png", imageBytes);

要一次出多張圖,用 n 參數;不寫預設返回一張。

二、用 Responses 的 image_generation 工具

在 Responses 裏,頂層 model 填一個支持該工具的主線模型,圖像模型寫在工具裏:

python
response = client.responses.create(
    model="gpt-6-astra",  # 主線模型,以官方模型頁當天為準
    input="生成一張圖:一隻灰色虎斑貓抱着一隻圍着橙色圍巾的水獺",
    tools=[{"type": "image_generation", "model": "gpt-image-2.5-sunburst"}],
)

image_data = [
    o.result for o in response.output if o.type == "image_generation_call"
]

if image_data:
    with open("cat_and_otter.png", "wb") as f:
        f.write(base64.b64decode(image_data[0]))

官方說,用這條路可以多輪編輯:把上一輪的 previous_response_id 帶上,再說“現在讓它更寫實一些”,就能在上一張的基礎上繼續改。工具裏有個可選參數 action:auto(讓模型自己決定是新生成還是編輯)、generate(總是新生成)、edit(強制編輯)。如果強制 edit 而上下文裏沒有圖片,會返回錯誤,所以一般保持 auto。

官方還說 Responses 請求的計費除了圖像生成,還包含主線模型本身的 token 用量。支持該工具的主線模型是 gpt-5 及更新的模型,具體到某個模型要看它的詳情頁。

三、尺寸、質素和格式

圖像輸出可以調的參數:size、quality、格式、壓縮、背景、數量、moderation

圖:本站根據 OpenAI 官方《Image generation》 整理的示意圖

官方列出的可配置項:

  • size:推薦 1024x1024(方形)、1536x1024(橫)、1024x1536(豎)。兩個 2.5 模型也支持自定義 WIDTHxHEIGHT,如 1536x864,要求寬高是 16 的倍數、長寬比在 1:3 到 3:1 之間、單邊不超過 3840 像素,總像素在 655,360 到 8,294,400(4K)之間,超過 2560x1440 的解像度官方標為實驗性;
  • quality:low、medium、high、xhigh、max、auto,預設 auto。官方建議快速草稿用 low,最終成品對比更高檔位,在細節、延遲和成本之間取平衡;
  • 格式:預設 png,也可以 jpeg、webp。jpeg 和 webp 可以用 output_compression 設 0 到 100 的壓縮率;官方說 jpeg 比 png 快,在意延遲時優先考慮;
  • 背景:要透明背景,設 background: "transparent",並用 png 或 webp 格式。

四、改圖與遮罩

Image API 的 images.edit 可以:編輯已有圖片;用其他圖片作參考生成新圖;上載圖片加遮罩,只替換遮罩標出的部分。官方遮罩示例(Python):

python
result = client.images.edit(
    model="gpt-image-2.5-sunburst",
    image=open("sunlit_lounge.png", "rb"),
    mask=open("mask.png", "rb"),
    prompt="陽光充足的室內休息區,泳池裏有一隻火烈鳥",
)

with open("composition.png", "wb") as f:
    f.write(base64.b64decode(result.data[0].b64_json))

遮罩的幾條規則:

  • 原圖和遮罩格式、尺寸必須一致,且大小小於 50MB;
  • 遮罩必須帶 alpha 通道,用圖片編輯工具做遮罩時要儲存 alpha 通道;官方還給了用 Pillow 給黑白遮罩補 alpha 通道的示例;
  • 官方特別說明:GPT Image 的遮罩完全基於提示詞,模型把遮罩當作引導,不一定精確按遮罩的形狀來;
  • 傳多張輸入圖時,遮罩作用在第一張上。

在 Responses 裏傳輸入圖,有三種方式:完整網址、Base64 數據 URL、文件 ID,寫法和視覺輸入一致,見 /guides/openai-api-image-input。

五、限制和被攔截時怎麼辦

官方列出的侷限:複雜提示詞可能要處理多達 2 分鐘;文字渲染雖然大幅改善,但仍可能在精確擺放和清晰度上出錯;同一角色或品牌元素在多次生成間可能不一致;對結構化、版面敏感的構圖控制有時不精確。

所有提示詞和生成的圖片都按官方內容政策過濾。moderation 參數可選 auto(預設,標準過濾)或 low(限制較少)。

出錯時的處理:

  • 像對待其他 API 錯誤一樣,看 HTTP 狀態碼或 SDK 異常類型,記錄請求 ID;認證、配額、限速、伺服器錯誤見官方錯誤碼頁面,也可看 /guides/openai-api-error-codes;
  • 有些失敗是用戶可以修正的,error.type 可能是 image_generation_user_error,程序判斷請用 error.code,例如 moderation_blocked;
  • 不改提示詞或輸入圖,不要自動重試這類錯誤;配額錯誤同樣不要自動重試;臨時的限速和伺服器錯誤可以帶退避重試,限速的處理見 /guides/openai-api-429-error;
  • 給最終用戶看的提示保持籠統,moderation_details 裏的階段(input、output、unknown)和粗粒度類別留給開發者日誌。

如果你的應用面向個人用戶,官方建議每個請求帶上一個穩定、保護私隱的 safety_identifier(對用戶名或電郵做哈希,不超過 128 個字符),推薦但非必需;舊的 user 參數已棄用。

六、費用

官方頁面寫有每百萬 token 的價格,並強調同樣的 token 價格不等於每張圖同價:不同模型和質素設定消耗的 token 不同,要看響應裏的 usage 來衡量。流式輸出局部圖(partial_images)每張局部圖額外增加 100 個圖像輸出 token。本文不抄價格,以官方價格頁當天為準,見 /guides/openai-api-price-official-table。

常見問題

Q:返回的怎麼沒有圖片連結?

GPT Image 返回的是 Base64 數據(b64_json),需要自己解碼儲存。

Q:提示 organization 需要驗證?

官方說使用 GPT Image 模型前可能需要完成 API Organization Verification,在開發者控制檯的組織設定裏辦理,具體看官方幫助文章,本站不代辦。

Q:想要矢量圖或動圖?

官方頁面提到 GPT Image 2.6 的 Image API 支持 SVG 和 GIF 輸出,對應 output_format 為 svg 或 gif。這些功能較新,本文沒有展開,寫法以官方當天頁面為準。

參考資料

  • OpenAI 官方:Image generation — https://developers.openai.com/api/docs/guides/image-generation

Nathaniel 的更多內容

  1. 01

    Claude Code 在 Windows 上的常見坑:Git Bash 還是 PowerShell、路徑反斜槓、假報錯、WSL 怎麼選

    Windows 上用 Claude Code,裝好之後最容易踩的是:用哪個 shell、路徑寫法不一致、grep 沒匹配就報錯、鉤子沒生效、WSL 和原生怎麼選。本文逐條按官方文檔整理原因和處理辦法,附三段提示詞和一張對照表。

    Claude0
  2. 02

    Claude Code Hooks 實戰「提交前自動跑測試」:PreToolUse 攔住 git commit,測試不過就退出碼 2,附 Windows 注意點

    只寫一個完整例子:讓 Claude Code 每次要執行 git commit 之前,先自動跑項目測試,沒通過就攔下並把輸出交給它修。本文按官方 Hooks 文檔給出腳本、settings.json 配置、測試方法、排錯和 Windows 的兩處坑。

    Claude0
  3. 03

    Claude Code 自定義斜槓命令與 Skill 實戰:從零寫一個「生成更新日誌」的 /release-notes,含傳參、預執行命令和調試

    概念看過了,還是不知道從哪下手?本文按 Claude Code 官方「Extend Claude with skills」寫一個完整可用的例子:用 /release-notes 根據 git 記錄生成更新日誌,覆蓋目錄、frontmatter、傳參、預執行命令、預授權和調試。

    Claude0
  4. 04

    Claude Code 部署網站:先寫 Dockerfile 和 compose 在本機跑通,再按清單上雲伺服器,別讓它直接改線上

    想讓 Claude Code 幫你把網站部署到雲伺服器。本文只寫通用做法,按 Docker 官方文檔講:讓它寫 Dockerfile、.dockerignore 和 compose,在本機跑通,端口和數據卷怎麼設,再給出上線清單,並說明為什麼不要讓它直接動線上機器。

    Claude0
  5. 05

    Claude Code 寫爬蟲與數據清洗:先查 robots.txt 和網站條款,控制頻率,原始數據留一份再清洗

    想讓 Claude Code 寫爬蟲抓數據再清洗。本文先講合規:robots.txt 不是授權也不是安全措施、網站條款要自己讀;再講怎麼用 Python 標準庫檢查規則、小樣本先試、儲存原始數據,以及用 pandas 清洗,附四段提示詞。

    Claude0
  6. 06

    Claude Code 寫 Chrome 擴展:按 Manifest V3 起步,加載未打包的擴展,改了哪些文件要重新加載

    想讓 Claude Code 幫你寫一個 Chrome 擴展。本文按 Chrome 官方擴展文檔講:manifest.json 的最小寫法、在 chrome://extensions 加載未打包的擴展、哪些改動要刷新、怎麼看控制檯和報錯,再給四段提示詞,以及權限要盡量少。

    Claude0

同產品的其他教學

  1. 01

    OpenAI API 的 token 怎麼算、怎麼估算費用:input_tokens 計數接口、tiktoken 和隱藏的輸出 token

    發請求前想知道會用多少 token?官方有 Responses 的 input_tokens 計數接口,能把文字、圖片、文件、工具定義一起算準;本地 tiktoken 只適合純文本。本文給 Python 和 Node 示例,講輸出 token 為什麼可能比看到的多,以及怎麼估算費用。

    ChatGPT0
  2. 02

    OpenAI API Node.js / TypeScript 快速上手:npm install openai、example.mjs 第一個請求,到流式、函數調用、聯網搜尋

    用 Node.js 調 OpenAI API:設定 OPENAI_API_KEY 環境變量,npm install openai,新建 example.mjs,用 client.responses.create 發出第一個請求。並列出圖片、文件、流式、函數調用、聯網搜尋和錯誤捕獲的 Node 寫法。

    ChatGPT0
  3. 03

    OpenAI API 用量層級(usage tiers)與速率限制怎麼提升:Free、Build、Launch、Grow 和後台 Limits 頁

    OpenAI API 的限速不是固定的:官方按累計購買額度把組織分成 Free、Build、Launch、Grow 四個層級,達到門檻自動升級。本文講 RPM、TPM 等指標、怎麼在後台查自己的限額、響應頭怎麼讀、花費上限和限速的區別,以及怎麼讓限額變得夠用。

    ChatGPT0
  4. 04

    OpenAI API 報錯 400、401、403、404、429、500、503 怎麼排查:按官方錯誤碼頁逐個看原因和解決辦法

    調用 OpenAI API 返回 400、401、403、404、429、500、503,各自什麼意思?本文按官方 Error codes 頁,每個狀態碼一節,寫清官方給的原因和解決辦法,並說明 404 在官方頁面裏的位置、429 的六種情形,附 Python 和 Node 的錯誤捕獲寫法。

    ChatGPT0
  5. 05

    OpenAI Realtime API 是什麼:語音到語音會話、WebRTC 與 WebSocket、臨時密鑰和事件機制

    Realtime API 讓模型直接處理音頻,做可以隨時打斷的語音助手。本文按官方文檔講它是什麼、什麼時候用、瀏覽器接入的流程、session 與事件、可用聲音、60 分鐘會話上限、安全標識,以及它和轉寫、文字轉語音的分工。

    ChatGPT0
  6. 06

    OpenAI API 語音轉文字和文字轉語音怎麼調:gpt-transcribe 轉寫、25 MB 限制,以及多個語音模型的停服日期

    用 OpenAI API 把錄音轉成文字,官方現在推薦 gpt-transcribe;文字轉語音的 speech 接口則已被官方標為棄用。本文給 Python 和 Node 示例,講格式、25 MB 限制、prompt 與 keywords,並寫明官方公佈的停服日期。

    ChatGPT0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~