Skip to content

图片编辑(上传参考图)

使用参考图 + 文字描述来编辑/生成图片。适合:风格转换、局部修改、图生图、多图融合等场景。

接口地址

POST https://foxapi.chat/v1/images/edits

⚠️ 注意

这个接口使用 multipart/form-data 格式(不是 JSON),需要上传图片文件。

前置条件

  1. 拥有一个 FoxAPI Key(获取教程
  2. Key 分组建议选 codex专用(倍率最低)
  3. 准备参考图片(支持 PNG / JPEG / WEBP,最大 50MB)

基本用法(单张参考图)

curl

bash
curl https://foxapi.chat/v1/images/edits \
  -H "Authorization: Bearer sk-你的Key" \
  -F "model=gpt-image-2" \
  -F "image=@/path/to/reference.png" \
  -F "prompt=把背景改成海边日落" \
  -F "size=1024x1024"

Python

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-你的Key",
    base_url="https://foxapi.chat/v1"
)

response = client.images.edit(
    model="gpt-image-2",
    image=open("reference.png", "rb"),
    prompt="把背景改成海边日落",
    size="1024x1024"
)

print(response.data[0].url)

Node.js

javascript
import fs from 'fs';
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'sk-你的Key',
  baseURL: 'https://foxapi.chat/v1',
});

const response = await client.images.edit({
  model: 'gpt-image-2',
  image: fs.createReadStream('reference.png'),
  prompt: '把背景改成海边日落',
  size: '1024x1024',
});

console.log(response.data[0].url);

PHP

php
<?php
$ch = curl_init('https://foxapi.chat/v1/images/edits');

$postData = [
    'model'  => 'gpt-image-2',
    'image'  => new CURLFile('/path/to/reference.png'),
    'prompt' => '把背景改成海边日落',
    'size'   => '1024x1024',
];

curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $postData,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer sk-你的Key'],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 300,
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo $data['data'][0]['url'];

多张参考图

可以同时上传多张参考图,AI 会根据所有参考图 + prompt 生成结果。

💡 上传方式

多个文件使用同一个字段名 image,不是分号分隔,不是逗号分隔。

curl

bash
curl https://foxapi.chat/v1/images/edits \
  -H "Authorization: Bearer sk-你的Key" \
  -F "model=gpt-image-2" \
  -F "image=@/path/to/img1.png" \
  -F "image=@/path/to/img2.png" \
  -F "image=@/path/to/img3.png" \
  -F "prompt=把这三张图融合成一个场景"

Python

python
response = client.images.edit(
    model="gpt-image-2",
    image=[
        open("img1.png", "rb"),
        open("img2.png", "rb"),
        open("img3.png", "rb"),
    ],
    prompt="把这三张图融合成一个场景",
)

Node.js

javascript
const response = await client.images.edit({
  model: 'gpt-image-2',
  image: [
    fs.createReadStream('img1.png'),
    fs.createReadStream('img2.png'),
    fs.createReadStream('img3.png'),
  ],
  prompt: '把这三张图融合成一个场景',
});

PHP

php
<?php
$ch = curl_init('https://foxapi.chat/v1/images/edits');

// 多张图:同一个字段名用 [] 数组语法
$postData = [
    'model'  => 'gpt-image-2',
    'prompt' => '把这三张图融合成一个场景',
    'image'  => [
        new CURLFile('/path/to/img1.png'),
        new CURLFile('/path/to/img2.png'),
        new CURLFile('/path/to/img3.png'),
    ],
];

curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $postData,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer sk-你的Key'],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 300,
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo $data['data'][0]['url'];

带蒙版(局部编辑)

只修改图片的特定区域,其他部分保持不变:

bash
curl https://foxapi.chat/v1/images/edits \
  -H "Authorization: Bearer sk-你的Key" \
  -F "model=gpt-image-2" \
  -F "image=@/path/to/photo.png" \
  -F "mask=@/path/to/mask.png" \
  -F "prompt=把这个区域改成草地" \
  -F "size=1024x1024"
python
response = client.images.edit(
    model="gpt-image-2",
    image=open("photo.png", "rb"),
    mask=open("mask.png", "rb"),  # 蒙版:白色区域=要修改的部分
    prompt="把这个区域改成草地",
    size="1024x1024"
)
php
<?php
$ch = curl_init('https://foxapi.chat/v1/images/edits');

$postData = [
    'model'  => 'gpt-image-2',
    'image'  => new CURLFile('/path/to/photo.png'),
    'mask'   => new CURLFile('/path/to/mask.png'),
    'prompt' => '把这个区域改成草地',
    'size'   => '1024x1024',
];

curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $postData,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer sk-你的Key'],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 300,
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo $data['data'][0]['url'];

💡 蒙版说明

蒙版是一张黑白图片:

  • 白色区域 = 需要修改的部分
  • 黑色区域 = 保持原样不动
  • 蒙版尺寸必须和原图一致

参数说明

参数类型必填默认值说明
modelstringgpt-image-2模型名称
imagefile参考图片,支持上传多张(同名字段)
promptstring编辑描述,说明想要的效果
maskfile蒙版图片,指定编辑区域
ninteger1生成数量,最多 4 张
sizestring1024x1024输出尺寸:1024x10241024x15361536x1024
qualitystringstandard质量:standardhd
response_formatstringurl返回格式:urlb64_json

返回示例

json
{
  "created": 1749000000,
  "data": [
    {
      "url": "https://..."
    }
  ]
}

如果 response_format 设为 b64_json,返回的是 Base64 编码的图片数据:

json
{
  "created": 1749000000,
  "data": [
    {
      "b64_json": "iVBORw0KGgo..."
    }
  ]
}

计费说明

gpt-image-2 按次计费,编辑图片和生图价格相同。codex专用分组成本最低。

💡 省钱技巧

使用 codex专用 分组的 Key,倍率最低。

常见问题

请求超时 (504)

图片编辑需要 30 秒到 3 分钟,取决于图片大小和复杂度。如果超时:

  1. 等待几分钟后重试
  2. 尝试缩小图片尺寸(建议 1024x1024 以内)
  3. 简化 prompt 描述

提示文件太大

参考图建议控制在 20MB 以内。超过 50MB 会被拒绝。

多图上传没效果

  • 确保每个文件都是独立的 -F "image=@file" 字段
  • 不是 -F "image=@file1;file2"-F "image=@file1,file2"
  • PHP 中使用数组语法:'image' => [new CURLFile(...), new CURLFile(...)]

蒙版不生效

  • 确保蒙版和原图尺寸一致
  • 蒙版必须是 PNG 格式
  • 白色区域 = 要编辑的部分

返回图片和原图差别太大

prompt 写得越具体,效果越可控。建议:

  • 先描述整体风格
  • 再描述要修改的具体内容
  • 避免过于模糊的描述(如"好看一点")

400 Bad Request

检查:

  • image 字段是否正确上传了文件(不是 URL,是文件本身)
  • Content-Type 是否为 multipart/form-data
  • 文件格式是否为 PNG / JPEG / WEBP

© 2026 FoxAPI. All rights reserved.