Skip to content

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,字段包含 promptnmodelsize,并用 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}")

参考

http://imagemodels.dmxapi.com/

一个 Key 用全球大模型