跳到主要内容

图片编辑功能用户手册

概述

Bella OpenAPI 提供了统一的图片编辑接口 /v1/images/edits,该接口通过协议适配器模式支持多个 AI 服务提供商的图片编辑功能,包括 OpenAI、火山引擎等。该接口可以让您通过文本描述来编辑现有图片的特定区域。

API 端点信息

  • URL: /v1/images/edits
  • 方法: POST
  • 内容类型: multipart/form-data
  • 认证: 需要有效的 API 密钥

请求参数

必需参数

参数类型描述
promptstring描述所需图片编辑效果的文本。最大长度为 1000 个字符。

图片输入参数(三选一)

参数类型描述
imageMultipartFile要编辑的图片文件。必须是有效的 PNG 文件,小于 4MB,且为正方形。如果未提供 mask,图片必须具有透明度,该透明度将用作 mask。
image_urlstring要编辑的图片的 URL 地址。必须是有效的 PNG 文件,小于 4MB,且为正方形。
image_b64_jsonstring要编辑的图片的 base64 编码 JSON 格式。必须是有效的 PNG 文件,小于 4MB,且为正方形。

可选参数

参数类型默认值描述
maskMultipartFile-一个额外的图片,其完全透明的区域(例如 alpha 为零的地方)指示应该编辑图片的位置。必须是有效的 PNG 文件,小于 4MB,且与 image 具有相同的尺寸。
modelstring默认模型用于图片编辑的模型名称。
ninteger1要生成的图片数量。必须在 1 到 10 之间。
sizestring-生成图片的尺寸。必须是 256x256、512x512 或 1024x1024 之一。
response_formatstringurl返回生成图片的格式。必须是 urlb64_json 之一。
userstring-代表最终用户的唯一标识符,可以帮助监控和检测滥用。

响应格式

成功响应

{
"background": "transparent",
"created": 1697234567,
"data": [
{
"b64_json": "base64编码的图片数据(当response_format=b64_json时)",
"url": "https://example.com/edited-image.png",
"revised_prompt": "修订后的提示词(如有)",
"output_format": "png",
"quality": "high",
"size": "1024x1024"
}
],
"usage": {
"num": 1,
"size": "1024x1024",
"quality": "high",
"input_tokens": 50,
"input_tokens_details": {
"image_tokens": 40,
"text_tokens": 10
},
"output_tokens": 1024,
"total_tokens": 1074
}
}

错误响应

{
"error": {
"code": "400",
"message": "请求参数格式错误,请使用以下支持的图像上传方式:文件上传",
"type": "Illegal Argument"
}
}

认证

所有请求都需要在请求头中包含有效的 API 密钥:

Authorization: Bearer YOUR_API_KEY

使用示例

使用文件上传编辑图片

curl -X POST "https://your-domain.com/v1/images/edits" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@/path/to/your/image.png" \
-F "mask=@/path/to/your/mask.png" \
-F "prompt=Remove the red car from the image" \
-F "n=1" \
-F "size=1024x1024" \
-F "response_format=url"

使用 URL 输入编辑图片

curl -X POST "https://your-domain.com/v1/images/edits" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image_url=https://example.com/original-image.png" \
-F "prompt=Change the sky to be cloudy" \
-F "model=dall-e-2" \
-F "response_format=b64_json"

使用 Base64 编码编辑图片

curl -X POST "https://your-domain.com/v1/images/edits" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image_b64_json=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." \
-F "prompt=Add flowers to the garden" \
-F "n=2" \
-F "size=512x512"

JavaScript 示例

const formData = new FormData();
formData.append('image', imageFile);
formData.append('prompt', 'Replace the background with a sunset');
formData.append('n', '1');
formData.append('size', '1024x1024');
formData.append('response_format', 'url');

fetch('/v1/images/edits', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
},
body: formData
})
.then(response => response.json())
.then(data => {
console.log('编辑后的图片:', data.data[0].url);
})
.catch(error => {
console.error('错误:', error);
});

Python 示例

import requests

url = "https://your-domain.com/v1/images/edits"
headers = {
"Authorization": "Bearer YOUR_API_KEY"
}

files = {
'image': open('original.png', 'rb'),
'mask': open('mask.png', 'rb')
}

data = {
'prompt': 'Remove the unwanted object from the image',
'n': 1,
'size': '1024x1024',
'response_format': 'url'
}

response = requests.post(url, headers=headers, files=files, data=data)
result = response.json()

if 'data' in result:
print(f"编辑后的图片 URL: {result['data'][0]['url']}")
else:
print(f"错误: {result['error']['message']}")

图片格式要求

支持的图片格式

  • PNG: 主要支持的格式
  • 输入图片: 必须是 PNG 格式
  • 遮罩图片: 必须是 PNG 格式

图片尺寸限制

  • 文件大小: 最大 4MB
  • 尺寸: 必须为正方形
  • 支持的分辨率: 256x256, 512x512, 1024x1024

透明度要求

  • 如果未提供遮罩文件,原图必须包含透明度信息
  • 遮罩文件使用透明区域(alpha = 0)标识需要编辑的区域

错误处理

常见错误代码

错误代码描述解决方案
400请求参数错误检查图片格式、大小和必需参数
401认证失败检查 API 密钥是否有效
413文件过大确保图片文件小于 4MB
429请求过于频繁降低请求频率
500服务器内部错误稍后重试或联系技术支持

参数验证错误示例

{
"error": {
"code": "400",
"message": "请求参数格式错误,请使用以下支持的图像上传方式:文件上传 URL链接 Base64编码",
"type": "Illegal Argument"
}
}

最佳实践

1. 图片准备

  • 使用高质量的 PNG 图片作为输入
  • 确保图片为正方形比例
  • 如需精确控制编辑区域,准备清晰的遮罩文件

2. 提示词优化

  • 使用清晰、具体的描述
  • 避免模糊或矛盾的指令
  • 限制在 1000 个字符以内

3. 性能优化

  • 合理设置图片尺寸,避免不必要的高分辨率
  • 批量处理时控制并发请求数量
  • 使用适当的 response_format 减少传输成本

4. 错误处理

  • 实现重试机制处理临时错误
  • 验证文件格式和大小再发送请求
  • 记录详细的错误日志便于调试

配置说明

渠道配置

不同的 AI 服务提供商支持不同的输入方式:

{
"supportFile": true, // 支持文件上传
"supportUrl": false, // 支持 URL 输入
"supportBase64": false // 支持 Base64 编码输入
}

系统限制

  • 最大文件上传大小: 4MB (配置在 application.yml)
  • 最大请求大小: 4MB
  • 并发限制: 根据 API 密钥和渠道配置动态调整

监控和调试

请求追踪

  • 每个请求都会生成唯一的追踪 ID
  • 可通过日志系统查看详细的请求处理过程
  • 支持实时监控请求成功率和响应时间

使用统计

  • 自动计算和记录图片编辑的使用量
  • 提供详细的 token 消耗统计
  • 支持按用户、模型、时间段的使用分析

技术支持

如果在使用过程中遇到问题,请:

  1. 检查 API 文档确保参数正确
  2. 查看错误响应中的详细信息
  3. 确认网络连接和认证配置
  4. 联系技术支持团队获得帮助