Skip to content

GPT Image 2 API 调用详解:从零掌握 OpenAI 图像生成接口(2026)

本文更新时间:2026年5月11日,基于 OpenAI 官方 API 文档与最新 Codex 平台信息编写。

GPT Image 2(gpt-image-2)是 OpenAI 于 2026年4月21日发布的全新图像生成模型,Arena ELO 高达 1512 分,在文字渲染、指令遵循和照片真实感三个维度均创下了行业新纪录。随着 DALL-E 2 和 DALL-E 3 将于 2026年5月12日 停止服务,gpt-image-2 已正式成为 OpenAI 图像生成的核心接口。

本文面向开发者,详细介绍 gpt-image-2 API 的调用方式、核心参数、代码示例与生产环境最佳实践。


一、gpt-image-2 API 概览

1.1 基本信息

gpt-image-2 是 OpenAI Images API 中的最新模型,通过 images.generate 接口调用。相较于已停服的 DALL-E 系列,它有以下核心优势:

特性说明
模型标识gpt-image-2
文字渲染准确率约 99%(含中英日韩等多语言)
最高分辨率4096×4096(部分分辨率档位)
生成速度2–4 秒(标准分辨率)
多图生成单次最多 8 张
上下文感知可基于对话历史进行局部编辑
计费方式按张计费,按质量档位分层定价

1.2 与 DALL-E 的关键差异

DALL-E 3 → gpt-image-2 迁移要点:
1. 模型标识从 "dall-e-3" 改为 "gpt-image-2"
2. 新增 quality 参数(auto/medium/high/low)
3. 新增 n 参数上限从 10 提升到 8
4. 新增 style 参数替换为更灵活的控制方式
5. 编辑接口从 mask 模式改为自然语言描述模式

1.3 API 端点

POST https://api.openai.com/v1/images/generations

二、安装与环境准备

2.1 安装 SDK

Python

bash
pip install openai>=1.60.0

JavaScript / TypeScript

bash
npm install openai@latest

2.2 配置 API Key

python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("OPENAI_API_KEY"),  # 建议使用环境变量
    organization="org-xxxxxxxxxxxxxxxx",        # 可选,组织 ID
)
javascript
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  organization: 'org-xxxxxxxxxxxxxxxx', // 可选
});

安全提示:不要将 API Key 硬编码在代码中或提交到版本控制系统。推荐使用环境变量或密钥管理服务(如 AWS Secrets Manager、Vercel Environment Variables)。


三、基础调用:图像生成

3.1 最简调用

python
from openai import OpenAI
client = OpenAI()

response = client.images.generate(
    model="gpt-image-2",
    prompt="一张极简风格的咖啡馆海报,背景浅灰色,
            中央大号粗体文字 'COFFEE & CODE'
            下方小字 '每天都是新的开始'
            整体风格现代、清爽",
)

image_url = response.data[0].url
print(f"生成图片链接: {image_url}")

3.2 核心参数详解

参数类型默认值说明
modelstring必填固定填 gpt-image-2
promptstring必填图像描述,最长 4000 字符
ninteger1生成数量,1–8
qualitystringauto质量档位:auto/medium/high/low
sizestringauto分辨率档位,见下文
stylestringauto风格偏好:vivid/natural/auto
output_formatstringurl输出格式:url(临时链接)或 b64_json(Base64)
response_formatstringurloutput_format,两者等价

3.3 分辨率档位

python
# 方形
client.images.generate(
    model="gpt-image-2",
    prompt="...",
    size="1024x1024",
)

# 横版(16:9)
client.images.generate(
    model="gpt-image-2",
    prompt="...",
    size="1536x1024",     # 或 "1792x1024"
)

# 竖版(9:16)
client.images.generate(
    model="gpt-image-2",
    prompt="...",
    size="1024x1536",     # 或 "1024x1792"
)

# 高清横版
client.images.generate(
    model="gpt-image-2",
    prompt="...",
    size="2048x1024",
)

支持的分辨率档位:

size 参数比例典型应用场景
1024x10241:1社交媒体头像、方形配图
1536x10243:2横版文章配图
1792x102416:9横版封面、桌面壁纸
1024x15362:3竖版海报、手机壁纸
1024x17929:16小红书封面、Instagram Stories
2048x10242:1超宽横幅
2048x20481:1高清印刷(需 high 质量)
4096x40961:14K 输出(实验性,API 层面部分支持)

3.4 质量档位与费用

python
# 质量档位影响费用和生成时间
client.images.generate(
    model="gpt-image-2",
    prompt="...",
    quality="medium",   # 自动选择最优性价比
)
quality费用(美元/张)适用场景
auto系统自动判断默认推荐
low~$0.04快速预览、草图阶段
medium~$0.10标准生产
high~$0.19高清印刷、专业级输出

费用说明:具体价格以 OpenAI 官方定价页(platform.openai.com/docs/models/gpt-image-2)为准,上述数值为参考区间。


四、多图生成与批量调用

4.1 一次生成多张变体

python
response = client.images.generate(
    model="gpt-image-2",
    prompt="一张现代简约风格的品牌 Logo 图,主图形是一只抽象的飞鸟,
            配色以深蓝和金色为主,整体简洁有力",
    n=4,                          # 一次生成 4 张变体
    size="1024x1024",
    quality="medium",
)

# 遍历所有生成的图片
for i, img in enumerate(response.data):
    print(f"图片 {i+1}: {img.url}")

4.2 带编号的多图生成

在 ChatGPT 对话中配合 Thinking 模式使用时,gpt-image-2 最多支持单次生成 8 张连贯图像,非常适合:

  • 故事板(Storyboard)
  • 角色设定集(Character Sheet)
  • 漫画分镜(Manga Panels)
python
response = client.images.generate(
    model="gpt-image-2",
    prompt="生成一组 6 张的漫画分镜,讲述一个人在清晨城市天际线下跑步的故事,
            每张图需保持角色外观一致,配色统一为蓝橙渐变晨曦色调",
    n=6,
    size="1024x1024",
)

五、图片编辑:自然语言局部修改

gpt-image-2 的编辑能力是其最具生产力的特性之一。与 DALL-E 2 的 mask 遮罩编辑模式不同,gpt-image-2 支持通过自然语言描述直接修改图像局部,且无需上传遮罩图。

5.1 基础编辑调用

python
# 第一步:生成基础图像
base_response = client.images.generate(
    model="gpt-image-2",
    prompt="一间现代风格的客厅,明亮温馨,浅色沙发,落地窗,窗外是城市天际线",
)
base_url = base_response.data[0].url

# 第二步:用自然语言描述修改
edit_response = client.images.edit(
    model="gpt-image-2",
    image=base_url,                    # 基础图像(URL 或 Base64)
    prompt="将沙发颜色从浅灰色改为深宝石绿,保持光影和其他家具完全不变",
)

5.2 常用编辑操作

python
# 添加元素
edit_response = client.images.edit(
    model="gpt-image-2",
    image=original_url,
    prompt="在桌面右侧添加一杯冒着热气的咖啡,放在木制杯垫上,光影与现有环境匹配",
)

# 删除元素
edit_response = client.images.edit(
    model="gpt-image-2",
    image=original_url,
    prompt="移除画面左侧的人物,背景保持完整,填补移除后露出的空间",
)

# 替换元素
edit_response = client.images.edit(
    model="gpt-image-2",
    image=original_url,
    prompt="将墙上的装饰画换成一幅黑白城市建筑摄影,保持画框不变",
)

# 颜色调整
edit_response = client.images.edit(
    model="gpt-image-2",
    image=original_url,
    prompt="将天空从蓝色改为黄昏的橙紫色渐变,地面光照同步调整为暖色调",
)

# 风格变换
edit_response = client.images.edit(
    model="gpt-image-2",
    image=original_url,
    prompt="将画面整体转换为水彩画风格,笔触柔和,色彩淡雅",
)

5.3 传入本地文件(Base64 方式)

python
import base64

# 读取本地图片并转为 Base64
with open("original_photo.jpg", "rb") as f:
    image_bytes = f.read()
image_b64 = base64.b64encode(image_bytes).decode("utf-8")

response = client.images.edit(
    model="gpt-image-2",
    image=f"data:image/jpeg;base64,{image_b64}",   # 使用 data URI 格式
    prompt="将图中人物的背景替换为海边日落场景",
)

六、完整生产级代码示例

6.1 Python:带重试机制的封装

python
import time
from openai import OpenAI, RateLimitError, APIError
from pathlib import Path

def generate_image(
    prompt: str,
    model: str = "gpt-image-2",
    n: int = 1,
    size: str = "1024x1024",
    quality: str = "medium",
    output_format: str = "url",
    max_retries: int = 3,
) -> list[dict]:
    """
    生成图像,带重试机制和错误处理。

    返回格式示例:
    [{'url': 'https://...', 'revised_prompt': '...'}, ...]
    """
    client = OpenAI()
    results = []

    for attempt in range(max_retries):
        try:
            response = client.images.generate(
                model=model,
                prompt=prompt,
                n=n,
                size=size,
                quality=quality,
                output_format=output_format,
            )

            for img in response.data:
                results.append({
                    "url": img.url,
                    "revised_prompt": getattr(img, "revised_prompt", None),
                })
            return results

        except RateLimitError:
            if attempt < max_retries - 1:
                wait_time = 2 ** attempt      # 指数退避: 1s, 2s, 4s
                print(f"触发速率限制,等待 {wait_time}s 后重试...")
                time.sleep(wait_time)
            else:
                raise Exception("达到最大重试次数,图像生成失败")

        except APIError as e:
            raise Exception(f"API 错误: {e}")

    return results


# 使用示例
images = generate_image(
    prompt="一张科技感十足的数据可视化大屏截图,
            深色主题,蓝色霓虹强调色,
            顶部标题 '实时业务仪表盘'
            包含折线图、柱状图和数字卡片",
    n=2,
    size="1536x1024",
    quality="medium",
)

for i, img in enumerate(images):
    print(f"第 {i+1} 张: {img['url']}")

6.2 JavaScript / TypeScript:async/await 封装

typescript
import OpenAI from 'openai';

const client = new OpenAI();

interface ImageResult {
  url: string;
  revisedPrompt?: string;
}

async function generateImage(
  prompt: string,
  options: {
    n?: number;
    size?: '1024x1024' | '1536x1024' | '1024x1536' | '1792x1024';
    quality?: 'low' | 'medium' | 'high';
    outputFormat?: 'url' | 'b64_json';
  } = {}
): Promise<ImageResult[]> {
  const {
    n = 1,
    size = '1024x1024',
    quality = 'medium',
    outputFormat = 'url',
  } = options;

  const response = await client.images.generate({
    model: 'gpt-image-2',
    prompt,
    n,
    size,
    quality,
    output_format: outputFormat,
  });

  return response.data.map((img) => ({
    url: img.url,
    revisedPrompt: img.revised_prompt,
  }));
}

// 使用示例
async function main() {
  try {
    const images = await generateImage(
      '一张极简风格的产品详情页 mockup,浅白色背景
       顶部导航栏居中,主体区域为产品图片占位,
       底部有一排产品参数标签',
      { n: 3, size: '1536x1024' }
    );

    images.forEach((img, i) => {
      console.log(`图片 ${i + 1}: ${img.url}`);
    });
  } catch (error) {
    console.error('生成失败:', error);
  }
}

main();

七、提示词工程最佳实践

7.1 高质量提示词结构

text
[主体描述] + [环境/背景] + [风格/美学] + [光线/氛围] + [技术参数(可选)]

好的提示词示例:
"一位亚洲年轻女性的人像照,坐在咖啡馆窗边,
 侧逆光勾勒出发丝轮廓,背景虚化为暖色调室内,
 浅米色针织衫,自然微笑,
 摄影风格参考 85mm f/1.4 大光圈人像,
 浅景深,柔和散景"

7.2 文字渲染提示词技巧

GPT Image 2 的文字渲染是其最强能力之一,但提示词写法仍有技巧:

python
# 明确的排版描述
prompts = [
    "海报顶部居中粗体大标题 '限时特惠',下方副标题小字 '全场5折起',底部联系信息",
    "名片正面:上方姓名 '张明'(深蓝粗体),中间职位 '产品总监',下方公司名 'FutureTech' 和联系方式",
    "咖啡杯杯套侧面:手写风格文字 'Have a nice day',字体为温暖的咖啡色",
]

for p in prompts:
    response = client.images.generate(
        model="gpt-image-2",
        prompt=p,
        n=2,
        size="1024x1024",
    )

7.3 避免的常见错误

❌ 避免:模糊抽象的描述
   "一张好看的图片" / "看起来专业一点"

✅ 推荐:具体可感的描述
   "摄影级产品图,白色背景,一瓶透明玻璃香水瓶,
    淡金色液体,柔和顶部光源,照片边缘有浅阴影,
    极简风格,无背景杂物"

八、速率限制与计费

8.1 速率限制

订阅计划生成限制(每分钟)备注
Free (体验额度)少量适合尝鲜
Pay-as-you-go按 Tier 级别可申请提升
ChatGPT Plus ($20/月)含在订阅内约每天 50–100 张(对话内)
API按套餐等级独立限额,与 ChatGPT 分开

8.2 API 费用参考

质量档位1024×10241536×1024 / 1024×1536更高分辨率
low~$0.04~$0.06依分辨率递增
medium~$0.10~$0.15依分辨率递增
high~$0.19~$0.28依分辨率递增

国内使用建议:如需在国内调用 API,可通过 OpenAI 官方 API 充值(需信用卡)或使用支持 OpenAI API 格式的第三方代理服务(注意选择合规服务商)。


九、国内使用方案

9.1 官方 API(需网络环境)

python
# 与上文完全一致的代码,只需替换 endpoint
client = OpenAI(
    api_key=os.environ["OPENAI_API_KEY"],
    base_url="https://api.openai.com/v1",  # 官方地址
)

9.2 国内镜像平台调用

部分国内平台提供了兼容 OpenAI API 格式的调用接口,可在不改变代码的情况下接入:

python
# 只需替换 base_url 和 API Key,无需修改其他代码
client = OpenAI(
    api_key="your-platform-api-key",           # 国内平台提供的 Key
    base_url="https://api.lazymanchat.com/v1", # 平台 API 地址
)

response = client.images.generate(
    model="gpt-image-2",
    prompt="你的图像描述",
    n=1,
    size="1024x1024",
)

平台推荐:选择时请确认平台是否透明使用官方 API、数据隐私政策是否完善、是否有明确的运营主体。


十、常见问题解答(FAQ)

Q1: gpt-image-2 和 DALL-E 3 的 API 调用方式完全兼容吗?

A:基本兼容,但有以下需要关注的变更:

  • 模型名从 dall-e-3 改为 gpt-image-2
  • quality 参数从 standard/hd 改为 low/medium/high/auto
  • style 参数简化为 vivid/natural/auto
  • 新增 output_format 参数支持 urlb64_json

建议在生产环境中建立配置映射层,便于后续模型切换。

Q2: 生成的图片版权归属谁?可以商用吗?

A:通过 OpenAI API(包括 gpt-image-2)生成的图像,用户拥有生成后图像的使用权,可以用于商业目的。但需遵守 OpenAI 的使用政策,不得生成侵犯他人商标、版权或肖像权的内容。

Q3: 为什么有时候文字渲染会出现错误?

A:GPT Image 2 的文字渲染准确率约 99%,但以下情况可能出现偏差:

  • 极小的字号(信息图中密集的说明文字)
  • 非常规字体或手写风格字体
  • 复杂的多语言混排(如同一行同时包含中文、阿拉伯语和拉丁字母)

遇到文字问题时,可通过对话迭代方式让模型重新渲染。

Q4: 如何选择合适的质量档位?

A

  • 快速预览 / 对比选择:使用 low,费用最低,速度最快
  • 标准生产内容:使用 medium,性价比最优
  • 高清印刷 / 正式交付:使用 high,细节最丰富

Q5: 编辑接口(images.edit)支持 Base64 传入本地图片吗?

A:支持。需要使用 data:image/[format];base64,[base64数据] 的 URI 格式传入:

python
import base64

with open("photo.jpg", "rb") as f:
    b64 = base64.b64encode(f.read()).decode("utf-8")

response = client.images.edit(
    model="gpt-image-2",
    image=f"data:image/jpeg;base64,{b64}",
    prompt="将图片背景替换为纯白色",
)

Q6: API 生成的图片会过期吗?

A:通过 url 方式返回的图片链接为 OpenAI 的临时 URL,通常有效期为 60 分钟。建议及时下载到本地存储。长期使用建议将图片上传至自己的 CDN 或对象存储(如 S3、阿里云 OSS)进行持久化。


十一、总结

gpt-image-2 API 将 OpenAI 的图像生成能力提升到了一个新的台阶,其核心优势体现在三个层面:

  1. 文字渲染:约 99% 的准确率使 AI 生图首次真正可以用于含文字的生产场景,设计师可以告别 Photoshop 修字环节
  2. 推理驱动的生成:通过先理解再出图的机制,显著提升了复杂指令的遵循度
  3. 自然语言编辑:无需 mask 遮罩,用对话即可精准修改图像局部,大幅降低图像编辑门槛

对于开发者而言,gpt-image-2 与 DALL-E API 的高度兼容性使得迁移成本可控。建议从基础调用开始,逐步掌握多图生成、局部编辑和提示词优化三个核心能力,构建稳定高效的生产工作流。


::: card 推荐入口 体验 GPT Image 2 的最简方式:通过 ChatGPT 对话直接生成图像,无需任何代码:


本文标签:gpt-image-2 API, GPT Image 2, OpenAI图像生成, API调用教程, Python图像生成, JavaScript图像生成, AI绘图接口, OpenAI Images API

免责声明:本网站与 OpenAI 官方并无任何关联,不代表 OpenAI 官方立场。我们仅为用户提供 ChatGPT 相关的中文使用指南和资讯。