卡码笔记-最强八股文
首页
计算机基础
C++
Java
Go
🔥大模型🔥
  • 大模型面经
  • Java面经
  • C++面经
简历专栏
秋招投递表
代码随想录 (opens new window)
首页
计算机基础
C++
Java
Go
🔥大模型🔥
  • 大模型面经
  • Java面经
  • C++面经
简历专栏
秋招投递表
代码随想录 (opens new window)
  • ChatGPT 充值/购买

  • Claude 充值/购买

  • Codex/Claude Opus模型API接入

    • 国内怎么调用GPT Image 2生图?API、4K尺寸和清晰度教程
      • GPT Image 2是什么?和GPT-5.6不是一回事
      • 为什么我用APIDock调用GPT Image 2?
      • 第一步:在APIDock创建Token
      • 第二步:先确认账号能看到gpt-image-2
      • 第三步:用curl生成第一张图
      • Node.js完整代码:直接保存PNG,不打印base64
      • GPT Image 2可以生成多大的图?
      • low、medium、high到底差在哪?
      • PNG、JPEG、WebP怎么选?
      • 怎么让GPT Image 2把中文写对?
      • 为什么返回的是base64,不是图片链接?
      • 常见报错怎么处理?
      • 使用APIDock前,我建议先小额跑通
      • 最后
      • 相关阅读
    • 国内如何丝滑使用Claude Opus 5?Claude Code和API方案
    • 国内如何丝滑使用GPT-5.6?Plus和API完整方案
    • Codex需要海外手机号吗?认证失败怎么办
    • 没有ChatGPT账号,国内怎么用GPT-5.6?
    • 没有Claude账号,国内怎么用Opus 4.8、Fable 5?
    • 国内如何接入Claude Opus 4.8 API?
    • Opus 4.8和Sonnet 4.6怎么选?国内用户模型选择指南
    • GPT-5.6 Luna、Terra、Sol API国内怎么接入?
    • 中转站怎么样?靠谱中转站避坑测评推荐

# 一句提示词,GPT Image 2真把中文图画出来了

最近不少录友问我:GPT Image 2 到底怎么调用?国内能不能直接用 API 生图?

我原来走的是 Responses API + image_generation 工具。能用的时候确实方便,但中间多套了一层文本模型和工具调用,参数也比较绕。接口一调整,最先坏的往往就是这条链路。

后来发现 APIDock (opens new window) 已经直接支持 gpt-image-2。

这次不用让 GPT-5 再去调用生图工具,直接请求图片接口:

POST https://apidock.ai/v1/images/generations
1

我实际跑了一遍,模型、中文标题、人物场景和右下角水印都正常生成。

GPT Image 2生图示例

上面这张图就是通过 APIDock 的 gpt-image-2 生成的,而且用的是它目前支持的 low 清晰度。

标题“一句提示词,画面就出来了”、对白“这次真跑通了!”、状态“正在生成”和右下角“卡码大模型”,都直接出现在原图里。

所以先说结论:APIDock 当前虽然只支持 low,但做公众号插图、博客配图、文章封面和普通产品示意图,已经够用了。

下面我把完整调用过程写清楚,代码可以直接复制。

# GPT Image 2是什么?和GPT-5.6不是一回事

先别把名字混了。

gpt-image-2 是专门负责图片生成和图片编辑的模型。OpenAI 把它定位为当前主力图像模型,输入可以是文字或图片,输出是图片,还支持局部重绘。

它和 gpt-5.6 这类文本、推理模型不是一回事:

模型 主要工作 这篇文章是否使用
gpt-image-2 直接生成或编辑图片 使用
gpt-5.6 文本生成、推理、编程,也可以调用生图工具 不需要

OpenAI 官方提供两种生图路线:

  1. Image API:直接让 gpt-image-2 根据一段提示词生成图片
  2. Responses API:让 GPT-5.6 等主模型在对话中调用 image_generation 工具

如果你的目标就是“一段提示词生成一张图”,Image API 更直接,少一层工具调用,也更容易排查问题。OpenAI 官方图像生成文档 (opens new window)也是这么建议的。

这篇文章走的就是第一条。

# 为什么我用APIDock调用GPT Image 2?

如果你已经有 OpenAI 官方 API Key、付款和网络都正常,当然可以直接调用官方接口。

但很多国内录友真正卡住的不是代码,而是这些事:

  • 没有合适的海外付款方式
  • 官方 API 网络不稳定
  • 不想继续折腾 OpenAI 账号
  • 只是偶尔给文章和项目生成几张图
  • 希望后台能直接看到调用记录和余额变化

我现在用的是 APIDock (opens new window)。注册后创建一个独立 Token,把官方地址换成 APIDock 的地址,模型名仍然填写 gpt-image-2。

整个调用只需要三项配置:

API Base URL:https://apidock.ai/v1
API Token:在APIDock后台创建
模型名:gpt-image-2
1
2
3

这里不需要 ChatGPT Plus,也不需要把 ChatGPT 密码、邮箱验证码或 Cookie 交给平台。

Token 就是余额钥匙。不要截图发群,不要写进公开仓库。

# 第一步:在APIDock创建Token

先打开 APIDock官网 (opens new window) 注册账号,然后进入后台创建一个新的 Token。

建议单独建一个生图 Token,不要和 Claude Code、Codex 或其他项目共用。这样有三个好处:

  • 调用记录更容易核对
  • 可以单独控制额度
  • 不小心泄露时,只需要删除这一枚 Token

拿到 Token 后,在终端设置两个环境变量:

export OPENAI_API_KEY="替换成你的APIDock Token"
export OPENAI_BASE_URL="https://apidock.ai/v1"
1
2

不要把真实 Token 直接写进准备提交 Git 的代码文件。

# 第二步:先确认账号能看到gpt-image-2

可以先请求模型列表:

curl -sS "${OPENAI_BASE_URL}/models" \
  -H "Authorization: Bearer ${OPENAI_API_KEY}" \
  | jq -r '.data[] | select(.id == "gpt-image-2") | .id'
1
2
3

正常会输出:

gpt-image-2
1

如果没有任何输出,先别急着生成。检查 Base URL、Token,以及 APIDock 后台当前是否给你的账号开放了这个模型。

# 第三步:用curl生成第一张图

最小请求如下:

curl -sS "${OPENAI_BASE_URL}/images/generations" \
  -H "Authorization: Bearer ${OPENAI_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "画一张温馨的手绘卡通图:一位程序员和友善的AI机器人击掌庆祝,浅灰白背景,柔和马卡龙色,画面上方写中文标题:生图接口已跑通",
    "size": "1536x1024",
    "quality": "low",
    "output_format": "png"
  }' \
  | jq -r '.data[0].b64_json' \
  | base64 --decode > gpt-image-2-demo.png
1
2
3
4
5
6
7
8
9
10
11
12

macOS 自带的 base64 如果不支持 --decode,把最后一行改成:

  | base64 -D > gpt-image-2-demo.png
1

这里最关键的是四个参数:

{
  "model": "gpt-image-2",
  "size": "1536x1024",
  "quality": "low",
  "output_format": "png"
}
1
2
3
4
5
6

尤其是 quality。APIDock 当前只支持 low,不要照搬官方示例改成 medium 或 high。

# Node.js完整代码:直接保存PNG,不打印base64

curl 适合验证接口。真正接进项目,我更建议用下面这段 Node.js:

import fs from "node:fs";

const apiKey = process.env.OPENAI_API_KEY;
const baseUrl = process.env.OPENAI_BASE_URL || "https://apidock.ai/v1";

if (!apiKey) {
  throw new Error("缺少 OPENAI_API_KEY");
}

const response = await fetch(`${baseUrl}/images/generations`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "gpt-image-2",
    prompt: `
画一张手绘卡通风格插画:柔和暖色调、扁平手绘、线条圆润可爱。
场景:年轻程序员把提示词交给友善的圆脑袋AI机器人,机器人正在画画。
构图:横版,上方留出标题区,人物和画架位于中央安全区域。
必须出现的文字:标题“生图接口已跑通”,右下角水印“卡码大模型”。
要求:中文逐字呈现,不增字、不漏字、不生成乱码。
禁止:不要3D,不要写实,不要其他品牌或水印。
    `.trim(),
    size: "1536x1024",
    quality: "low",
    output_format: "png",
  }),
  signal: AbortSignal.timeout(300_000),
});

const result = await response.json();

if (!response.ok) {
  throw new Error(`生图失败(${response.status}):${JSON.stringify(result.error)}`);
}

const imageBase64 = result.data?.[0]?.b64_json;
if (!imageBase64) {
  throw new Error("响应中没有 data[0].b64_json");
}

fs.writeFileSync(
  "gpt-image-2-demo.png",
  Buffer.from(imageBase64, "base64"),
);

console.log("图片已保存:gpt-image-2-demo.png");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

保存为 generate-image.mjs,然后执行:

node generate-image.mjs
1

这段代码不会把 base64 打到终端,只会把它解码成 PNG 文件。生产环境也应该这样做,否则一张图就可能塞满整页日志。

# GPT Image 2可以生成多大的图?

这是大家最关心的问题。

按照 OpenAI 当前 API 参考 (opens new window),gpt-image-2 已经不只支持三种固定尺寸,还支持自定义 WIDTHxHEIGHT。

但自定义尺寸有四条规则:

  1. 宽和高都必须是 16 的倍数
  2. 宽高比必须在 1:3 到 3:1 之间
  3. 高于 2560×1440 属于实验范围
  4. 当前最高支持 3840×2160

常见尺寸可以这样选:

用途 建议尺寸 比例 说明
头像、图标、方形配图 1024x1024 1:1 最稳妥,构图简单
文章横图、博客配图 1536x1024 3:2 本文通过APIDock实测成功
竖版海报、人物全身图 1024x1536 2:3 适合手机阅读
视频封面、宽屏头图 1536x864 16:9 官方尺寸规则允许,适合严格宽屏
2K宽屏图 2560x1440 16:9 细节更多,文件也更大
4K宽屏图 3840x2160 16:9 官方最高上限,属于实验尺寸范围

这里要说清两个边界。

第一,最高支持 4K,不等于每张图都应该生成 4K。 尺寸越大,等待时间、输出量和文件体积通常也会增加。

第二,4K 是 gpt-image-2 的官方模型能力。中转线路可能根据当前服务情况限制部分实验尺寸。APIDock 这边我已经实测 1536x1024 可以稳定生成;第一次调用建议先用这个尺寸跑通,再测试自定义 16:9 或 4K。

# low、medium、high到底差在哪?

OpenAI 官方的 gpt-image-2 定义了四种质量设置:

  • auto:模型自动选择
  • low:速度和成本优先
  • medium:细节和成本折中
  • high:细节优先

但这说的是官方模型能力。

APIDock 当前只支持 low。 通过 APIDock 调用时,直接固定:

"quality": "low"
1

别担心,low 不是“只能生成糊图”。

图片尺寸和渲染质量是两个不同参数:

  • size 决定输出图片有多少像素
  • quality 更影响细节密度、纹理、文字和复杂场景的表现

我前面展示的卡通图,就是 1536x1024 + low 生成的。中文标题、短对白、人物表情和场景道具都够清楚,压缩到网页尺寸后照样能看。

对这些场景,low 已经够用:

  • 公众号和博客文章配图
  • 知识类卡通插画
  • 社交媒体配图
  • 产品原型占位图
  • 简单封面和海报草稿
  • 批量生成视觉方案

如果你的目标是超精细商品图、密集信息图、很小的文字、需要放大打印的大海报,low 就不一定够。当前 APIDock 线路不适合硬做这种任务,别通过后期放大假装细节真的存在。

# PNG、JPEG、WebP怎么选?

GPT Image API 支持 png、jpeg 和 webp。不过通过 APIDock 第一次跑,建议直接选 PNG:

"output_format": "png"
1

原因很简单:兼容性最好,文字边缘也更稳,排查 base64 解码时最省事。

格式 适合场景 特点
PNG 插画、带文字图片、需要后期处理 清晰、无损,文件较大
JPEG 写实照片、对体积敏感 文件小,但文字边缘可能有压缩痕迹
WebP 网页展示 体积通常更小,现代浏览器兼容良好

JPEG 和 WebP 还可以配合 output_compression 控制压缩程度。PNG 不使用这个参数。

另外,gpt-image-2 当前不支持透明背景。需要透明素材时,先生成纯色背景,再用抠图工具后处理,不要直接传 background: "transparent" 后疑惑为什么报错。

# 怎么让GPT Image 2把中文写对?

这次让我最意外的是中文。

以前不少生图模型画面没问题,一写汉字就变成乱码。GPT Image 2 已经好很多,但提示词仍然不能只写一句“帮我加个中文标题”。

我的做法是把文字单独列出来:

【必须出现的文字】
标题:“一句提示词,画面就出来了”
程序员对白:“这次真跑通了!”
状态标签:“正在生成”
水印:“卡码大模型”
要求:以上中文逐字呈现,不增字、不漏字、不改字,不生成其他乱码文字。
1
2
3
4
5
6

再补三条约束:

  1. 明确每段文字放在哪里
  2. 一张图不要塞十几段文字
  3. 标题、对白和水印都用引号标出原文

OpenAI 的 GPT Image 提示词指南 (opens new window) 也建议把需要逐字出现的文字明确引用,并说明字体、大小、颜色和位置。

不要把一张技术文档硬塞进生图模型。 图里放一句标题、两三个短标签就够了,详细解释放回文章正文。

# 为什么返回的是base64,不是图片链接?

调用成功后,你会拿到类似这样的 JSON:

{
  "data": [
    {
      "b64_json": "很长的一段base64数据"
    }
  ]
}
1
2
3
4
5
6
7

这不是报错。

GPT Image 模型返回的就是 base64 图片数据。程序要做的是:

读取 data[0].b64_json
        ↓
base64 解码
        ↓
写入 PNG 文件
1
2
3
4
5

不要把它直接复制到 Markdown,也不要整段写进数据库日志。需要在线图片地址,就先保存文件,再上传到自己的对象存储或图床。

# 常见报错怎么处理?

# 401:Token不对

检查:

  • OPENAI_API_KEY 是否真的加载
  • Token 前后有没有空格
  • 有没有误用 OpenAI 官方 Key
  • APIDock 后台的 Token 是否已被删除

# 404:接口地址或模型名写错

正确地址:

https://apidock.ai/v1/images/generations
1

正确模型名:

gpt-image-2
1

不要把模型名写成 gpt-image2、gpt-image-2.0,也不要继续调用旧的 /responses 工具链路。

# 400:quality参数不支持

如果你通过 APIDock 调用时写了:

"quality": "high"
1

改回:

"quality": "low"
1

APIDock 当前只支持 low,这不是你的提示词问题。

# 成功了,却找不到图片URL

去读:

result.data[0].b64_json
1

然后 base64 解码落盘。不要读取 data[0].url。

# 图片文字偶尔写错

别把完整提示词推翻重写,只针对文字重试:

保持人物、画风、构图和配色不变。
只修正标题为:“生图接口已跑通”。
要求逐字正确,不添加其他文字。
1
2
3

如果连续两次仍然写错,就让模型预留干净标题区,后期用可靠中文字体贴字。生图模型进步很快,但生产流程不能全靠运气。

# 使用APIDock前,我建议先小额跑通

任何 API 中转站都不要一上来放大量余额。

我的建议很简单:

  1. 打开 APIDock (opens new window) 注册
  2. 创建一枚只用于生图的 Token
  3. 先请求 /models,确认能看到 gpt-image-2
  4. 用 1024x1024 或 1536x1024、quality: "low" 生成一张图
  5. 回后台核对调用记录和实际扣费
  6. 确认没问题,再接进自己的脚本或内容工作流

具体价格、赠送额度和实验尺寸支持都可能调整,以 APIDock 后台当前显示为准。

别只看“模型列表里有”就开始批量跑。能生成、能落盘、账能对上,这才叫真正跑通。

# 最后

GPT Image 2 的调用没有想象中复杂。

记住四个东西就行:

接口:/v1/images/generations
模型:gpt-image-2
清晰度:low
结果:data[0].b64_json
1
2
3
4

国内不想折腾 OpenAI 官方账号、海外付款和网络,可以用 APIDock (opens new window) 建一枚 Token,先生成一张 1536x1024 的图试试。

一句提示词,画面真就出来了。

# 相关阅读

  • 没有ChatGPT账号,国内怎么用GPT-5.6?
  • GPT-5.6 Luna、Terra、Sol API国内怎么接入?
  • 中转站怎么样?靠谱中转站避坑测评推荐
  • APIDock API接入文档 (opens new window)
  • OpenAI GPT Image 2模型说明 (opens new window)
Last Updated: 8/12/2026, 3:21:56 PM

← 国内怎么用Claude Fable 5? 国内如何丝滑使用Claude Opus 5?Claude Code和API方案 →

评论

验证登录状态...

侧边栏 侧边栏
夜间模式 夜间
卡码简历 卡码简历
代码随想录 代码随想录
卡码投递表 卡码投递表🔥
2026实习校招群 2026群
添加客服微信 2026实习校招客服微信 PS:通过微信后,请发送姓名-学校-年级-2026实习/校招
支持卡码笔记 支持卡码笔记
鼓励/支持/赞赏Carl 卡码笔记赞赏码
1. 如果感觉本站对你很有帮助,也可以请Carl喝杯奶茶,金额大小不重要,心意已经收下
2. 希望大家都能梦想成真,有好的前程,加油💪