OpenAI GPT image 文生图 API 文档
概念介绍
文生图(Text-to-Image)是一种通过自然语言描述生成对应图像的技术。本API基于OpenAI的GPT模型实现,支持多种图像生成模型和尺寸规格。
详细教程
http://imagemodels.dmxapi.com/
基础信息
- 请求方式: POST
- Base URL:
https://www.dmxapi.cn - 接口路径:
/v1/images/generations - 认证方式: Bearer Token
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| prompt | string | 是 | 图像描述文本 |
| n | int | 否 | 生成图片数量(默认1) |
| model | string | 否 | 模型选择(默认gpt-image-1) |
| size | string | 否 | 图像尺寸(如"1024x1536") |
支持的模型
基础模型
gpt-image-1: OpenAI GPT 图像生成模型- 特点:文本理解与图像生成深度融合,适合文字驱动型创作
- 支持尺寸:1024x1024、1024x1536、1536x1024
- 适用场景:通用图像生成、概念设计、创意表达
专业模型
seedream-4.0: 即梦4 AI绘图大模型- 特点:国内领先的图像生成模型,由豆包团队开发
- 支持尺寸:多种主流尺寸
- 适用场景:高质量艺术创作、商业设计
flux-kontext-max: Black Forest Labs 商业级模型- 特点:商业级精度的图像生成,专业设计标准
- 支持尺寸:多种专业尺寸
- 适用场景:专业设计需求、商业用途
flux-kontext-pro: 上下文感知生成模型- 特点:支持文本+图像输入的上下文感知生成/编辑
- 支持尺寸:灵活尺寸支持
- 适用场景:图像编辑、精准控制生成
轻量模型
nano-banana: 轻量级快速生成模型- 特点:快速生成,适合批量处理
- 支持尺寸:1024x1024、1024x1536、1536x1024
- 适用场景:快速原型、批量生成
Python调用示例
python
# 导入必要的库
import requests # 用于发送HTTP请求
import base64 # 用于处理base64编码的图片数据
from datetime import datetime # 用于生成时间戳
# API配置信息
API_KEY = "sk-************************************" # 替换为你的API密钥
API_URL = "https://www.dmxapi.cn/v1/images/generations" # DMXAPI图片生成接口地址
# 构建请求参数
payload = {
"prompt": "哪吒竖着大拇指,背景广告牌写着 DMXAPI", # 图像描述提示词
"n": 1, # 生成图片的数量
"model": "gpt-image-1", # 使用的AI图片生成模型
"size": "1024x1536", # 生成图片的尺寸(宽x高)
}
# 设置HTTP请求头
headers = {
"Authorization": f"Bearer {API_KEY}", # 身份验证,使用Bearer token格式
"Content-Type": "application/json" # 指定请求内容类型为JSON
}
try:
# 发送POST请求到API接口
response = requests.post(API_URL, json=payload, headers=headers)
response.raise_for_status() # 检查HTTP状态码,如果有错误会抛出异常
# 解析API返回的JSON响应数据
result = response.json()
# 处理返回的图片数据
if 'data' in result and len(result['data']) > 0:
# 遍历返回的每张图片
for i, image_data in enumerate(result['data']):
# 检查是否包含base64编码的图片数据
if 'b64_json' in image_data:
# 获取base64编码的图片数据
base64_data = image_data['b64_json']
# 将base64数据解码为二进制图片数据
image_bytes = base64.b64decode(base64_data)
# 生成唯一的文件名(使用当前时间戳避免文件名重复)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"generated_image_{timestamp}_{i+1}.png"
# 将图片数据保存到本地文件
with open(filename, 'wb') as f:
f.write(image_bytes)
print(f"图片已保存为: {filename}")
# 如果返回的是图片URL链接
elif 'url' in image_data:
print(f"图片URL: {image_data['url']}")
else:
# 如果响应中没有找到图片数据
print("未找到图片数据")
except requests.exceptions.RequestException as e:
# 捕获并处理网络请求相关的异常
print(f"请求失败: {e}")
# 如果异常包含响应信息,打印详细的错误信息
if e.response:
print(f"状态码: {e.response.status_code}")
print(f"响应内容: {e.response.text}")响应示例
接受图片并自动保存到本地文件
json
图片已保存为: generated_image_20251014_193119_1.png常见错误码:
- 401: 认证失败(无效API密钥)
- 400: 请求参数错误
- 429: 请求频率限制
- 500: 服务器内部错误
建议在代码中添加完善的错误处理逻辑,如示例中所示
