すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:Image editing - Wan2.5

最終更新日:Dec 06, 2025

Wan2.5 画像編集モデルは、1〜3 枚の画像入力と 1〜4 枚の画像出力をサポートします。テキスト命令を使用して、被写体の一貫性を保った単一画像の編集、オブジェクトの検出とセグメンテーション、複数画像の融合を実行できます。

クイックスタート

前提条件

呼び出しを行う前に、API キーを取得し、API キーを環境変数として設定する必要があります。SDK を使用して呼び出しを行うには、DashScope SDK をインストールしてください。

コード例

単一または複数の画像入力で API を呼び出すプロセスは、ほぼ同じです。

これは、マルチイメージフュージョンの例です。images 配列に 2 つのイメージを渡すと、モデルはテキストプロンプトに基づいて 1 つの融合イメージを出力します。

入力プロンプト:画像 1 の目覚まし時計を、画像 2 の食卓にある花瓶の隣に置いてください。

入力画像 1

入力画像 2

出力画像

p1011667 (2)

p1011669 (2)

p1028883

同期呼び出し

重要

DashScope Python SDK のバージョンが 1.25.2 以降、DashScope Java SDK のバージョンが 2.22.2 以降であることを確認してください。

古いバージョンでは、「url error, please check url!」などのエラーが発生する可能性があります。SDK をインストールまたはアップグレードしてください。

Python

この例では、パブリック URL、Base64 エンコーディング、ローカルファイルパスの 3 つの画像入力方法をサポートしています。

リクエスト例
import base64
import mimetypes
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath

import dashscope
import requests
from dashscope import ImageSynthesis
import os

# 以下はシンガポールリージョンの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えてください:api_key="sk-xxx"
# シンガポールリージョンと中国 (北京) リージョンの API キーは異なります。API キーの取得:https://www.alibabacloud.com/help/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

# --- 画像入力:Base64 エンコーディングを使用 ---
# 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("Unsupported or unrecognized image format")
    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}"

"""
画像入力方法:
以下の 3 つの方法から 1 つを選択してください。

1. パブリック URL を使用 - 公開されている画像に適しています。
2. ローカルファイルを使用 - ローカルでの開発やテストに適しています。
3. Base64 エンコーディングを使用 - 非公開の画像や暗号化された伝送が必要なシナリオに適しています。
"""

# [方法 1] パブリック画像の URL を使用
image_url_1 = "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp"
image_url_2 = "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"

# [方法 2] ローカルファイルを使用 (絶対パスと相対パスをサポート)
# フォーマット要件:file:// + ファイルパス
# 例 (絶対パス):
# image_url_1 = "file://" + "/path/to/your/image_1.png"     # Linux/macOS
# image_url_2 = "file://" + "C:/path/to/your/image_2.png"  # Windows
# 例 (相対パス):
# image_url_1 = "file://" + "./image_1.png"                 # 実際のパスを使用してください
# image_url_2 = "file://" + "./image_2.png"                # 実際のパスを使用してください

# [方法 3] Base64 エンコードされた画像を使用
# image_url_1 = encode_file("./image_1.png")               # 実際のパスを使用してください
# image_url_2 = encode_file("./image_2.png")              # 実際のパスを使用してください

print('----sync call, please wait a moment----')
rsp = ImageSynthesis.call(api_key=api_key,
                          model="wan2.5-i2i-preview",
                          prompt="Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                          images=[image_url_1, image_url_2],
                          negative_prompt="",
                          n=1,
                          # size="1280*1280",
                          prompt_extend=True,
                          watermark=False,
                          seed=12345)
print('response: %s' % rsp)
if rsp.status_code == HTTPStatus.OK:
    # 現在のディレクトリに画像を保存
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('sync_call Failed, status_code: %s, code: %s, message: %s' %
          (rsp.status_code, rsp.code, rsp.message))
レスポンス例
URL は 24 時間有効です。速やかに画像をダウンロードしてください。
{
    "status_code": 200,
    "request_id": "8ad45834-4321-44ed-adf5-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "3aff9ebd-35fc-4339-98a3-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                "orig_prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                "actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the alarm clock facing the camera, parallel to the table, with its shadow naturally cast on the table."
            }
        ],
        "submit_time": "2025-10-23 16:18:16.009",
        "scheduled_time": "2025-10-23 16:18:16.040",
        "end_time": "2025-10-23 16:19:09.591",
        "task_metrics": {
            "TOTAL": 1,
            "FAILED": 0,
            "SUCCEEDED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

Java

この例では、パブリック URL、Base64 エンコーディング、ローカルファイルパスの 3 つの画像入力方法をサポートしています。

リクエスト例
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;

public class Image2Image {

    static {
        // 以下はシンガポールリージョンの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
    }

    // 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えてください:apiKey="sk-xxx"
    // シンガポールリージョンと中国 (北京) リージョンの API キーは異なります。API キーの取得:https://www.alibabacloud.com/help/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * 画像入力方法:以下の 3 つの方法から 1 つを選択してください。
     *
     * 1. パブリック URL を使用 - 公開されている画像に適しています。
     * 2. ローカルファイルを使用 - ローカルでの開発やテストに適しています。
     * 3. Base64 エンコーディングを使用 - 非公開の画像や暗号化された伝送が必要なシナリオに適しています。
     */

    //[方法 1] パブリック URL
    static String imageUrl_1 = "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp";
    static String imageUrl_2 = "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp";

    //[方法 2] ローカルファイルパス (file://+絶対パス または file:///+絶対パス)
    // static String imageUrl_1 = "file://" + "/your/path/to/image_1.png";    // Linux/macOS
    // static String imageUrl_2 = "file:///" + "C:/your/path/to/image_2.png";  // Windows

    //[方法 3] Base64 エンコーディング
    // static String imageUrl_1 = encodeFile("/your/path/to/image_1.png");
    // static String imageUrl_2 = encodeFile("/your/path/to/image_2.png");

    // 編集する画像のリストを設定
    static List<String> imageUrls = new ArrayList<>();
    static {
        imageUrls.add(imageUrl_1);
        imageUrls.add(imageUrl_2);
    }

    public static void syncCall() {
        // パラメーターを設定
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", "12345");

        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.5-i2i-preview")
                        .prompt("Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.")
                        .images(imageUrls)
                        .n(1)
                         //.size("1280*1280")
                        .negativePrompt("")
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---sync call, please wait a moment----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }

    /**
     * ファイルを Base64 文字列にエンコードします。
     * @param filePath ファイルパス。
     * @return data:{MIME_type};base64,{base64_data} 形式の Base64 文字列。
     */
    public static String encodeFile(String filePath) {
        Path path = Paths.get(filePath);
        if (!Files.exists(path)) {
            throw new IllegalArgumentException("File does not exist: " + filePath);
        }
        // MIME タイプを検出
        String mimeType = null;
        try {
            mimeType = Files.probeContentType(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Cannot detect file type: " + filePath);
        }
        if (mimeType == null || !mimeType.startsWith("image/")) {
            throw new IllegalArgumentException("Unsupported or unrecognized image format");
        }
        // ファイルの内容を読み込んでエンコード
        byte[] fileBytes = null;
        try{
            fileBytes = Files.readAllBytes(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Cannot read file content: " + filePath);
        }

        String encodedString = Base64.getEncoder().encodeToString(fileBytes);
        return "data:" + mimeType + ";base64," + encodedString;
    }

    public static void main(String[] args) {
        syncCall();
    }
}
レスポンス例
URL は 24 時間有効です。速やかに画像をダウンロードしてください。
{
    "request_id": "d362685b-757f-4eac-bab5-xxxxxx",
    "output": {
        "task_id": "bfa7fc39-3d87-4fa7-b1e6-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "orig_prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                "actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the front of the alarm clock facing the camera, parallel to the vase.",
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

非同期呼び出し

重要

DashScope Python SDK のバージョンが 1.25.2 以降、DashScope Java SDK のバージョンが 2.22.2 以降であることを確認してください。

古いバージョンでは、「url error, please check url!」などのエラーが発生する可能性があります。SDK をインストールまたはアップグレードしてください。

Python

この例では、パブリック URL を使用して画像を渡します。

リクエスト例

import os
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import dashscope
import requests
from dashscope import ImageSynthesis

# 以下はシンガポールリージョンの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えてください:api_key="sk-xxx"
# シンガポールリージョンと中国 (北京) リージョンの API キーは異なります。API キーの取得:https://www.alibabacloud.com/help/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

# パブリック画像の URL を使用
image_url_1 = "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp"
image_url_2 = "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"


def async_call():
    print('----create task----')
    task_info = create_async_task()
    print('----wait task----')
    wait_async_task(task_info)


# 非同期タスクを作成
def create_async_task():
    rsp = ImageSynthesis.async_call(api_key=api_key,
                                    model="wan2.5-i2i-preview",
                                    prompt="Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                                    images=[image_url_1, image_url_2],
                                    negative_prompt="",
                                    n=1,
                                    # size="1280*1280",
                                    prompt_extend=True,
                                    watermark=False,
                                    seed=12345)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))
    return rsp


# 非同期タスクの完了を待機
def wait_async_task(task):
    rsp = ImageSynthesis.wait(task=task, api_key=api_key)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output)
        # ファイルを現在のディレクトリに保存
        for result in rsp.output.results:
            file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
            with open('./%s' % file_name, 'wb+') as f:
                f.write(requests.get(result.url).content)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


# 非同期タスクの情報を取得
def fetch_task_status(task):
    status = ImageSynthesis.fetch(task=task, api_key=api_key)
    print(status)
    if status.status_code == HTTPStatus.OK:
        print(status.output.task_status)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (status.status_code, status.code, status.message))


# 非同期タスクをキャンセル。PENDING 状態のタスクのみキャンセル可能。
def cancel_task(task):
    rsp = ImageSynthesis.cancel(task=task, api_key=api_key)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.task_status)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


if __name__ == '__main__':
    async_call()

レスポンス例

1. タスク作成リクエストのレスポンス例

{
	"status_code": 200,
	"request_id": "31b04171-011c-96bd-ac00-f0383b669cc7",
	"code": "",
	"message": "",
	"output": {
		"task_id": "4f90cf14-a34e-4eae-xxxxxxxx",
		"task_status": "PENDING",
		"results": []
	},
	"usage": null
}

2. タスククエリリクエストのレスポンス例

URL は 24 時間有効です。速やかに画像をダウンロードしてください。
{
    "status_code": 200,
    "request_id": "8ad45834-4321-44ed-adf5-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "3aff9ebd-35fc-4339-98a3-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                "orig_prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                "actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the alarm clock facing the camera, parallel to the table, with its shadow naturally cast on the table."
            }
        ],
        "submit_time": "2025-10-23 16:18:16.009",
        "scheduled_time": "2025-10-23 16:18:16.040",
        "end_time": "2025-10-23 16:19:09.591",
        "task_metrics": {
            "TOTAL": 1,
            "FAILED": 0,
            "SUCCEEDED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

Java

この例では、デフォルトでパブリック URL を使用して画像を渡します。

リクエスト例

// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisListResult;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.task.AsyncTaskListParam;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Image2Image {

    static {
        // 以下はシンガポールリージョンの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
    }

    // 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えてください:apiKey="sk-xxx"
    // シンガポールリージョンと中国 (北京) リージョンの API キーは異なります。API キーの取得:https://www.alibabacloud.com/help/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    //パブリック URL
    static String imageUrl_1 = "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp";
    static String imageUrl_2 = "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp";

    // 編集する画像のリストを設定
    static List<String> imageUrls = new ArrayList<>();
    static {
        imageUrls.add(imageUrl_1);
        imageUrls.add(imageUrl_2);
    }

    public static void asyncCall() {
        // パラメーターを設定
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", "12345");

        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.5-i2i-preview")
                        .prompt("Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.")
                        .images(imageUrls)
                        .n(1)
                        //.size("1280*1280")
                        .negativePrompt("")
                        .parameters(parameters)
                        .build();
        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---async call, please wait a moment----");
            result = imageSynthesis.asyncCall(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }

        System.out.println(JsonUtils.toJson(result));

        String taskId = result.getOutput().getTaskId();

        System.out.println("taskId=" + taskId);


        try {
            result = imageSynthesis.wait(taskId, apiKey);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
        System.out.println(JsonUtils.toJson(result.getOutput()));
    }

    public static void listTask() throws ApiException, NoApiKeyException {
        ImageSynthesis is = new ImageSynthesis();
        AsyncTaskListParam param = AsyncTaskListParam.builder().build();
        param.setApiKey(apiKey);
        ImageSynthesisListResult result = is.list(param);
        System.out.println(result);
    }

    public void fetchTask(String taskId) throws ApiException, NoApiKeyException {
        ImageSynthesis is = new ImageSynthesis();
        // DASHSCOPE_API_KEY を環境変数として設定している場合、apiKey は空のままでかまいません。
        ImageSynthesisResult result = is.fetch(taskId, apiKey);
        System.out.println(result.getOutput());
        System.out.println(result.getUsage());
    }


    public static void main(String[] args) {
        asyncCall();
    }
}

レスポンス例

1. タスク作成リクエストのレスポンス例

{
	"request_id": "5dbf9dc5-4f4c-9605-85ea-542f97709ba8",
	"output": {
		"task_id": "7277e20e-aa01-4709-xxxxxxxx",
		"task_status": "PENDING"
	}
}

2. タスククエリリクエストのレスポンス例

URL は 24 時間有効です。速やかに画像をダウンロードしてください。
{
    "request_id": "d362685b-757f-4eac-bab5-xxxxxx",
    "output": {
        "task_id": "bfa7fc39-3d87-4fa7-b1e6-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "orig_prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
                "actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the front of the alarm clock facing the camera, parallel to the vase.",
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

curl

この例には、タスクの作成と結果のクエリの 2 つのステップが含まれます。

説明
  • 非同期呼び出しの場合、X-DashScope-Async ヘッダーパラメーターを enable に設定する必要があります。

  • 非同期タスクの task_id は 24 時間クエリに有効です。この期間を過ぎると、タスクのステータスは UNKNOWN に変わります。

ステップ 1:タスクを作成するリクエストを送信

このリクエストはタスク ID (task_id) を返します。

リクエスト例
 curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.5-i2i-preview",
    "input": {
        "prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
        "images": [
            "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp",
            "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"
        ]
    },
    "parameters": {
        "n": 1
    }
}'

レスポンス例

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

ステップ 2:タスク ID で結果をクエリ

前のステップの task_id を使用して、API を通じてタスクのステータスをポーリングし、task_status が SUCCEEDED または FAILED になるまで続けます。

リクエスト例

86ecf553-d340-4e21-xxxxxxxxx を実際のタスク ID に置き換えてください。

シンガポールリージョンと北京リージョンの API キーは異なります。API キーを作成してください。
以下の `base_url` はシンガポールリージョン用です。北京リージョンのモデルの場合、`base_url` を `https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx` に置き換えてください。
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

レスポンスのサンプル

画像 URL は 24 時間有効です。速やかに画像をダウンロードしてください。
{
    "request_id": "d1f2a1be-9c58-48af-b43f-xxxxxx",
    "output": {
        "task_id": "7f4836cd-1c47-41b3-b3a4-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-09-23 22:14:10.800",
        "scheduled_time": "2025-09-23 22:14:10.825",
        "end_time": "2025-09-23 22:15:23.456",
        "results": [
            {
                "orig_prompt": "Place the alarm clock from image 1 next to the vase on the dining table in image 2.",
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "FAILED": 0,
            "SUCCEEDED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

モデルの可用性

モデルのリストとその価格については、Wan2.5 汎用画像編集をご参照ください。

入力パラメーター

入力画像 (images)

images は、編集または融合のために1〜3枚の画像を渡すことをサポートする配列です。入力画像は以下の要件を満たす必要があります:

  • 画像フォーマット:JPEG、JPG、PNG (アルファチャンネルは非対応)、BMP、WEBP をサポートします。

  • 画像解像度:画像の幅と高さは、両方とも 384〜5,000 ピクセルの範囲内である必要があります。

  • ファイルサイズ:単一の画像ファイルは 10 MB を超えることはできません。

// この例は images フィールドの構造のみを示しています。入力には 2 枚の画像が含まれています。
{
    "images": [
        "https://img.alicdn.com/imgextra/i4/O1CN01TlDlJe1LR9zso3xAC_!!6000000001295-2-tps-1104-1472.png",
        "https://img.alicdn.com/imgextra/i4/O1CN01M9azZ41YdblclkU6Z_!!6000000003082-2-tps-1696-960.png"
    ]
}

画像入力の順序

複数画像入力の場合、画像の順序は配列内のシーケンスによって定義されます。したがって、プロンプトで参照される画像番号は、画像配列内の順序と一致する必要があります。例えば、配列の最初の画像は「画像 1」、2 番目は「画像 2」となります。または、「[Image 1]」や「[Image 2]」のようなマーカーを使用することもできます。

入力画像

出力画像

image (19)-转换自-png

画像 1

image (20)-转换自-png

画像 2

04e0fc39-7ad6-41e0-9df9-1f69ac3ce825-转换自-png

プロンプト:画像 1 を画像 2 の上に移動

36ed450d-bd54-4169-b13f-3d0f26d9d360-转换自-png

プロンプト:画像 2 を画像 1 の上に移動

画像入力方法

このモデルは、以下の 3 つの画像受け渡し方法をサポートしています:

方法 1:パブリック URL

  • HTTP または HTTPS プロトコルをサポートする、一般にアクセス可能な画像 URL を提供します。

  • 値の例:https://xxxx/img.png

  • 適用シナリオ:画像がすでに Object Storage Service (OSS) やパブリック画像ホスティングサービスでホストされている場合。

方法 2:Base64 エンコーディング

画像ファイルを Base64 エンコードされた文字列に変換し、data:{MIME_type};base64,{base64_data} の形式で連結します。

  • 値の例:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDg...... (長さの制限により、これはスニペットです。) API を呼び出す際には、完全な文字列を渡す必要があります。

  • {base64_data}:画像ファイルの Base64 エンコードされた文字列を表します。

  • {MIME_type}:画像のメディアタイプを表し、ファイル形式に対応している必要があります。

    画像フォーマット

    MIME タイプ

    JPEG

    image/jpeg

    JPG

    image/jpeg

    PNG

    image/png

    BMP

    image/bmp

    WEBP

    image/webp

  • 適用シナリオ:非公開の画像や暗号化された伝送が必要なシナリオに適しています。

コード例:画像の Base64 エンコーディング

import os
import base64
import mimetypes

# 形式は data:{mime_type};base64,{base64_data} です
def encode_file(file_path):
    mime_type, _ = mimetypes.guess_type(file_path)
    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}"
        
        
# エンコーディング関数を呼び出します。"/path/to/your/image.png" をローカル画像ファイルのパスに置き換えないと実行されません。
image = encode_file("/path/to/your/image.png")

方法 3:ローカルファイルパス (SDK のみ)

  • Python SDK:ファイルの絶対パスと相対パスの両方の受け渡しをサポートします。ファイルパスのルールは以下の通りです:

    システム

    渡されるファイルパス

    例 (絶対パス)

    例 (相対パス)

    Linux または macOS

    file://{ファイルの絶対パスまたは相対パス}

    file:///home/images/test.png

    file://./images/test.png

    Windows

    file://D:/images/test.png

    file://./images/test.png

  • Java SDK:ファイルの絶対パスのみの受け渡しをサポートします。ファイルパスのルールは以下の通りです:

    システム

    渡されるファイルパス

    例 (絶対パス)

    Linux または macOS

    file://{ファイルの絶対パス}

    file:///home/images/test.png

    Windows

    file:///{ファイルの絶対パス}

    file:///D:/images/test.png

  • 適用シナリオ:ローカル開発環境での迅速なテストに適しています。

オプションパラメーター

このモデルは、画像生成効果を調整するためのいくつかのオプションパラメーターも提供しています。最も重要なパラメーターには以下が含まれます:

  • size:出力画像の解像度をピクセル単位で指定し、width*height 形式を使用します。デフォルト値は 1280*1280 です。解像度は 768×768 から 1280×1280 ピクセルの範囲内である必要があります。縦横比は 1:4 から 4:1 の範囲内である必要があります。

    推奨される解像度と縦横比

    • 1280*1280:1:1

    • 1024*1024:1:1

    • 800*1200:2:3

    • 1200*800:3:2

    • 960*1280:3:4

    • 1280*960:4:3

    • 720*1280:9:16

    • 1280*720:16:9

    • 1344*576:21:9

    size パラメーターを指定しない場合、システムはデフォルトで 1280×1280 ピクセルの画像を生成し、入力画像の縦横比を維持しようとします:

    • 単一画像入力の場合、縦横比は入力画像と同じです。

    • 複数画像入力の場合、縦横比は入力配列の最後の画像と同じです。

  • n:出力画像の数を設定します。値は 1 から 4 までの整数です。デフォルトは 4 です。テストには 1 に設定することを推奨します。

  • negative_prompt:ネガティブプロンプトは、「ぼやけている」や「余分な指」など、画像に表示したくないコンテンツを記述します。このパラメーターは、生成品質の最適化を支援するためにのみ使用されます。

  • watermark:ウォーターマークを追加するかどうかを指定します。ウォーターマークは画像の右下隅に配置され、「AI-generated」と表示されます。デフォルトは false で、ウォーターマークは追加されません。

  • seed:乱数シードです。値は [0, 2147483647] の範囲内である必要があります。シードを提供しない場合、アルゴリズムは自動的に乱数を生成して使用します。生成されるコンテンツを比較的一貫させるには、各リクエストで同じシード値を使用します。

    注意:モデルの生成は確率的であるため、同じシードを使用しても結果が毎回同一であることが保証されるわけではありません。

出力パラメーター

  • 画像フォーマット:PNG。

  • 画像数:1〜4 枚。

  • 画像解像度size 入力パラメーターを使用して解像度を指定できます。このパラメーターが指定されていない場合は、size パラメーターの説明をご参照ください。

    すべての出力画像は同じ解像度になります。

使用例

現在、wan2.5 画像編集モデルは画像セットの生成をサポートしていません。

複数画像の融合

入力画像

出力画像

p1020900-转换自-png

p1020802-转换自-png

画像 2 の星月夜の絵を、画像 1 のスマホケースに転写してください。

p1020907-转换自-png

p1020740-转换自-png

[画像 1] のテキスト「Wan2.5」のフォントとスタイルを唯一の参照として使用します。ストロークの幅と曲線を変更しないでください。[画像 2] の層状の紙の質感をテキストに正確に転写してください。

p1020909-转换自-png

image.png

2 つの参照画像を使用して対象を再描画します:[画像 2] をバッグの形状と構造の参照として使用します。[画像 1] のオウムの羽を色と質感の参照として使用します。オウムの羽の色と質感を [画像 2] のバッグの表面素材に正確に転写してください。

p1020911-转换自-png

p1020881-转换自-png

[画像 1] の名刺デザインの構図とすりガラスの質感をテンプレートとして使用し、[画像 2] の人物の縦型社員証を生成します。カードは角が丸く、半透明で、柔らかなハイライトと薄い影があります。人物の胸像は上部中央に配置されます。名前、役職、会社名、電話番号は、ミニマリストなサンセリフフォントでバランスの取れた空白を使用して左下隅に配置されます。右上隅には、[画像 1] の人物のかわいい 3D カートゥーン画像を配置し、境界線を越えてカードから半浮き出し、薄い影を落として、レイヤーと視覚的な焦点を作成します。全体の照明は明るく自然で、リアルな素材のディテールがあります。余分なパターンや要素は追加しないでください。

画像理解

オブジェクトの検出とローカライズ
画像内の指定されたオブジェクトを検出し、バウンディングボックスとラベル付きの画像を出力します。

入力画像

出力画像

p1020870-转换自-png

p1020739-转换自-png (1)

画像内のひまわりとかぼちゃを検出します。バウンディングボックスを描画し、ラベルを追加します。

インスタンスセグメンテーション
モデルは、画像内の個々のオブジェクトごとに一意の色の領域を生成し、その完全な輪郭を示します。例えば、出力画像の紫色の領域は、セグメント化されたヘッドフォンインスタンスを表します。

入力画像

出力画像

p1020871-转换自-png

p1020872-转换自-png

画像内のヘッドフォンをセグメント化します。

被写体の特徴維持

入力画像

出力画像

p1020767-转换自-png

p1020768-转换自-png

このイラストをコスプレした少女の非常に詳細な写真をコミケで生成します。実在の人物がコスプレしている必要があります。元のイラストと同じポーズ、体の姿勢、手のジェスチャー、表情、カメラのフレーミングを正確に再現します。角度、視点、構図を逸脱なく同じに保ちます。

p1020761-转换自-png

p1020759-转换自-png

写真の人物の 3 つのインスタンスをオフィスシーンで生成します。1 人は机に座って仕事をしている。もう 1 人は立ってコーヒーを飲んでいる。3 人目は机にもたれて本を読んでいる。3 人とも写真の同じ人物です。

p1020799-转换自-png

p1020756-转换自-png

この写真から 4 コマの画像セットを生成します。最初のコマでは、少女はカメラの方を向いています。2 番目のコマでは、右手を上げて髪をとかしています。3 番目のコマでは、視聴者に熱心に手を振っています。4 番目のコマでは、目を閉じて微笑んでいます。

変更とアップスケーリング

特徴

入力画像

出力画像

要素の変更

image

image

花柄のドレスを、襟と袖口に精巧な刺繍が施されたヴィンテージスタイルのレースのロングドレスに変更します。

照明の変更

p1020752-转换自-png

p1020753-转换自-png

ヒトデの表面に小さくきらめくハイライトを追加して、夕日の背景に対して輝くようにします。

被写体要素のアップスケール

p1020744-转换自-png

p1020742-转换自-png

画像内の牛を拡大します。

画像の詳細をアップスケール

image (18)-转换自-png

5eecdaf48460cde5c4be102460b058055561df7a15a7389475b8339e1c4c24831b75b38faadcd24bec177c308ebd5304b8b330b51f13ddb214325c71432889afadec7664fb1a132d34d1f46a5de9c95c9f982413966336104fb4c8ed7016461c-转换自-png

ズームインして、オウムがとまっている枝を表示します。

要素抽出

入力画像

出力画像

20251029170404

image

画像内の人物が着用しているすべての衣類を抽出します。白い背景にきれいに並べます。

スケッチからの画像生成

入力画像

出力画像

p1020874-转换自-png

p1020875-转换自-png

このスケッチに基づいて新しいリアルな画像を生成します。テラコッタの屋根、木製のシャッター、洗濯物が干されたバルコニーが特徴の素朴な石造りの建物がある魅力的な地中海の村の風景です。前景は、つる植物や咲き誇る花などの緑豊かな植物で満たされ、活気に満ちた生き生きとした雰囲気を作り出しています。建築は、アーチ型の出入り口や模様のある石細工などの複雑なディテールを誇り、歴史と温かみを感じさせます]、[明るく晴れた日で、澄んだ青空が広がり、石畳の通りに柔らかな影を落とし、建物の暖かい色調を引き立てています。背景には、なだらかな丘と遠くの山々が絵のように美しい景色を提供し、シーンに深みと静けさを加えています。

テキスト生成

入力画像

出力画像

p1020745-转换自-png

p1020738-转换自-png

画像の左上隅に、大きくて丸い白いフォントで「微距摄影」というタイトルを追加します。タイトルの下に、小さめの薄緑色のフォントで「勤劳就有收获」というサブタイトルを追加します。

ウォーターマーク除去

入力画像

出力画像

p1020805-转换自-png

p1020743-转换自-png

左上隅のすべてのテキストを削除します。

アウトペインティング

入力画像

出力画像

image (18)-转换自-png

5eecdaf48460cde5c4be102460b058055561df7a15a7389475b8339e1c4c24831b75b38faadcd24bec177c308ebd53049e07d7fc490946139fdff014838b673b9dff828674c79200daa0c9c7ebedc8db2df6ace13bf592fa4fb4c8ed7016461c-转换自-png

画像をアウトペイントして、ロングショットの写真を生成します。

課金とレート制限

  • 無料クォータと単価については、「モデルと価格」をご参照ください。

  • レート制限については、「Wan」をご参照ください。

  • 課金の説明:

    • 課金は、正常に生成された画像の数に基づきます。API が task_status として SUCCEEDED を返し、画像が正常に生成された場合にのみ課金されます。

    • モデルの呼び出しに失敗した場合や処理エラーが発生した場合は、料金は発生せず、無料クォータも消費されません。

API リファレンス

入力および出力パラメーターについては、「Wan - 汎用画像編集 2.5 API リファレンス」をご参照ください。

よくある質問

Q:Wan2.1 の汎用画像編集を使用していましたが、wan2.5 に切り替える場合、SDK の呼び出し方法を変更する必要がありますか?

A:はい。2 つのバージョンではパラメーターの設計が異なります:

  • 汎用画像編集 2.1promptfunction の両方のパラメーターが必要です。

  • 汎用画像編集 2.5prompt パラメーターのみが必要です。すべての編集操作をテキスト命令で記述します。function パラメーターはサポートされなくなり、不要です。