Docs

编辑图像

POST/v1/images/edits

根据提示词和源图像编辑图像

本页目录
  1. 请求体
  2. 响应
  3. 请求示例
  4. 响应示例
  5. 注意事项

根据原始图像和提示词创建编辑或扩展的图像。需要 multipart/form-data 内容类型。

这个端点沿用 OpenAI 的 multipart 图像编辑契约,需要使用支持编辑的 OpenAI 图像模型。AnyPath 上的其他图像模型通过 POST /v1/images/generations 提供;你的 API Key 当前可用的模型以 GET /v1/models 为准。

请求体

参数 image

类型:file

位置:body

必填:是

要编辑的图像。格式、大小和尺寸要求取决于所选模型。

参数 prompt

类型:string

位置:body

必填:是

描述所需编辑的文本。

参数 mask

类型:file

位置:body

附加的蒙版图像,其完全透明区域指示编辑位置,仅部分模型支持。

参数 model

类型:string

位置:body

用于编辑的模型。请使用支持编辑的 OpenAI 图像模型,例如 gpt-image-1.5;当前可用列表以 GET /v1/models 为准。

参数 n

类型:integer

位置:body

要生成的图像数量。必须在 1 到 10 之间。

参数 size

类型:string

位置:body

生成图像的尺寸。可选值取决于所选模型(例如 1024x1024)。

参数 response_format

类型:string

位置:body

返回生成图像的格式。必须是 url 或 b64_json。

参数 user

类型:string

位置:body

代表终端用户的唯一标识符,用于滥用监控。

响应

响应字段 created

类型:integer

图像创建时间的 Unix 时间戳。

响应字段 data

类型:array

生成的图像数组。

每个对象包含:

  • url (string): 编辑后图像的 URL(如果 response_format 是 url)
  • b64_json (string): Base64 编码的图像(如果 response_format 是 b64_json)

请求示例

curl -X POST "https://api.anypath.dev/v1/images/edits" \
  -H "Authorization: Bearer sk-your-api-key" \
  -F "model=gpt-image-1.5" \
  -F "image=@sunlit_lounge.png" \
  -F "mask=@mask.png" \
  -F "prompt=阳光明媚的室内休息区,带有游泳池" \
  -F "n=1" \
  -F "size=1024x1024"
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.anypath.dev/v1"
)

response = client.images.edit(
    model="gpt-image-1.5",
    image=open("sunlit_lounge.png", "rb"),
    mask=open("mask.png", "rb"),
    prompt="阳光明媚的室内休息区,带有游泳池",
    n=1,
    size="1024x1024"
)

print(response.data[0].url)
import OpenAI from 'openai';
import fs from 'fs';

const client = new OpenAI({
  apiKey: 'sk-your-api-key',
  baseURL: 'https://api.anypath.dev/v1'
});

const response = await client.images.edit({
  model: 'gpt-image-1.5',
  image: fs.createReadStream('sunlit_lounge.png'),
  mask: fs.createReadStream('mask.png'),
  prompt: '阳光明媚的室内休息区,带有游泳池',
  n: 1,
  size: '1024x1024'
});

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

import (
    "bytes"
    "fmt"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)

    image, _ := os.Open("sunlit_lounge.png")
    defer image.Close()
    part, _ := writer.CreateFormFile("image", "sunlit_lounge.png")
    io.Copy(part, image)

    mask, _ := os.Open("mask.png")
    defer mask.Close()
    maskPart, _ := writer.CreateFormFile("mask", "mask.png")
    io.Copy(maskPart, mask)

    writer.WriteField("prompt", "阳光明媚的室内休息区,带有游泳池")
    writer.WriteField("n", "1")
    writer.WriteField("size", "1024x1024")
    writer.Close()

    req, _ := http.NewRequest("POST", "https://api.anypath.dev/v1/images/edits", body)
    req.Header.Set("Authorization", "Bearer sk-your-api-key")
    req.Header.Set("Content-Type", writer.FormDataContentType())

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    result, _ := io.ReadAll(resp.Body)
    fmt.Println(string(result))
}
<?php
$ch = curl_init('https://api.anypath.dev/v1/images/edits');

$image = new CURLFile('sunlit_lounge.png', 'image/png', 'sunlit_lounge.png');
$mask = new CURLFile('mask.png', 'image/png', 'mask.png');

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer sk-your-api-key'
    ],
    CURLOPT_POSTFIELDS => [
        'image' => $image,
        'mask' => $mask,
        'prompt' => '阳光明媚的室内休息区,带有游泳池',
        'n' => 1,
        'size' => '1024x1024'
    ]
]);

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

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

响应示例

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

注意事项

图像编辑需要使用支持编辑的 OpenAI 图像模型,例如 gpt-image-1.5。根据模型不同,可以用源图像的透明区域标记编辑位置,也可以提供单独的蒙版图像。