DMXAPI 画图模型使用说明

DMXAPI 2025主流画图模型列表:

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

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

画图模型在各种场景表现不一样,需要自己尝试选择哦

欢迎使用 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 base64
import http.client
import json
import os
import time

# --- 配置部分 ---

# !!重要!!请务必替换为你的 DMXAPI 令牌,并注意保管,不要泄露。
# 建议使用环境变量等更安全的方式管理 API 密钥。
API_KEY = "sk-**********************************"  # 替换为你的 DMXAPI 令牌
API_HOST = "www.dmxapi.cn"  # 填写你注册的平台域名,注意 .com 或 .cn
API_ENDPOINT = "/v1/images/generations"  # API 请求路径

# 请求参数
prompt_text = "生成一张帮助记忆的图,能够给一些学习引导, 漫画风格,学习英文单词: Hello"  # 描述生成图像的提示词
model_name = "seedream-3.0"  # 除了dall-e-3 还可选:flux-schnell,flux-dev,flux.1.1-pro
image_size = "1664x936"  # 图像尺寸
# 尺寸参考
# 1:1: 1328x1328
# 1:2: 800x1600
# 3:2: 1584x1056
# 3:4: 1104x1472
# 16:9: 1664x936
# 9:16: 936x1664

# --- API 请求和图片保存 ---

# 构建请求的 JSON 数据
payload = json.dumps(
    {
        "prompt": prompt_text,
        "n": 1,  # 生产图片数量,修改会报错,默认1就可以。
        "model": model_name,
        "size": image_size,  # flux模型用比例 int x int,比如 3x2,参考上面的 尺寸比例。
        "response_format": "b64_json",  # 明确要求返回 base64 格式
        "seed": -1,  # 随机种子,-1 是每次都随机
    }
)

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

print("正在向API发送请求,请稍候...")

try:
    # 建立 HTTPS 连接
    conn = http.client.HTTPSConnection(API_HOST)

    # 发送 POST 请求
    conn.request("POST", API_ENDPOINT, payload, headers)

    # 获取响应
    res = conn.getresponse()

    # 检查响应状态
    if res.status != 200:
        print(f"请求失败,状态码: {res.status} {res.reason}")
        error_data = res.read().decode("utf-8")
        print("错误信息:", error_data)
    else:
        # 读取并解析 JSON 数据
        data = res.read()
        response_json = json.loads(data)

        print("成功接收到API响应。")
        # print("完整响应内容:", response_json) # 如果需要调试,可以取消此行注释

        # --- 新增:解码并保存图片 ---

        # 检查 'data' 字段和其中的内容是否存在
        if (
            "data" in response_json
            and len(response_json["data"]) > 0
            and "b64_json" in response_json["data"][0]
        ):
            # 1. 提取 base64 字符串
            b64_data = response_json["data"][0]["b64_json"]

            # 2. 解码 base64 数据
            image_data = base64.b64decode(b64_data)

            # 3. 生成唯一的文件名 (格式: output_yyyymmdd_hhmmss.png)
            timestamp = time.strftime("%Y%m%d_%H%M%S")
            file_name = f"output_{timestamp}.png"

            # 4. 指定保存图片的文件夹,如果不存在则创建
            save_dir = "generated_images"
            if not os.path.exists(save_dir):
                os.makedirs(save_dir)

            file_path = os.path.join(save_dir, file_name)

            # 5. 以二进制写入模式保存文件
            with open(file_path, "wb") as f:
                f.write(image_data)

            print(f"图片已成功保存到: {file_path}")
        else:
            print("错误:响应JSON中未找到预期的 'b64_json' 数据。")
            print("收到的数据结构:", response_json)

except Exception as e:
    print(f"在请求或处理过程中发生错误: {e}")

finally:
    # 关闭连接
    if "conn" in locals():
        conn.close()

此示例直接使用 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类型))

模型三:flux-kontext
flux推出最新图像模型,可生图、改图

Flux 图像编辑(图生图)代码示例 (Python)

文生图参考上面seedream-3.0的方式,这里是图片编辑修改图片的例子。

import os
import requests
SERVER_ADDRESS = "https://www.dmxapi.com"  # 注意你注册的如果是.cn ,域名需要改成 .cn
API_KEY = (
    "sk-**************************"  # 填写 DMXAPI 令牌,注意com令牌配套.com域名;cn站的令牌配套.cn域名。
)

url = f"{SERVER_ADDRESS}/v1/images/edits"
headers = {"Authorization": f"Bearer {API_KEY}"}

# 确保 '33.png' 文件存在于脚本运行目录下
image_file_path = "你需要修改的目标图片路径.png"  # 这里改成你要修改的图片路径
if not os.path.exists(image_file_path):
    print(f"错误: 找不到图片文件 '{image_file_path}'。请确保文件存在。")
    exit()

files = [
    (
        "image[]",
        (os.path.basename(image_file_path), open(image_file_path, "rb"), "image/png"),
    ),
]
data = {
    "model": "flux-kontext-pro",  # 可选 flux-kontext-pro、flux-kontext-max
    "prompt": "给女孩带上彩色墨镜",  # 提示词,支持中文
    "quality": "high",  # 可选 low、medium、high
}

response = None  # 初始化response变量,以防try块内出现异常导致未定义
try:
    print(f"正在向 {url} 发送请求...")
    response = requests.post(
        url, headers=headers, files=files, data=data, timeout=999
    )  # 增加超时时间
    response.raise_for_status()  # 检查HTTP请求是否成功

    print("图片编辑成功!")
    response_json = response.json()
    print("响应内容:")
    # 直接打印整个JSON响应,包含所有数据,包括Base64编码的图片数据(如果有)
    print(response_json)

except requests.exceptions.Timeout:
    print("请求超时。服务器响应时间过长。")
except requests.exceptions.ConnectionError:
    print("连接错误。请检查网络连接或服务器地址。")
except requests.exceptions.RequestException as e:
    print(f"请求失败: {e}")
    if response is not None:
        print(f"状态码: {response.status_code}")
        print(f"错误信息: {response.text}")
finally:
    # 确保关闭所有打开的文件
    for _, (filename, file_obj, _) in files:
        if not file_obj.closed:
            file_obj.close()
    print("文件句柄已关闭。")
此示例依赖于第三方库 requests。如果未安装,请先运行命令:pip install requests。将图片文件作为 files 参数的一部分以 multipart/form-data 格式发送是上传文件的标准方式。