Skip to content

gpt-image-2 图片编辑 API 使用文档

基于 gpt-image-2 的图片编辑接口,可通过一张或多张参考图配合文本提示词生成新图,

💡 模型推荐

建议使用后缀带 ssvip 的模型(如 gpt-image-2-ssvip),可获得更稳定的服务质量和更快的响应速度。

🌐 请求地址

text
https://www.dmxapi.cn/v1/images/edits

🤖 模型名称

  • gpt-image-2-ssvip

🧪 图片编辑 示例代码

python
import base64
import json
import os
from datetime import datetime

import requests

# 图片文件配置:官方文档说明可使用一张或多张图片作为参考图
image_paths = [
    "C:/Users/a1/Desktop/测试保存代码/c1.png",
    # "input/source_image_2.png",
]

# API 配置
url = "https://www.dmxapi.cn/v1/images/edits"
api_key = "sk-******************************"
headers = {
    "Authorization": f"Bearer {api_key}",
}

# 请求参数
payload = {
    # 【model】(string, 必填) 指定要调用的图像模型
    # 当前文档对应官方页面中的 GPT Image 系列模型 gpt-image-2
    # 可选值: "gpt-image-2"(当前示例使用的图片编辑模型)
    "model": "gpt-image-2-ssvip",

    # 【prompt】(string, 必填) 描述希望模型如何编辑输入图片
    # 官方文档说明图片编辑基于文本提示词执行,可整体修改,也可结合 mask 做局部替换
    "prompt": "给图里加上卡通版的卡皮巴拉",


    # 【size】(string, 可选) 生成图像的分辨率
    # GPT image 系列可选值:
    #   "auto"       (自动选择最佳尺寸,默认值)
    #   "1024x1024"  (正方形)
    #   "1536x1024"  (横版/landscape)
    #   "1024x1536"  (竖版/portrait)
    #   "2048x2048"  (2k/方形1:1)
    #   "2048x1152"  (2K/横版16:9)
    #   "3840x2160"  (4K/横版16:9)
    #   "2160x3840"  (4K/竖版9:16)
    # 约束: 最大边长 <= 3840px;宽高必须都是 16 的倍数;长宽比不能超过 3:1;总像素必须在 655,360 到 8,294,400 之间
    "size": "1024x1024",

    # 【background】(string, 可选) 控制输出背景模式
    # 官方文档给出的模式为 opaque 或 auto,且 background 支持 auto 自动选择
    # 可选值: "auto"(默认,由模型自动选择) / "opaque"(不透明背景)
    "background": "auto",

    # 【output_compression】(number, 可选) 控制 JPEG  输出压缩等级
    # 仅在 output_format 为 jpeg或webp 时生效;数值越高,压缩越强
    # 取值范围: 0-100
    "output_compression": 100,

    # 【output_format】(string, 可选) 指定输出文件格式
    # Image API 默认格式为 png,也支持 jpeg 
    # 使用 jpeg 通常比 png 更快;若选择 jpeg ,可再配合 output_compression 调整压缩率
    # 可选值: "png"(默认) / "jpeg"(延迟更低) /"webp"(更高压缩率)
    "output_format": "jpeg",

    # 【quality】(string, 可选) 控制渲染质量
    # 官方提供 low / medium / high / auto 四档,其中 low 适合快速草稿、缩略图和快速迭代
    # 超过 2560x1440(3,686,400 像素)的输出在官方文档中标注为 experimental
    # 可选值: "low" / "medium" / "high" / "auto"(默认)
    "quality": "low",

    # 【n】(number, 可选) 单次请求生成的图片数量
    # 官方文档说明可一次返回多张图片,默认返回 1 张;当前页面未给出 gpt-image-2 的明确最大值
    # 使用建议: 先从 1 开始,便于稳定处理返回结果和落盘逻辑
    "n": 2,
}

# 准备图片文件
files = []
for img_path in image_paths:
    try:
        file_name = os.path.basename(img_path)
        ext = img_path.lower().rsplit(".", 1)[-1]
        mime_map = {
            "png": "image/png",
            "jpg": "image/jpeg",
            "jpeg": "image/jpeg",
            "webp": "image/webp",
        }
        mime_type = mime_map.get(ext, "image/png")

        # 【image】(file, 必填) 待编辑的输入图片文件
        # 官方文档说明可使用一张或多张图片作为参考图;若同时提供 mask,mask 会作用在第一张输入图上
        # 在 mask 编辑场景下,原图与 mask 必须具有相同格式和尺寸,且文件大小需小于 50MB
        # mask 还必须包含 alpha 通道;若使用黑白图作为 mask,需要先补充 alpha 通道后再上传
        files.append(("image", (file_name, open(img_path, "rb"), mime_type)))
    except FileNotFoundError:
        print(f"文件未找到: {img_path}")


def main():
    if not files:
        print("没有可用的图片文件")
        return

    response = requests.post(url, headers=headers, data=payload, files=files, timeout=1000)
    print("status:", response.status_code)

    try:
        data = response.json()
    except ValueError:
        print("non-JSON response:", response.text)
        return

    if "data" not in data or not data["data"]:
        print("unexpected response:", json.dumps(data, ensure_ascii=False, indent=2))
        return

    output_dir = "output"
    os.makedirs(output_dir, exist_ok=True)
    ts = datetime.now().strftime("%Y%m%d_%H%M%S")

    for i, item in enumerate(data["data"], start=1):
        if item.get("b64_json"):
            image_bytes = base64.b64decode(item["b64_json"])
        elif item.get("url"):
            image_bytes = requests.get(item["url"], timeout=120).content
        else:
            print(f"第 {i} 张图片无有效数据")
            continue

        filename = f"edited_{ts}_{i}.png"
        output_path = os.path.join(output_dir, filename)
        with open(output_path, "wb") as f:
            f.write(image_bytes)
        print(f"saved {output_path}")


if __name__ == "__main__":
    main()

📦 返回示例

text
status: 200
saved output\edited_20260422_194855_1.png

© 2026 DMXAPI gpt-image-2 图片编辑

一个 Key 用全球大模型