OpenAI 图片生成与编辑
本页介绍 OpenAI Images 协议的文本生成图片与图片编辑方法,适用于平台已开通对应兼容路由的渠道,不绑定具体模型或版本。
接入前提
本页只说明 OpenAI Images 风格的生成与编辑方法。请在 控制台 选择已开通的图片模型,并将示例中的 YOUR_IMAGE_MODEL 替换为实际模型 ID。官方能力不代表当前平台渠道全部支持。
| 操作 | 平台兼容地址 | 请求类型 |
|---|---|---|
| 文生图 | POST https://art-api.yuyuflow.com/v1/images/generations | application/json |
| 图片编辑 | POST https://art-api.yuyuflow.com/v1/images/edits | multipart/form-data |
调用前确认
以上路径以平台开放 OpenAI Images 兼容路由为前提。官方使用 Bearer API Key;以下平台示例同样以已开通的 Bearer 鉴权渠道为前提,使用平台 Key,而不是 OpenAI Key。若控制台给出的路由或鉴权不同,以该渠道说明为准。
生成图片
将模型名和密钥替换后执行:
bash
curl --fail-with-body -X POST "https://art-api.yuyuflow.com/v1/images/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_IMAGE_MODEL",
"prompt": "一只橘猫坐在窗边,清晨自然光,写实摄影"
}' --output response.json常用字段
| 字段 | 类型 | 说明 |
|---|---|---|
model | string | 显式填写已开通模型 ID,不依赖上游默认模型 |
prompt | string | 描述主体、构图、光线、风格及需要呈现的文字 |
n | integer | 图片数量;建议先用 1 验证,实际数量限制以渠道为准 |
size | string | 可选输出尺寸,取值以当前渠道说明为准 |
quality | string | 可选质量参数,是否支持及可用档位以当前渠道说明为准 |
response_format | string | 仅在渠道明确支持时用于选择返回形式,如 url 或 b64_json |
output_format | string | 仅在渠道明确支持时用于指定图片编码格式 |
质量、尺寸、输出格式和编辑字段是否可用,以当前渠道的接口说明为准。先完成只含 model、prompt 的最小请求,再按需增加可选参数。
按实际响应处理图片
不要假定所有渠道都返回 Base64 或都支持 URL,也不要假定均可通过 response_format 切换返回形式。读取实际返回的 data[].b64_json 或 data[].url;图片编码格式与响应传输方式是不同概念。
编辑图片
准备本地 input.png,用 multipart 上传图片并描述修改目标:
bash
curl --fail-with-body -X POST "https://art-api.yuyuflow.com/v1/images/edits" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "model=YOUR_IMAGE_MODEL" \
-F "image=@input.png" \
-F "prompt=保留主体和构图,将背景改成清晨的花园" \
--output response.json不要手工设置 multipart 的 Content-Type;让 cURL 生成包含 boundary 的请求头。@input.png 表示上传本地文件,而不是传入路径字符串。
| 编辑字段 | 说明 |
|---|---|
model | 已开通且支持图片编辑的模型 ID,示例占位符为 YOUR_IMAGE_MODEL |
image | 待编辑图片;可用格式、上传大小、图片数量及多图字段写法需按渠道确认 |
prompt | 修改要求;明确哪些内容保留、哪些内容改变 |
mask | 可选蒙版;仅在渠道明确支持时使用,文件格式、尺寸和区域含义按渠道说明准备 |
需要局部编辑且渠道支持蒙版时,在上述命令中增加 -F "mask=@mask.png"。蒙版与提示词共同指导生成,不应视为像素级不变保证。
解析与保存结果
非流式响应通常从 data 数组读取图片项。以下仅展示 Base64 返回形式(不能直接解码此示意值),不代表默认格式或所有渠道均支持:
json
{
"data": [
{ "b64_json": "BASE64_IMAGE_DATA" }
]
}保存前先确认 HTTP 请求成功,再读取 response.json。以下 Python 代码按实际字段分支处理:Base64 解码为二进制文件,URL 则提示后续下载,不预设图片编码格式。
python
import base64
import json
from pathlib import Path
result = json.loads(Path("response.json").read_text(encoding="utf-8"))
if result.get("error"):
raise RuntimeError("图片生成失败,请检查服务端错误信息")
images = result.get("data") or []
if not images:
raise RuntimeError("响应中没有图片")
for index, item in enumerate(images):
encoded = item.get("b64_json")
if encoded:
Path(f"output-{index}.bin").write_bytes(base64.b64decode(encoded, validate=True))
elif item.get("url"):
print(f"图片 {index} 返回 URL,请通过 data[{index}].url 获取下载地址并及时保存")
else:
raise RuntimeError("图片项没有 Base64 或 URL,请检查错误信息及渠道响应协议").bin 仅用于避免误标格式;识别实际图片编码后再使用对应扩展名。URL 结果需校验下载地址,使用带超时和大小限制的 HTTP 客户端下载,并检查状态与文件类型;不要向图片下载地址附带平台 API Key,也不要将完整临时链接写入公开日志。
本页使用同步非流式请求。若渠道另有异步封装或启用 stream,需要按对应协议解析,不能直接套用上述 JSON 保存逻辑。

