Skip to content

图片生成教程

本页适用于使用 gpt-image-2 分组密钥 的用户。
文档同时保留两套用法:

  • 简单版:终端直接生成,返回图片 URL
  • 推荐版:自动下载并无损保存到本地

请注意:

  • 接口地址:https://sub2api.mycodexhub.xyz/v1/images/generations
  • 模型名必须填写:gpt-image-2
  • 不要填写:image-2
  • codex 分组密钥默认不用于图片生成

一、简洁版:终端直接生成,返回图片网址

这个版本最适合先测试接口是否正常。
执行后会返回一个图片 URL,你可以:

  • 直接复制到浏览器查看
  • 或者再手动下载到本地

1. Linux / macOS 终端

bash
curl --request POST "https://sub2api.mycodexhub.xyz/v1/images/generations" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer 你的_gpt-image-2_分组密钥" \
  --data '{
    "model": "gpt-image-2",
    "prompt": "一个中国现代美女写实肖像,柔和摄影棚光线,高级感,半身照,皮肤自然,五官精致,背景简洁",
    "size": "1024x1024"
  }'

2. Windows PowerShell

powershell
$headers = @{
  "Content-Type" = "application/json"
  "Authorization" = "Bearer 你的_gpt-image-2_分组密钥"
}

$body = @{
  model  = "gpt-image-2"
  prompt = "一个中国现代美女写实肖像,柔和摄影棚光线,高级感,半身照,皮肤自然,五官精致,背景简洁"
  size   = "1024x1024"
} | ConvertTo-Json

Invoke-RestMethod -Method Post `
  -Uri "https://sub2api.mycodexhub.xyz/v1/images/generations" `
  -Headers $headers `
  -Body $body

3. 成功返回示例

成功时通常会返回:

json
{
  "created": 1778511612,
  "data": [
    {
      "url": "https://oss.filenest.top/uploads/xxxxxxxx.png"
    }
  ],
  "usage": {
    "total_tokens": 851,
    "input_tokens": 86,
    "output_tokens": 765
  }
}

你只需要把 https://oss.filenest.top/uploads/xxxxxxxx.png 复制到浏览器里打开,就能查看图片。

4. 手动下载图片到本地

如果你已经拿到了图片 URL,可以直接下载。

Linux / macOS

bash
curl -L "图片URL" -o result.png

例如:

bash
curl -L "https://oss.filenest.top/uploads/192953a1-55da-41a4-8cff-533bc45fb0d9.png" -o result.png

Windows PowerShell

powershell
Invoke-WebRequest -Uri "图片URL" -OutFile "C:\Users\你的用户名\Desktop\result.png"

二、推荐版:直接无损保存到本地

如果你不想先看 JSON 再复制 URL,推荐使用下面这个跨平台 Python 模板。
它会:

  • 自动请求图片生成
  • 自动解析图片 URL
  • 自动下载原图到本地
  • 不会压缩图片

1. 新建文件

文件名建议:

text
generate_image.py

2. 复制下面代码

python
import argparse
import json
import os
import sys
import urllib.request
import urllib.error


def post_json(url, payload, api_key):
    data = json.dumps(payload).encode("utf-8")
    req = urllib.request.Request(
        url,
        data=data,
        method="POST",
        headers={
            "Content-Type": "application/json",
            "Authorization": f"Bearer {api_key}",
        },
    )
    with urllib.request.urlopen(req, timeout=120) as resp:
        body = resp.read()
        return resp.status, body


def download_file(url, output_path):
    req = urllib.request.Request(
        url,
        headers={"User-Agent": "Mozilla/5.0"}
    )
    with urllib.request.urlopen(req, timeout=300) as resp:
        content = resp.read()

    os.makedirs(os.path.dirname(output_path) or ".", exist_ok=True)
    with open(output_path, "wb") as f:
        f.write(content)


def main():
    parser = argparse.ArgumentParser(description="Generate image with gpt-image-2 and save it locally.")
    parser.add_argument("--api-key", required=True, help="Your gpt-image-2 group API key")
    parser.add_argument("--prompt", required=True, help="Image prompt")
    parser.add_argument("--size", default="1024x1024", help="Image size, e.g. 1024x1024")
    parser.add_argument("--output", required=True, help="Output file path, e.g. ./girl.png")
    parser.add_argument("--base-url", default="https://sub2api.mycodexhub.xyz", help="Gateway base URL")
    parser.add_argument("--model", default="gpt-image-2", help="Image model")
    args = parser.parse_args()

    endpoint = args.base_url.rstrip("/") + "/v1/images/generations"
    payload = {
        "model": args.model,
        "prompt": args.prompt,
        "size": args.size
    }

    try:
        status, body = post_json(endpoint, payload, args.api_key)
    except urllib.error.HTTPError as e:
        err_body = e.read().decode("utf-8", errors="ignore")
        print("HTTP Error:", e.code)
        print(err_body)
        sys.exit(1)
    except Exception as e:
        print("Request failed:", str(e))
        sys.exit(1)

    try:
        result = json.loads(body.decode("utf-8"))
    except Exception:
        print("Failed to parse response:")
        print(body.decode("utf-8", errors="ignore"))
        sys.exit(1)

    if "data" not in result or not result["data"]:
        print("No image returned:")
        print(json.dumps(result, ensure_ascii=False, indent=2))
        sys.exit(1)

    image_url = result["data"][0].get("url")
    if not image_url:
        print("Response does not contain image URL:")
        print(json.dumps(result, ensure_ascii=False, indent=2))
        sys.exit(1)

    try:
        download_file(image_url, args.output)
    except Exception as e:
        print("Image generated, but download failed:", str(e))
        print("Image URL:", image_url)
        sys.exit(1)

    print("Image generated successfully.")
    print("Saved to:", os.path.abspath(args.output))
    print("Image URL:", image_url)


if __name__ == "__main__":
    main()

三、各系统使用方式

Windows(PowerShell)

powershell
python .\generate_image.py `
  --api-key "你的_gpt-image-2_分组密钥" `
  --prompt "一个中国现代美女写实肖像,柔和摄影棚光线,高级感,半身照,皮肤自然,五官精致,背景简洁" `
  --size "1024x1024" `
  --output "C:\Users\你的用户名\Desktop\girl.png"

macOS

bash
python3 ./generate_image.py \
  --api-key "你的_gpt-image-2_分组密钥" \
  --prompt "一个中国现代美女写实肖像,柔和摄影棚光线,高级感,半身照,皮肤自然,五官精致,背景简洁" \
  --size "1024x1024" \
  --output "$HOME/Desktop/girl.png"

Linux

bash
python3 ./generate_image.py \
  --api-key "你的_gpt-image-2_分组密钥" \
  --prompt "一个中国现代美女写实肖像,柔和摄影棚光线,高级感,半身照,皮肤自然,五官精致,背景简洁" \
  --size "1024x1024" \
  --output "$HOME/girl.png"

四、常见分辨率建议

推荐优先使用:

  • 1024x1024

如上游支持,也可以尝试:

  • 1536x1024
  • 1024x1536

如果不确定,先用 1024x1024 最稳。

五、常见错误

1. 模型名错误

错误写法:

json
"model": "image-2"

正确写法:

json
"model": "gpt-image-2"

2. 使用了错误分组的 API Key

图片生成请使用:

  • gpt-image-2 分组密钥

不要使用:

  • codex 分组密钥

3. 分组未开启生图权限

后台分组必须开启:

  • 允许当前分组生图

4. 401 Unauthorized

说明 API Key 错误、过期或不属于正确分组。

5. model_not_found

通常说明:

  • 模型名写错
  • 使用了 image-2
  • 上游图片账号没有正确绑定

六、当前使用规则

  • gpt-image-2 分组密钥:用于图片生成
  • 图片生成接口:POST /v1/images/generations
  • 图片模型名:gpt-image-2
  • codex 分组密钥:默认不用于图片生成

控制台:https://sub2api.mycodexhub.xyz | 文档:https://docs.mycodexhub.xyz | 售后 QQ 群:1101461567