图像/图像生成与编辑

通过 UniGateway 使用 gpt-image-2 和 Gemini 图像模型生成与编辑图片。

图像生成与编辑

通过 UniGateway 生成和编辑图片:gpt-image-2 使用 OpenAI 兼容的 Images API,Nano Banana 系列使用 Gemini generateContent

快速参考

任务模型 ID接口Content-Type
文生图gpt-image-2POST /v1/images/generationsapplication/json
多图生成gpt-image-2POST /v1/images/generationsapplication/json
流式生成gpt-image-2POST /v1/images/generations + stream:trueapplication/json
编辑 / 合成 / 重绘gpt-image-2POST /v1/images/editsmultipart/form-data
Gemini 文生图gemini-3-pro-image-previewgemini-3.1-flash-image-previewPOST /v1beta/models/{model}:generateContentapplication/json
Gemini 图生图同上,parts[] 中增加 inline_data同上application/json

Base URL:Images API 为 https://api.unigateway.ai/v1;Gemini 为 https://api.unigateway.ai

展示名(如 Nano Banana Pro、Nano Banana 2)是产品昵称。模型库 展示可请求的模型 ID。请使用 GET /v1/models 返回的精确 id

认证方式:Authorization: Bearer $UNIGATEWAY_API_KEY

前置条件

  • 已获取 UniGateway API Key,保存在 UNIGATEWAY_API_KEY
  • 已通过 GET /v1/models 确认目标模型可用

gpt-image-2

文生图

curl -sS -X POST "https://api.unigateway.ai/v1/images/generations" \
  -H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "A clean product hero image for an AI gateway dashboard, dark background, soft blue lighting."
  }' > response.json

Python

from openai import OpenAI; import base64
client = OpenAI(api_key="<YOUR_UNIGATEWAY_API_KEY>", base_url="https://api.unigateway.ai/v1")
result = client.images.generate(model="gpt-image-2", prompt="A clean product hero image.")
with open("out.png", "wb") as f: f.write(base64.b64decode(result.data[0].b64_json))

TypeScript

import OpenAI from "openai"; import fs from "fs";
const client = new OpenAI({ apiKey: process.env.UNIGATEWAY_API_KEY, baseURL: "https://api.unigateway.ai/v1" });
const r = await client.images.generate({ model: "gpt-image-2", prompt: "A clean product hero image." });
fs.writeFileSync("out.png", Buffer.from(r.data[0].b64_json, "base64"));

多图生成

curl -sS -X POST "https://api.unigateway.ai/v1/images/generations" \
  -H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2", "prompt": "Four icons: chat, image, video, search.",
    "n": 4, "size": "1024x1024", "quality": "medium", "output_format": "png"
  }' > batch.json

参数

参数必填取值说明
modelgpt-image-2
prompt文本
size1024x10241536x10242048x2048autoW×H,16 的倍数,最大 3840,比例 ≤ 3:1
qualitylow / medium / high / auto默认 auto
n1–10生成图片数量,多图时返回 data[] 数组;使用 use_url 时最多返回 1 个 URL
output_formatpng / jpeg / webp默认 png
output_compression0–100jpeg / webp 有效,压缩质量百分比,整数值
backgroundopaque / auto
moderationauto / low
streamtrueSSE 流式
partial_images0–3流式中间图片数
userstring终端用户标识
use_urltrue返回图片 URL 而非 base64;仅返回 1 张图(n 会被忽略)

流式生成

curl -sS -X POST "https://api.unigateway.ai/v1/images/generations" \
  -H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2", "prompt": "A winter landscape.",
    "stream": true, "partial_images": 2
  }'

保存返回

jq -r '.data[0].b64_json' response.json | base64 -D > output.png    # macOS
jq -r '.data[0].b64_json' response.json | base64 --decode > output.png  # Linux

编辑 / 合成 / 重绘

均使用 POST /v1/images/editsmultipart/form-data 格式。

单图编辑image[] 传入原图:

curl -sS -X POST "https://api.unigateway.ai/v1/images/edits" \
  -H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
  -F "model=gpt-image-2" -F "image[]=@room.png" \
  -F "prompt=将沙发改为米白色,其余保持不变。" \
  -F "quality=high" -F "size=1024x1024" -F "output_format=png" > edit.json

多参考图合成 — 多个 image[]

curl -sS -X POST "https://api.unigateway.ai/v1/images/edits" \
  -H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
  -F "model=gpt-image-2" \
  -F "image[]=@item1.png" -F "image[]=@item2.png" -F "image[]=@item3.png" \
  -F "prompt=将全部物品合成一张白底产品照。" \
  -F "quality=high" -F "output_format=png" > composite.json

局部重绘mask + image[]

curl -sS -X POST "https://api.unigateway.ai/v1/images/edits" \
  -H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
  -F "model=gpt-image-2" -F "mask=@mask.png" -F "image[]=@src.png" \
  -F "prompt=在 mask 区域画一只粉色火烈鸟游泳圈。" > inpaint.json

Mask 要求:与源图尺寸一致、格式相同、≤ 50 MB、含 alpha 通道。

响应格式

{ "created": 1710000000, "data": [{ "b64_json": "..." }] }

Nano Banana(Gemini 图片模型)

文生图和图生图均使用 POST /v1beta/models/{model}:generateContent。图片通过 parts[] 中的 inline_data 传入。

模型API 模型 ID适用
Nano Banana Progemini-3-pro-image-preview最高质量、复杂指令、文字渲染、4K
Nano Banana 2gemini-3.1-flash-image-preview速度优先、高并发、通用

文生图

curl -sS -X POST "https://api.unigateway.ai/v1beta/models/gemini-3-pro-image-preview:generateContent" \
  -H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{ "parts": [{ "text": "你的提示词。" }] }],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"],
      "imageConfig": { "aspectRatio": "16:9", "imageSize": "4K" }
    }
  }'

将模型换成 gemini-3.1-flash-image-preview 即为 Nano Banana 2。

图生图(编辑 / 变换)

B64=$(base64 -i input.png 2>/dev/null || base64 -w0 input.png)
curl -sS -X POST "https://api.unigateway.ai/v1beta/models/gemini-3-pro-image-preview:generateContent" \
  -H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"contents\": [{ \"parts\": [
      {\"text\": \"你的编辑指令。\"},
      {\"inline_data\": {\"mime_type\": \"image/png\", \"data\": \"${B64}\"}}
    ]}],
    \"generationConfig\": {
      \"responseModalities\": [\"TEXT\", \"IMAGE\"],
      \"imageConfig\": { \"aspectRatio\": \"16:9\", \"imageSize\": \"4K\" }
    }
  }"

多张图片:在 parts[] 中继续添加 inline_data 块。

图片尺寸控制

字段取值说明
imageConfig.aspectRatio1:14:33:416:99:16Pro 还支持 2:33:24:55:421:9
imageConfig.imageSize1K2K4KPro 最高 4K;Flash 最高 4K

保存返回

jq -r 'first(..|objects|select(.inlineData?.data)|.inlineData.data)' result.json | base64 -D > out.png  # macOS
jq -r 'first(..|objects|select(.inlineData?.data)|.inlineData.data)' result.json | base64 --decode > out.png  # Linux

响应格式

{
  "candidates": [{
    "content": {
      "parts": [
        { "text": "Here is the generated image." },
        { "inlineData": { "mimeType": "image/png", "data": "..." } }
      ]
    }
  }]
}

使用建议

  • 需要 Images API、SDK 集成或 multipart/form-data 编辑流程时,使用 gpt-image-2
  • 需要最高质量 Gemini 输出时,使用 Nano Banana Pro;需要速度和并发时,使用 Nano Banana 2。
  • Gemini 模型的文生图和图生图使用同一接口。
  • 生产环境将解码后的图片上传到自有对象存储。

常见错误

状态码原因处理
400参数错误或格式不支持检查 promptsizemask
401API Key 无效检查 Authorization 请求头
404模型不可用通过 GET /v1/models 确认
429触发限流退避重试
5xx服务异常指数退避
output_compression 传布尔值(如 true应为 0–100 整数,且仅在 jpeg/webp 下有效
使用 use_url 时设置 n > 1use_url 仅返回 1 张图,n 会被忽略;多图请用默认 base64 返回
output_compressionpng 格式下使用png 不支持压缩参数,请换用 jpeg/webp