Skip to content

OpenAI 图片生成与编辑​

本页介绍 OpenAI Images 协议的文本生成图片与图片编辑方法,适用于平台已开通对应兼容路由的渠道,不绑定具体模型或版本。

接入前提​

本页只说明 OpenAI Images 风格的生成与编辑方法。请在 控制台 选择已开通的图片模型,并将示例中的 YOUR_IMAGE_MODEL 替换为实际模型 ID。官方能力不代表当前平台渠道全部支持。

操作平台兼容地址请求类型
文生图POST https://art-api.yuyuflow.com/v1/images/generationsapplication/json
图片编辑POST https://art-api.yuyuflow.com/v1/images/editsmultipart/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

常用字段​

字段类型说明
modelstring显式填写已开通模型 ID,不依赖上游默认模型
promptstring描述主体、构图、光线、风格及需要呈现的文字
ninteger图片数量;建议先用 1 验证,实际数量限制以渠道为准
sizestring可选输出尺寸,取值以当前渠道说明为准
qualitystring可选质量参数,是否支持及可用档位以当前渠道说明为准
response_formatstring仅在渠道明确支持时用于选择返回形式,如 url 或 b64_json
output_formatstring仅在渠道明确支持时用于指定图片编码格式

质量、尺寸、输出格式和编辑字段是否可用,以当前渠道的接口说明为准。先完成只含 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 保存逻辑。

参考与继续阅读​