gemini-2.5-flash-image API 本地多图合并 接口文档
模型名称
nano-banana
gemini-2.5-flash-image
使用 POST 请求
- 接口地址:
POST https://www.dmxapi.cn/v1/images/edits - 请求头:
Authorization: Bearer sk-...、Accept: application/json - 请求体:
multipart/form-data,字段包含prompt、n、model、size,并用image重复上传多张图片。
示例(curl):
bash
curl -X POST "https://www.dmxapi.cn/v1/images/edits" \
-H "Authorization: Bearer sk-***************************************" \
-H "Accept: application/json" \
-F "prompt=使用第一张图片的任务和第二张图片的背景" \
-F "n=1" \
-F "model=gemini-2.5-flash-image" \
-F "size=1x1" \
-F "image=@Example_Image_1_Person.png;type=image/png" \
-F "image=@Example_Image_2_Background.png;type=image/png"注意:
- 使用
-F时无需手动设置Content-Type;curl 会自动添加 boundary。 image字段可出现多次以上传多张图片。- 响应为 JSON;图片地址在
data[].url中返回。
多图合并代码示例 (Python)
python
"""
功能:通过 DMXAPI 的 `v1/images/edits` 接口,以 multipart/form-data 上传两张本地图片,
并根据提示词进行图像编辑合成。示例同时演示响应 JSON 的解析和返回 URL 的解码。
依赖:requests、json、urllib.parse
"""
import requests
import json
import urllib.parse
# API 基础信息:编辑图像的接口地址与认证令牌
API_URL = "https://www.dmxapi.cn/v1/images/edits"
API_KEY = "sk-***************************************" # 替换为你的 DMXAPI 令牌;生产环境中建议改用环境变量或安全管理服务
# 表单字段:与 curl 保持一致,用于控制编辑/生成的结果
data = {
"prompt": "使用第一张图片的任务和第二张图片的背景", # 文本提示,描述编辑目标和合成思路
"n": "1", # 返回图片数量(字符串或数字,按接口要求)
"model": "gemini-2.5-flash-image", # 使用的模型名称
"size": "1x1", # 输出尺寸(由接口定义)
}
# 本地图片路径:两张待上传的图片文件(作为 multipart 文件)
local_image_1_path = r"Example_Image_1_Person.png"
local_image_2_path = r"Example_Image_2_Background.png"
# 请求头:无需手动设置 Content-Type(含 boundary);requests 在 multipart 上传时会自动处理
headers = {
"Authorization": f"Bearer {API_KEY}", # 身份认证
"Accept": "application/json", # 期望返回 JSON
"Accept-Language": "zh-CN", # 响应语言偏好
}
try:
# 以二进制模式打开两张本地图片,构造 multipart 的 files 字段
with open(local_image_1_path, "rb") as f1, open(local_image_2_path, "rb") as f2:
files = [
("image", ("Example_Image_1_Person.png", f1, "image/png")), # 第一张图片
("image", ("Example_Image_2_Background.png", f2, "image/png")), # 第二张图片
]
# 发送 POST 请求:携带表单字段与文件,设置超时避免长时间卡住
response = requests.post(API_URL, headers=headers, data=data, files=files, timeout=120)
response.raise_for_status() # 如果 HTTP 状态码非 2xx,会抛出异常
try:
# 尝试解析响应为 JSON,并打印美化后的内容便于调试
payload = response.json()
print(json.dumps(payload, ensure_ascii=False, indent=2))
# 如果返回中包含 data 字段,则提取其中的图片 URL 并做解码
if isinstance(payload, dict) and payload.get("data"):
for item in payload["data"] or []:
url = item.get("url")
if url:
# 接口可能使用 \u0026 表示 &,先替换再做 URL 解码,便于人读
decoded_url = urllib.parse.unquote(url.replace('\\u0026', '&'))
print(f"解码后的URL: {decoded_url}")
except ValueError:
# 当响应非 JSON(例如直接返回字符串或错误页)时,原样打印文本内容
print(response.text)
except FileNotFoundError as e:
# 当本地图片路径错误或文件不存在时,给出明确的错误提示
print(f"错误:找不到文件 {e.filename}")
except requests.exceptions.RequestException as e:
# 网络层或 HTTP 层请求异常(连接失败、超时、非 2xx 等)
print(f"请求时发生错误: {e}")