OpenAI GPT 图片编辑 API 文档
📡 请求地址
https://www.dmxapi.cn/v1/images/edits🤖 模型名称
| 模型名称 | 状态 |
|---|---|
gpt-image-1 | ✅ 可用 |
gpt-image-1-mini | ✅ 可用 |
dall-e-3 | ❌ 本身不支持 |
💻 Python 代码示例
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
╔══════════════════════════════════════════════════════════════════════════════╗
║ DMXAPI 图片编辑工具 ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ 功能说明:使用 DMXAPI 的图片编辑接口对图片进行 AI 智能编辑处理 ║
╚══════════════════════════════════════════════════════════════════════════════╝
"""
import base64
import json
import os
import requests
from datetime import datetime
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ 图片文件配置 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
image_paths = [
"output/generated_image_20251107_120453_1.png", # 第一张图片路径
# "/path/to/image2.png", # 第二张图片路径(可选)
# "/path/to/image3.png", # 第三张图片路径(可选)
]
"""
重要提示 - 不同模型对图片的要求:
┌─────────────────┬──────────────────────────────────────────────────────┐
│ gpt-image-1 │ • 支持多张图片(最多 16 张) │
│ │ • 文件大小:< 50MB │
│ │ • 支持格式:png、webp、jpg │
│ │ • 尺寸:无限制 │
├─────────────────┼──────────────────────────────────────────────────────┤
"""
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ API 配置 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# DMXAPI 端点地址
url = "https://www.dmxapi.cn/v1/images/edits"
# DMXAPI 密钥(请替换为您自己的密钥)
api_key = "sk-******************************************"
# HTTP 请求头配置
headers = {
"Authorization": f"Bearer {api_key}" # Bearer Token 认证
}
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ 请求参数配置 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
payload = {
# ─────────────────────────────────────────────────────────────────────────
# 【必填参数】模型名称
# ─────────────────────────────────────────────────────────────────────────
"model": "gpt-image-1-mini", # 模型名称
# ─────────────────────────────────────────────────────────────────────────
# 【必填参数】编辑指令
# ─────────────────────────────────────────────────────────────────────────
"prompt": "给哪吒带上一个红色的鸭舌帽,风格保持不变",
# ─────────────────────────────────────────────────────────────────────────
# 【可选参数】生成图像的尺寸
# ─────────────────────────────────────────────────────────────────────────
# • gpt-image-1 支持:
# - 1024x1024 (方形)
# - 1536x1024 (横版)
# - 1024x1536 (竖版)
# - auto (默认,自动选择)
# ─────────────────────────────────────────────────────────────────────────
"size": "1024x1024",
# ─────────────────────────────────────────────────────────────────────────
# 【可选参数】背景透明度设置(仅 gpt-image-1 支持)
# ─────────────────────────────────────────────────────────────────────────
# • transparent - 透明背景
# • opaque - 不透明背景
# • auto - 自动选择(默认)
# ─────────────────────────────────────────────────────────────────────────
"background": "auto",
# ─────────────────────────────────────────────────────────────────────────
# 【可选参数】输入图像保真度(仅 gpt-image-1 支持,不支持 gpt-image-1-mini)
# ─────────────────────────────────────────────────────────────────────────
# 控制模型匹配输入图像风格和特征的程度(尤其是面部特征)
# • high - 高保真度(更贴近原图)
# • low - 低保真度(默认,更有创造性)
# ─────────────────────────────────────────────────────────────────────────
# "input_fidelity": "low",
# ─────────────────────────────────────────────────────────────────────────
# 【可选参数】输出图像压缩级别(仅 gpt-image-1 支持)
# ─────────────────────────────────────────────────────────────────────────
# 取值范围:0-100
# • 0 - 最低质量(最小文件大小)
# • 100 - 最高质量(最大文件大小)
# ⚠️ 注意:仅在输出格式为 webp 或 jpeg 时有效
# ─────────────────────────────────────────────────────────────────────────
"output_compression": 100,
# ─────────────────────────────────────────────────────────────────────────
# 【可选参数】输出图像格式(仅 gpt-image-1 支持)
# ─────────────────────────────────────────────────────────────────────────
# • png - PNG 格式(默认,支持透明)
# • jpeg - JPEG 格式(不支持透明,文件更小)
# • webp - WebP 格式(现代格式,压缩率高)
# ─────────────────────────────────────────────────────────────────────────
"output_format": "png",
# ─────────────────────────────────────────────────────────────────────────
# 【可选参数】图像质量
# ─────────────────────────────────────────────────────────────────────────
# • gpt-image-1 支持:
# - high (高质量)
# - medium (中等质量)
# - low (低质量)
# - auto (自动,默认)
# ─────────────────────────────────────────────────────────────────────────
"quality": "auto",
}
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ 准备图片文件 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
files = []
# 遍历配置的图片路径列表,准备上传文件
for img_path in image_paths:
try:
# 从完整路径中提取文件名
file_name = img_path.split("/")[-1]
# 根据文件扩展名自动判断 MIME 类型
mime_type = "image/png" if img_path.lower().endswith(".png") else "image/jpeg"
# 将文件添加到上传列表
# 格式:(参数名, (文件名, 文件对象, MIME类型))
files.append(
("image", # API 要求的固定参数名
(file_name, # 原始文件名
open(img_path, "rb"), # 以二进制只读模式打开文件
mime_type) # 文件的 MIME 类型
)
)
except FileNotFoundError:
# 文件不存在时的错误处理
print(f"⚠️ 警告: 文件未找到 - {img_path}")
except Exception as e:
# 其他异常的错误处理
print(f"⚠️ 警告: 处理文件时出错 - {img_path}: {str(e)}")
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ 发送请求并处理响应 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
if not files:
# 如果没有成功加载任何图片文件
print("❌ 错误: 没有可用的图片文件")
else:
# ──────────────────────────────────────────────────────────────────────────
# 发送 HTTP POST 请求到 DMXAPI
# ──────────────────────────────────────────────────────────────────────────
response = requests.post(
url, # API 端点
headers=headers, # 请求头(包含认证信息)
data=payload, # 请求参数
files=files # 上传的图片文件
)
# ──────────────────────────────────────────────────────────────────────────
# 处理 API 响应
# ──────────────────────────────────────────────────────────────────────────
if response.status_code == 200:
# ✅ 请求成功(HTTP 200)
try:
# 解析 JSON 格式的响应数据
data = response.json()
# 确保输出目录存在(如不存在则创建)
output_dir = "output"
os.makedirs(output_dir, exist_ok=True)
# 验证响应数据结构是否符合预期
if data.get("data") and isinstance(data["data"], list):
# 生成时间戳作为文件名的一部分(格式:YYYYMMDD_HHMMSS)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
# ──────────────────────────────────────────────────────────────
# 遍历处理所有返回的编辑后图片
# ──────────────────────────────────────────────────────────────
for idx, item in enumerate(data["data"]):
# 提取 Base64 编码的图片数据
image_b64 = item.get("b64_json")
if image_b64:
# 生成输出文件名
# 多张图片时:edited_时间戳_序号.png
# 单张图片时:edited_时间戳.png
if len(data["data"]) > 1:
filename = f"edited_{timestamp}_{idx + 1}.png"
else:
filename = f"edited_{timestamp}.png"
# 构建完整的输出路径
output_path = os.path.join(output_dir, filename)
# 解码 Base64 数据并保存为图片文件
with open(output_path, "wb") as f:
f.write(base64.b64decode(image_b64))
print(f"✅ 图片保存成功: {output_path}")
else:
print(f"⚠️ 未获取到第 {idx + 1} 张图片数据")
else:
# 响应数据格式不正确
print("❌ 响应数据结构异常")
print(f"📄 原始响应: {json.dumps(data, indent=2, ensure_ascii=False)}")
except json.JSONDecodeError:
# JSON 解析失败
print("❌ JSON 解析失败")
print(f"📄 原始响应: {response.text}")
else:
# ❌ 请求失败(HTTP 状态码非 200)
print(f"❌ 请求失败: HTTP {response.status_code}")
print(f"📄 响应内容: {response.text}")📤 返回参数
执行成功后将返回如下结果:
json
✅ 图片保存成功: output\edited_20251107_134527.png📝 参数说明
必填参数
| 参数名 | 类型 | 说明 |
|---|---|---|
model | string | 模型名称,可选 gpt-image-1 |
prompt | string | 图片编辑指令,描述您想对图片进行的修改 |
image | file | 要编辑的原始图片文件 |
可选参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
size | string | auto | 输出图片尺寸 |
background | string | auto | 背景透明度设置(仅 gpt-image-1) |
input_fidelity | string | low | 输入图像保真度(仅 gpt-image-1) |
output_compression | integer | - | 输出图像压缩级别 0-100(仅 gpt-image-1) |
output_format | string | png | 输出图像格式:png/jpeg/webp(仅 gpt-image-1) |
quality | string | auto | 图像质量设置 |
⚠️ 注意事项
不同模型的图片要求
gpt-image-1
- ✅ 支持多张图片(最多 16 张)
- 📦 文件大小:< 50MB
- 🖼️ 支持格式:png、webp、jpg
- 📐 尺寸:无限制
© 2025 DMXAPI GPT图片
