通义千问-图像编辑Qwen-Image-Edit

通义千问-图像编辑 (qwen-image-edit) 模型只需传入一张图片和一句指令,即可完成IP创作、文字替换、风格迁移、人物换装等复杂编辑任务。

模型概览

效果示例

图片 1

原图

image

把背景改成草原

image

给它戴上红色帽子和黑色墨镜

image

改成梵高油画风格

image

原图

image

把“霓裳汉服社”改成“通义实验室”

image

把 "活动全程免费" 改为 “只给学生打折”

image

把女人改成穿汉服的男人

模型与价格

模型名称

计费单价

限流(主账号与RAM子账号共用)

免费额度(查看)

任务下发接口RPS限制

同时处理中任务数量

qwen-image-edit

0.3元/张

2

2

100

快速开始

前提条件

在调用前,您需要开通模型服务并获取API Key,再配置API Key到环境变量

然后安装DashScope SDK。目前,该SDK已支持PythonJava。

示例代码

Python

请求示例
import json
import os
from dashscope import MultiModalConversation

messages = [
    {
        "role": "user",
        "content": [
            {"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"},
            {"text": "将图中的人物改为站立姿势,弯腰握住狗的前爪"}
        ]
    }
]

# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")

response = MultiModalConversation.call(
    api_key=api_key,
    model="qwen-image-edit",
    messages=messages,
    result_format='message',
    stream=False,
    watermark=True,
    negative_prompt=""
)

if response.status_code == 200:
    print(json.dumps(response, ensure_ascii=False))
else:
    print(f"HTTP返回码:{response.status_code}")
    print(f"错误码:{response.code}")
    print(f"错误信息:{response.message}")
    print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")

响应示例
图像链接的有效期为24小时,请及时下载图像。
{
    "status_code": 200,
    "request_id": "3daccb10-10ca-9399-8b6a-xxxxxx",
    "code": "",
    "message": "",
    "output": {
        "text": null,
        "finish_reason": null,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
                        }
                    ]
                }
            }
        ]
    },
    "usage": {
        "input_tokens": 0,
        "output_tokens": 0,
        "width": 1248,
        "image_count": 1,
        "height": 832
    }
}

Java

请求示例
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;

import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class QwenImageEdit {

    // 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey="sk-xxx"
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void call() throws ApiException, NoApiKeyException, UploadFileException, IOException {

        MultiModalConversation conv = new MultiModalConversation();

        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"),
                        Collections.singletonMap("text", "将图中的人物改为站立姿势,弯腰握住狗的前爪")
                )).build();

        Map<String, Object> parameters = new HashMap<>();
        parameters.put("watermark", true);
        parameters.put("negative_prompt", "");

        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .apiKey(apiKey)
                .model("qwen-image-edit")
                .messages(Collections.singletonList(userMessage))
                .parameters(parameters)
                .build();

        MultiModalConversationResult result = conv.call(param);
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        try {
            call();
        } catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
响应示例
image的链接有效期为24小时,请及时下载图像。
{
    "requestId": "9e59e2da-28b0-9468-b356-5d2beea8a477",
    "usage": {},
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxxx"
                        }
                    ]
                }
            }
        ]
    }
}

curl

请求示例
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--data '{
    "model": "qwen-image-edit",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"
                    },
                    {
                        "text": "将图中的人物改为站立姿势,弯腰握住狗的前爪"
                    }
                ]
            }
        ]
    },
    "parameters": {
        "negative_prompt": "",
        "watermark": false
    }
}'
响应示例
image的链接有效期为24小时,请及时下载图像。
{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
                        }
                    ]
                }
            }
        ]
    },
    "usage": {
        "width": 1248,
        "image_count": 1,
        "height": 832
    },
    "request_id": "bf37ca26-0abe-98e4-8065-xxxxxx"
}

使用场景

IP创作

输入图像

效果示例

图片 1

image

这只熊拿着五彩画板和画笔,站在画板前画画

image

这只熊站在白色背景前,手里拿着锅铲,旁边有蔬菜和调料

image

这只熊坐在地上,怀里抱着一把吉他,手指拨动琴弦

image

这只熊穿着燕尾服,戴着魔术帽,手里拿着魔术棒,做出表演魔术的动作

image

这只熊穿着运动服,手里拿着篮球,单腿弯曲

image

这只熊戴着草帽,手里拿着花洒和小铲子,正在浇水或种植植物

image

这只熊穿着宇航服,伸出手指向远方

image

这只熊穿着华丽的舞裙,双臂展开,做出优雅的舞蹈动作

文字编辑

输入图像

输出图像

输入图像

输出图像

image

image

将拼字游戏方块上'HEALTH INSURANCE’ 替换为'明天会更好'

image

image

将便条上的短语“Take a Breather”更改为“Relax and Recharge”

增删改及替换

能力

输入图像

输出图像

新增元素

image

image

在企鹅前方添加一个小型木制标牌,上面写着“Welcome to Penguin Beach”。

删除元素

image

image

删除餐盘上的头发

替换元素

image

image

把桃子变成苹果

颜色修改

image

image

将字母 'n' 的颜色修改为蓝色

人像修改

image

image

让她闭上眼睛

姿态修改

image

image

将图中的人物改为站立姿势,弯腰握住狗的前爪

视角转换

输入图像

输出图像

输入图像

输出图像

image

image

获得正视视角

image

image

朝向左侧

image

image

获得后侧视角

image

image

朝向右侧

背景替换

输入图像

输出图像

image

image

将背景更改为海滩

image

将原图背景替换为真实的现代教室场景,背景中央为一块深绿色或墨黑色的传统黑板,黑板表面用白色粉笔工整地写着中文“通义千问”

虚拟穿搭

输入图像

输出图像

image

image

戴上一顶卡其色贝雷帽

image

用浅蓝色衬衫替换圆点衬衫

老照片处理

能力

输入图像

输出图像

老照片修复及上色

image

image

修复老照片,去除划痕,降低噪点,增强细节,高分辨率,画面真实,肤色自然,面部特征清晰,无变形,复古照片修复。

输入说明

入参结构(messages)

图像编辑的输入是一个结构化的 messages 数组。因此,需要在一个 content 列表中同时提供 image 和 text 两个部分。

说明

目前API仅支持单轮编辑,不支持多轮对话,即messages数只能有一个content,且content只能包含一组 image 和 text。

"messages": [
    {
        "role": "user",
        "content": [
            { "image": "您的图片公网URL或Base64数据" },
            { "text": "您的编辑指令,例如:'移除背景中的树'" }
        ]
    }
]

图像输入方式

目前通过两种方式提供待编辑的图像:

  1. 公网URL:公开可访问的 http/https 链接。本地文件请参见上传文件获取临时URL

  2. Base64编码:将本地图片文件编码为Base64字符串。

图像Base64编码传值方式

参数值格式为 data:{MIME_type};base64,{base64_data}

  • {MIME_type}:图像的媒体类型,需与文件格式对应。

  • {base64_data}:图像文件经过 Base64 编码后的完整数据字符串。

  • 图像格式与MIME 类型对应关系:

    图像格式

    MIME Type

    JPEG

    image/jpeg

    JPG

    image/jpeg

    PNG

    image/png

    BMP

    image/bmp

    WEBP

    image/webp

  • 示例值:"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDg......"

    注意:为便于展示,上述 Base64 字符串是截断的。在实际使用中,请务必传入完整的编码字符串。

  • 示例代码:获取图像Base64编码字符串。完整调用代码请参见Python SDK调用Java SDK调用

    import base64
    import mimetypes
    
    
    # ---用于 Base64 编码 ---
    # 格式为 data:{MIME_type};base64,{base64_data}
    def encode_file(file_path):
        mime_type, _ = mimetypes.guess_type(file_path)
        if not mime_type or not mime_type.startswith("image/"):
            raise ValueError("不支持或无法识别的图像格式")
        with open(file_path, "rb") as image_file:
            encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
        return f"data:{mime_type};base64,{encoded_string}"
    
    
    if __name__ == "__main__":
        # 需要使用真实的文件路径,否则会报错
        print(encode_file("./image_demo_input.png"))
    

计费与限流

计费规则

  • 计费项:按成功生成的 图像张数 计费,采用按量后付费模式。

  • 计费公式:费用 = 计费单价 × 图像张数

  • 抵扣顺序:优先消耗免费额度。额度用尽后,默认转为按量付费。

    • 您可开启“免费额度用完即停”功能,以避免免费额度耗尽后产生额外费用。详情请参见免费额度

  • 失败不计费:模型调用失败或处理错误不产生任何费用,也不消耗免费额度。

免费额度

关于免费额度的领取、查询、使用方法等详情,请参见免费额度

调用量查询

模型调用完约一小时后,请在模型观测页面,查看调用量、调用次数、成功率等指标。

限流

模型限流规则及常见问题,请参见限流

API参考

API的输入输出参数,请参见通义千问-图像编辑

错误码

如果模型调用失败并返回报错信息,请参见错误信息进行解决。

常见问题

图像生成常见问题