跳到主要内容

GPT-Image-2 图片生成

通过Constreet,你可以使用 OpenAI 原生 Images API 调用 gpt-image-2 生成图片。

这个接口适合:

  • 需要直接文生图的项目
  • 已经兼容 OpenAI Images API 的应用
  • 需要更高分辨率与更稳定文字渲染的场景

接口地址

https://api.constreet.cc/v1

认证方式

在请求头中添加 API 密钥:

Authorization: Bearer YOUR_API_KEY

Generations API

接口说明

用于根据提示词直接生成图片。

请求地址

POST /v1/images/generations

请求示例

curl https://api.Constreet.cc/v1/images/generations \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "model": "gpt-image-2", "prompt": "生成一个Constreet中转站的Logo", "size": "1536x1024", "quality": "high", "n": 1 }'

请求参数

图片编辑 / 图生图:/v1/images/edits

/v1/images/edits 使用 multipart/form-data 上传图片。image 是二进制图片文件,prompt 写清楚希望怎么修改图片。

请求示例

curl https://api.Constreet.cc/v1/images/edits \
-H "Authorization: Bearer YOUR_API_KEY" \
-F 'model=gpt-image-2' \
-F 'prompt=保留图片的整体构图,把色调改成暖黄色调' \
-F 'image[]=@/path/to/your-image.jpg' \
-F 'size=1536x1024' \
-F 'quality=high' \
-F 'n=1'

请求参数

注意事项

  1. 图生图比文生图耗时更长(高清 + mask 场景尤甚),建议请求超时设置为 600 秒(10 分钟)
  2. 如果经过代理,注意代理可能会在 60 秒左右断开长连接,建议将 api.constreet.cc 加入代理直连白名单
  3. 响应结构与文生图一致,返回 b64_json

价格说明

1k/2k/4k统一0.2元一张

接口返回 OpenAI Images API 风格响应:

  • b64_json:直接返回 base64 图片数据
{ "created": 1713772800, "data": [ { "b64_json": "iVBORw0KGgoAAAANSUhEUgAA..." } ]}

支持的尺寸

代码示例

Python(urllib)

import base64import jsonimport osimport urllib.errorimport urllib.requestfrom datetime import datetimeAPI_KEY = os.environ.get("FLASH_API_KEY", "YOUR_API_KEY")API_URL = "https://api.Constreet.cc/v1/images/generations"PROMPT = "生成一个Constreet AI中转站的 Logo 图片"MODEL = "gpt-image-2"SIZE = "auto"QUALITY = "medium"N = 1def generate_image(prompt: str, size: str, quality: str, n: int) -> dict: payload = json.dumps({ "model": MODEL, "prompt": prompt, "size": size, "quality": quality, "n": n, }).encode("utf-8") req = urllib.request.Request( API_URL, data=payload, headers={ "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json", }, method="POST", ) with urllib.request.urlopen(req, timeout=300) as resp: return json.loads(resp.read().decode("utf-8"))def save_image(data_entry: dict, index: int) -> str | None: timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"output_{timestamp}_{index}.png" if data_entry.get("b64_json"): img_bytes = base64.b64decode(data_entry["b64_json"]) with open(filename, "wb") as f: f.write(img_bytes) print(f"[{index + 1}] 已保存到:{filename}") return filename if data_entry.get("url"): url = data_entry["url"] urllib.request.urlretrieve(url, filename) print(f"[{index + 1}] 已下载保存到:{filename}") return filename print(f"[{index + 1}] 未知返回格式:{data_entry}") return Nonedef main(): try: result = generate_image(PROMPT, SIZE, QUALITY, N) except urllib.error.HTTPError as e: body = e.read().decode("utf-8") print(f"[HTTP 错误] {e.code} {e.reason}") print(body) return except urllib.error.URLError as e: print(f"[网络错误] {e.reason}") return data_list = result.get("data", []) for i, entry in enumerate(data_list): save_image(entry, i)if __name__ == "__main__": main()

注意事项

  • 图片生成接口不是聊天接口,不要调用 /v1/chat/completions
  • 建议把请求超时设置为 600 秒,避免高分辨率生成时超时。
  • quality 越高,耗时和费用通常越高;测试时建议先用 lowmedium
  • 当你不确定画幅时,可以先使用 auto,再按需要切换到固定尺寸。

下一步