DMXAPI 画图模型使用说明

DMXAPI 2025主流画图模型列表:

欢迎使用 DMXAPI 提供的强大画图(图像生成)API能力。我们提供多种专业模型选择:

  • seedream-3.0 - 国内最强,豆包团队开发,即梦3 AI绘图大模型。
  • gpt-image-1 - Openai GPT 的画图模型,文本理解与图像生成深度融合,适合文字驱动型创作
  • image4 - 谷歌的绘图模型,对标 gpt-image
  • flux-kontext-max - Black Forest Labs推出商业级精度的图像生成,满足专业设计需求
  • flux-kontext-pro - 支持文本+图像输入的上下文感知生成/编辑模型,控制更精准。

画图模型推荐使用 seedream-3.0 和 gpt-image-1

欢迎使用 DMXAPI 提供的强大画图(图像生成)API能力。本页面将详细介绍如何通过 DMXAPI 的 API 调用 seedream-3.0gpt-image-1 这两个主要画图模型,包括它们的特点、能力以及相应的 Python 代码示例,帮助您快速集成图像生成和处理功能到您的应用中。

修改令牌key: 在DMXAPI平台获得令牌key,替换示例代码里的对应部分 (例如 sk-**********)

如果您是 .CN站用户,请使用:https://www.dmxapi.cn

如果您是 .com站用户,请使用:https://www.dmxapi.com

请根据您的账户所在站点选择正确的 API 端点。

模型一:seedream-3.0
字节跳动 火山引擎 旗下,豆包系列 即梦3.0文生图大模型

seedream-3.0 是一个专注于从文本描述生成高质量图像的高效模型。它以较低的成本和快速的生成速度为特点,特别适合需要批量生成各类创意图片的场景。

文生图代码示例 (Python)

以下是一个使用 Python 标准库 reuqest 调用 seedream-3.0 进行文生图的示例:

import json
import requests

# 定义 API 密钥和基本 URL
# 注意:请替换为你的 DMXAPI 令牌。此处提供的密钥可能无效或已过期。
API_KEY = "sk-*********************************"
API_HOST = "www.dmxapi.com"  # API域名,如果是 CN站用户,请把.com改为.cn
API_ENDPOINT = "/v1/images/generations"  # API 请求路径

# 请求参数
prompt_text = "皮克斯风格海报,主题:DMXAPI"  # 描述生成图像的提示词

# 支持生图模型:seedream-3.0、gpt-image-1(返回base64编码需要解码存图)、flux-dev、dall-e-3
model_name = "seedream-3.0"

# image_size = "1024x1024"  # 图像尺寸 支持 1792x1024, 1024 × 1792, 1024x1024
# 注意:原代码中定义了 image_size 但在 payload 中使用了 aspect_ratio。
# 根据 payload 内容,我们将使用 aspect_ratio。如果 API 需要 image_size,请调整 payload。

# 构建请求的 JSON 数据
payload = {
    "prompt": prompt_text,
    "n": 1,  # 生产图片数量,如果报错就用1。
    "model": model_name,
    "prompt_upsampling": True,
    "raw": True,
    "size":1664x936  
        # 1:1: 1328x1328 
        # 1:2: 800x1600 
        # 3:2: 1584x1056 
        # 3:4: 1104x1472 
        # 16:9: 1664x936 
        # 9:16: 936x1664
    "seed": -1  # 随机种子,设为 -1 每次图片都不一样
}

# 定义请求头信息
headers = {
    "Authorization": f"Bearer {API_KEY}",  # 使用变量 API_KEY
    "Accept": "application/json",
    "User-Agent": "DMXAPI/1.0.0 (https://www.dmxapi.com)",
    "Content-Type": "application/json",
}

# 构建完整的 API URL
api_url = f"https://{API_HOST}{API_ENDPOINT}"

try:
    # 使用 requests 库发送 POST 请求
    # requests 库会自动处理 HTTPS 连接和 payload 的 JSON 编码
    response = requests.post(api_url, json=payload, headers=headers)

    # 检查响应状态码
    response.raise_for_status()  # 如果状态码不是 2xx,将抛出 HTTPError 异常

    # 获取响应数据
    data = response.json()

    # 输出结果
    print(json.dumps(data, indent=4))  # 使用 json.dumps 格式化输出

except requests.exceptions.RequestException as e:
    # 捕获请求过程中可能发生的异常(如连接错误, HTTP 错误等)
    print(f"请求发生错误: {e}")
    if hasattr(e, "response") and e.response is not None:
        print(f"响应状态码: {e.response.status_code}")
        try:
            error_data = e.response.json()
            print(f"错误详情: {json.dumps(error_data, indent=4)}")
        except json.JSONDecodeError:
            print(f"响应内容: {e.response.text}")

此示例直接使用 Python 标准库,不依赖第三方库。核心是构建请求的 JSON 数据,包含详细的 prompt(提示词)、model 名称、size 等参数,然后通过 POST 请求发送到 `/v1/images/generations` 端点。

模型二:gpt-image-1
Openai gpt-4o驱动的图像生产和处理大模型,可改图、多图合并

gpt-image-1 模型基于 OpenAI 最新的 GPT-4o 模型,提供了更加强大和灵活的图像处理能力。它不仅可以进行高质量的文生图,更支持图生图(对现有图片进行编辑)以及创新的多图合并功能。

图像编辑 / 多图合并 代码示例 (Python)

此示例演示如何上传一张本地图片,并根据提供的文字提示词(prompt)对这张图片进行修改或编辑。例如,为人物添加配饰、改变背景等。

import base64  # 导入 base64 模块
import json  # 导入 json 模块
import requests # 导入 requests 库

# API 端点,用于图像编辑和操作
url = "https://www.DMXAPI.com/v1/images/edits" # <-- 根据你注册的DMXAPI网站修改域名 .com 或 .cn

# 请将以下 API 密钥替换为您真实的 DMXAPI 令牌
api_key = "sk-*****************************************************"

headers = {
    "Authorization": f"Bearer {api_key}" # 使用你的 API 密钥进行认证
}

# 请求参数,包含编辑的提示词
payload = {
    "prompt": "给哪吒带上一个红色的鸭舌帽,风格保持不变",  # 描述对上传图片的编辑要求
    # "size": "1024x1024" # 可选参数,指定输出尺寸。注意:编辑通常保持原图比例,指定尺寸可能导致裁剪或缩放
}

# 需要编辑的图片文件,以 multipart/form-data 格式发送
files = [
    (
        "image", # 参数名称必须是 "image"
        (
            "nezha1.png", # 文件名(可以随意命名,最好能反映内容)
            open(
                "c:\\path\\to\\your\\nezha1.png", # <-- 请替换为你的图片文件完整路径
                "rb", # 以二进制只读模式打开文件
            ),
            "image/png", # 文件的 MIME 类型 (image/png, image/jpeg 等)
        ),
    )
]

# 发送 POST 请求
# requests 库会自动处理 multipart/form-data 的编码
response = requests.post(url, headers=headers, data=payload, files=files)

# 检查请求是否成功
if response.status_code == 200:
    try:
        # 解析 JSON 响应
        response_data = response.json() # requests 库可以直接解析 JSON

        # 检查响应数据结构是否符合预期
        if (
            "data" in response_data
            and isinstance(response_data["data"], list)
            and len(response_data["data"]) > 0
        ):
            # 提取第一个结果中的 base64 字符串 (编辑结果通常以 base64 返回)
            image_base64 = response_data["data"][0].get("b64_json")

            if image_base64:
                try:
                    # 解码 base64 字符串为二进制数据
                    image_data = base64.b64decode(image_base64)

                    # 定义保存文件的路径和名称
                    output_filename = "output_edited_image.png"  # 您可以修改文件名和扩展名

                    # 将二进制数据写入文件
                    with open(output_filename, "wb") as f:
                        f.write(image_data)

                    print(f"图像已成功保存到 {output_filename}")

                except base64.binascii.Error as e:
                    print(f"Base64 解码错误: {e}")
                except IOError as e:
                    print(f"文件写入错误: {e}")
            else:
                print("响应中未找到 'b64_json' 字段或其值为 None")
        else:
            print("响应数据结构不符合预期或 'data' 列表为空")
            print("原始响应文本:", response.text) # 打印原始响应以便调试

    except json.JSONDecodeError:
        print("无法解析 JSON 响应")
        print("原始响应文本:", response.text)
    except Exception as e:
        print(f"处理响应时发生未知错误: {e}")

else:
    print(f"请求失败,状态码: {response.status_code}")
    print("响应文本:", response.text) # 打印错误响应文本
此示例依赖于第三方库 requests。如果未安装,请先运行命令:pip install requests。将图片文件作为 files 参数的一部分以 multipart/form-data 格式发送是上传文件的标准方式。

多图合并代码示例 (Python)

gpt-image-1 的一个高级功能是根据提示词智能地将多张图片的内容进行融合或合并。此示例展示了如何上传两张或多张图片,并指示模型将它们的内容巧妙地结合起来。

import base64  # 导入 base64 模块
import json  # 导入 json 模块
import requests # 导入 requests 库

# API 端点,用于图像编辑和操作,包括多图合并
url = "https://www.dmxapi.com/v1/images/edits" # <-- 注意域名要和你注册的网站对应
# 请将以下 API 密钥替换为您真实的 DMXAPI 令牌
api_key = "sk-*****************************************************"

headers = {
    "Authorization": f"Bearer {api_key}" # 使用你的 API 密钥进行认证
}

# 请求参数,包含多图合并的提示词
payload = {
	# 描述多图合并的要求,越详细越好
    "prompt": "将图片 1 的人物抠出来,并和图片 2 的背景完美融合,使人物看起来自然地站在背景中,保持人物外貌和图片 2 的光影风格一致",
    # "size": "1024x1024" # 可选参数,指定输出尺寸。注意:指定尺寸可能影响合并效果或导致裁剪
}

# 需要上传的图片文件列表,发送多张图片
files = [
    (
        "image", # 参数名称必须是 "image"
        (
            "person_image.jpg", # 文件名(可以随意命名)
            open(
                "C:\\path\\to\\your\\111.jpg", # <-- 请替换为你的第一张图片(人物图)文件完整路径
                "rb",
            ),
            "image/jpeg", # 文件的 MIME 类型
        ),
    ),
    (
        "image", # 参数名称必须是 "image",每张图片对应一个 "image" 字段
        (
            "background_image.jpg", # 文件名(可以随意命名)
            open(
                "C:\\path\\to\\your\\222.jpg", # <-- 请替换为你的第二张图片(背景图)文件完整路径
                "rb",
            ),
            "image/jpeg",
        ),
    ),
    # 如果需要上传更多图片进行合并,可以继续添加 ( "image", (...) ) 元组到列表中
]

# 发送 POST 请求
response = requests.post(url, headers=headers, data=payload, files=files)

# 打印原始响应文本(可选,用于调试)
print(response.text)

# 检查请求是否成功
if response.status_code == 200:
    try:
        # 解析 JSON 响应
        response_data = response.json() # requests 库可以直接解析 JSON

        # 检查响应数据结构是否符合预期
        if (
            "data" in response_data
            and isinstance(response_data["data"], list)
            and len(response_data["data"]) > 0
        ):
            # 提取第一个结果中的 base64 字符串
            image_base64 = response_data["data"][0].get("b64_json")

            if image_base64:
                try:
                    # 解码 base64 字符串
                    image_data = base64.b64decode(image_base64)

                    # 定义保存文件的路径和名称
                    output_filename = "output_merged_image.png"  # 您可以修改文件名

                    # 将二进制数据写入文件
                    with open(output_filename, "wb") as f:
                        f.write(image_data)

                    print(f"图像已成功保存到 {output_filename}")

                except base64.binascii.Error as e:
                    print(f"Base64 解码错误: {e}")
                except IOError as e:
                    print(f"文件写入错误: {e}")
            else:
                print("响应中未找到 'b64_json' 字段或其值为 None")
        else:
            print("响应数据结构不符合预期或 'data' 列表为空")
            print("原始响应文本:", response.text) # 打印原始响应以便调试

    except json.JSONDecodeError:
        print("无法解析 JSON 响应")
        print("原始响应文本:", response.text)
    except Exception as e:
        print(f"处理响应时发生未知错误: {e}")

else:
    print(f"请求失败,状态码: {response.status_code}")
    print("响应文本:", response.text) # 打印错误响应文本
此示例依赖于 requests 库。多图合并的关键是将多个图片文件作为 files 参数中多个同名 ("image") 的元组发送。每个文件元组的结构是 ("image", (文件名, 文件对象, MIME类型))