Appearance
图片生成教程
本页适用于使用 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 $body3. 成功返回示例
成功时通常会返回:
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.pngWindows PowerShell
powershell
Invoke-WebRequest -Uri "图片URL" -OutFile "C:\Users\你的用户名\Desktop\result.png"二、推荐版:直接无损保存到本地
如果你不想先看 JSON 再复制 URL,推荐使用下面这个跨平台 Python 模板。
它会:
- 自动请求图片生成
- 自动解析图片 URL
- 自动下载原图到本地
- 不会压缩图片
1. 新建文件
文件名建议:
text
generate_image.py2. 复制下面代码
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
如上游支持,也可以尝试:
1536x10241024x1536
如果不确定,先用 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分组密钥:默认不用于图片生成