OpenAI 图片编辑 API 的应用与使用

0 阅读5分钟

OpenAI 的图片编辑服务使用户能够输入任意数量的图片和指令,并返回修改后的图片。这一功能极大地丰富了图像处理和创意设计的可能性,适用于电商、市场营销、社交媒体内容创作等多个场景。

本文将详细介绍 OpenAI 图片编辑 API 的使用流程,帮助开发者轻松实现图像编辑功能。

应用流程

要使用 OpenAI 图片编辑 API,首先需要访问 OpenAI 图片编辑 API 页面,并点击“获取”按钮以获取请求所需的凭证:

如果您尚未登录或注册,将被自动重定向到登录页面,注册并登录后,会返回到当前页面。在首次申请时,系统会提供免费配额,允许用户免费使用 API。

基本用法

接下来,您可以使用代码进行 API 调用,下面是一个使用 CURL 的示例:

curl -s -D >(grep -i x-request-id >&2) \
  -o >(jq -r '.data[0].b64_json' | base64 --decode > gift-basket.png) \
  -X POST "https://api.acedata.cloud/v1/images/edits" \
  -H "Authorization: Bearer {token}" \
  -F "model=gpt-image-1" \
  -F "image[]=@test.png" \
  -F 'prompt=Create a lovely gift basket with these items in it'

在首次使用此接口时,您需要填写至少四个参数:authorization(直接从下拉列表中选择)、model(选择使用的模型,当前主要有 gpt-image-1)、prompt(生成图像的输入提示),以及 image(需要编辑的图片路径),如下面的图片所示:

以下是一个 Python 的调用示例:

import base64
from openai import OpenAI

client = OpenAI()

prompt = """
Generate a photorealistic image of a gift basket on a white background 
labeled 'Relax & Unwind' with a ribbon and handwriting-like font, 
containing all the items in the reference pictures.
"""

result = client.images.edit(
    model="gpt-image-1",
    image=[
        open("test.png", "rb")
    ],
    prompt=prompt
)

image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)

# 保存图片到文件
with open("gift-basket.png", "wb") as f:
    f.write(image_bytes)

在使用 Python 时,需要设置两个环境变量:OPENAI_BASE_URL,可设置为 https://api.acedata.cloud/openai,以及凭证的 OPENAI_API_KEY,该值从 authorization 获取。在 macOS 上,您可以使用以下命令设置环境变量:

export OPENAI_BASE_URL=https://api.acedata.cloud/openai
export OPENAI_API_KEY={token} 

调用后,您会在当前目录下生成名为 gift-basket.png 的图片,具体结果如下:

至此,我们完成了图像编辑操作。目前,官方的编辑任务仅支持两种模型:dall-e-2gpt-image-1

异步回调

由于 OpenAI 图片编辑 API 的处理时间可能较长,若 API 长时间未响应,HTTP 请求将保持连接,消耗额外的系统资源。因此,该 API 也支持异步回调。

整体流程为:当客户端发起请求时,需要额外指定一个 callback_url 字段。在客户端发起 API 请求后,API 会立即返回一个包含 task_id 字段的结果,表示当前任务 ID。当任务完成后,编辑后的图片结果将以 POST JSON 格式发送到客户端指定的 callback_url,其中也包含 task_id 字段,以便通过 ID 进行结果关联。

具体操作示例如下:

首先,Webhook 回调是一个可以接收 HTTP 请求的服务,开发者应将其替换为自己的 HTTP 服务器 URL。为了方便起见,我们使用公共 Webhook 示例网站 webhook.site/;打开该网站会给您一个 Webhook URL,如下图所示:

复制该网址,可以用作 Webhook。示例网址为 https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab

接下来,我们可以将 callback_url 字段设置为上述 Webhook URL,并填入相应参数,代码如下:

curl -X POST "https://api.acedata.cloud/v1/images/edits" \
  -H "Authorization: Bearer {token}" \
  -F "model=gpt-image-1" \
  -F "image[]=@test.png" \
  -F "prompt=Create a lovely gift basket with these items in it" \
  -F "callback_url=https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"

调用后,您会立即收到以下结果:

{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}

稍等片刻,您可以在 Webhook URL 处查看编辑后的图片结果,内容如下:

{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "b64_json": "iVBORw0KGgo..."
      }
    ]
  }
}

可以看到,结果包含 task_id 字段,data 字段包含与同步调用相同的图像编辑结果,允许通过 task_id 字段进行任务关联。

错误处理

在调用 API 时,如果发生错误,API 会返回相应的错误代码和信息。例如:

  • 400 token_mismatched: 错误请求,可能由于缺少或无效参数。
  • 400 api_not_implemented: 错误请求,可能由于缺少或无效参数。
  • 401 invalid_token: 未授权,令牌无效或缺失。
  • 429 too_many_requests: 请求过多,超出了速率限制。
  • 500 api_error: 内部服务器错误,服务器出现问题。

错误响应示例

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

总结

通过本文,您已经了解如何轻松使用 OpenAI 图片编辑 API 的官方图像编辑功能。希望本文能帮助您更好地集成和使用该 API。如果您有任何疑问,请随时与我们的技术支持团队联系。

OpenAI API 文档 | Ace Data Cloud | 开发者平台

技术标签:#OpenAI #API #图像处理 #Python #异步编程