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

Alibaba Cloud Model Studio:Wan2.5 - 汎用画像編集

最終更新日:Jan 16, 2026

Wan2.5 - 汎用画像編集モデルは、テキストプロンプトを使用して画像を編集します。編集中に主題の一貫性を維持し、最大 3 枚の参照画像による複数画像の融合をサポートします。

クイックスタートユーザーガイド

モデルの概要

機能

入力例

出力画像

単一画像の編集

damotest2023_Portrait_photography_outdoors_fashionable_beauty_409ae3c1-19e8-4515-8e50-b3c9072e1282_2-转换自-png

a26b226d-f044-4e95-a41c-d1c0d301c30b-转换自-png

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

複数画像の融合

image

p1028883

画像 1 の目覚まし時計を、画像 2 の食卓にある花瓶の隣に置きます。

モデル

説明

出力画像の仕様

wan2.5-i2i-preview

Wan 2.5 プレビュー

単一画像の編集と複数画像の融合をサポートします。

画像フォーマット: PNG。

画像解像度:

  • <a baseurl="t3137712_v3_0_0.xdita" data-node="6107277" data-root="85177" data-tag="xref" href="#2e0de6a5b1aw8" id="083cf715943un">parameters.size</a> パラメーターを使用して、出力イメージの解像度を width*height フォーマット (ピクセル単位) で指定します。

  • 解像度を指定しない場合、システムはデフォルトで合計 1280*1280 ピクセルの画像を出力します。システムは入力画像と同様のアスペクト比を維持します:

    • 単一画像の入力:アスペクト比は入力画像と同じです。

    • 複数画像の入力:アスペクト比は最後の入力画像と同じです。

説明

この API を呼び出す前に、各リージョンのモデルと料金をご確認ください。

前提条件

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

重要

中国 (北京) リージョンとシンガポールリージョンでは、API キーリクエストエンドポイントが異なります。これらを相互に利用することはできません。リージョンをまたいだ呼び出しは、認証失敗またはサービスエラーを引き起こします。

HTTP

画像編集の完了には時間がかかります。この API は非同期呼び出しを使用します。タスクを送信してタスク ID を取得し、結果が準備できるまでポーリングします。

ヒント:タスクステータスが SUCCEEDED または FAILED に変わるまで、5 秒ごとにポーリングしてください。

ステップ 1:タスクを送信してタスク ID を取得

シンガポールPOST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis

中国 (北京)POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis

説明
  • タスクが作成された後、返された task_id を使用して結果をクエリします。`task_id` は 24 時間有効です。重複したタスクを作成しないでください。代わりに、ポーリングを使用して結果を取得してください。

リクエストパラメーター

単一画像の編集

 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": "花柄のドレスを、襟と袖口に精巧な刺繍が施されたヴィンテージスタイルのレースのロングドレスに変更します。",
        "images": [
            "https://img.alicdn.com/imgextra/i2/O1CN01vHOj4h28jOxUJPwY8_!!6000000007968-49-tps-1344-896.webp"
        ]
    },
    "parameters": {
        "prompt_extend": true,
        "n": 1
    }
}'

複数画像の融合

 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": "画像 1 の目覚まし時計を、画像 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
    }
}'

ヘッダー

Content-Type string (必須)

リクエストのコンテンツタイプ。このパラメーターを application/json に設定する必要があります。

Authorization string (必須)

認証情報。この API は Model Studio API キーを認証に使用します。例:`Bearer sk-xxxx`。

X-DashScope-Async string (必須)

このパラメーターは非同期処理を設定するために使用されます。HTTP リクエストは非同期処理のみをサポートするため、このパラメーターを enable に設定する必要があります

重要

このリクエストヘッダーを含めない場合、「current user api does not support synchronous calls」というエラーメッセージが返されます。

リクエストボディ

model string (必須)

モデル名。詳細については、「モデルリストと料金」をご参照ください。

例:wan2.5-i2i-preview。

input object (必須)

プロンプトと画像を含む入力設定。

プロパティ

prompt string (必須)

編集指示 (ポジティブプロンプト)。編集後の画像の要素と視覚的な変更を指定します。

中国語と英語に対応しています。最大 2,000 文字。長いコンテンツは切り捨てられます。

プロンプト作成のガイドラインについては、「テキストから画像へのプロンプトガイド」をご参照ください。

例:座っているオレンジ色の猫、陽気、活発、かわいい、リアル、正確。

images array of string (必須)

入力画像を指す URL の配列。

  • リクエストごとに最大 3 枚の画像。

  • 複数の画像の場合、配列の順序がシーケンス (画像 1、画像 2 など) を定義します。

画像の制限:

  • サポートされるフォーマット:JPEG、JPG、PNG、BMP、WEBP。PNG のアルファチャンネルは無視されます。

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

  • サイズ制限:画像あたり 10 MB。

サポートされる入力フォーマット:

  1. パブリック URL

    • HTTP と HTTPS の両方がサポートされています。

    • 例:http://wanx.alicdn.com/material/20250318/stylization_all_1.jpeg

  2. Base64 エンコード文字列

    • フォーマット:data:{MIME_type};base64,{base64_data}

    • 例:data:image/jpeg;base64,GDU7MtCZzEbTbmRZ... (表示用に切り捨てられています。本番環境では完全な文字列を使用してください)

    • Base64 エンコーディングの仕様については、「画像入力方法」をご参照ください。

negative_prompt string (任意)

ネガティブプロンプト。生成される画像から除外する要素。

中国語と英語に対応しています。最大 500 文字。長いコンテンツは切り捨てられます。

例:低解像度、エラー、最低品質、低品質、変形、余分な指、悪いプロポーション。

parameters object (任意)

出力解像度、プロンプトリライト、ウォーターマーク、その他の処理オプションを制御します。

プロパティ

size string (任意)

出力解像度を width*height 形式で設定します。デフォルト:1280*1280

  • 総ピクセル数は 589,824 (768*768) から 1,638,400 (1280*1280) の範囲内である必要があります。アスペクト比は 1:4 から 4:1 の範囲内である必要があります。

  • 例:1280*1280。

推奨される解像度とアスペクト比

  • 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 integer (任意)

重要

n パラメーターは課金に直接影響します。値が大きいほどコストが高くなります。この API を呼び出す前に、モデルの料金をご確認ください。

生成する画像の数。有効な値:1〜4。デフォルト:4。テスト目的では、コストを最小限に抑えるために 1 を使用してください。

watermark boolean (任意)

出力画像の右下に「AI-generated」のウォーターマークを追加します。

  • false (デフォルト)

  • true

prompt_extend boolean (任意)

スマートプロンプトリライトを有効にします。有効にすると、LLM がプロンプトを強化してより良い結果を生成しますが、処理時間が長くなります。

  • true (デフォルト)

  • false

seed integer (任意)

乱数シード。有効範囲:0〜2147483647。

省略した場合、乱数シードが自動的に生成されます。指定した場合、システムは複数の画像に対して増分シードを使用します。n=4 の場合、シードは `seed`、`seed+1`、`seed+2`、`seed+3` となります。

特定の結果を再現するには、固定のシード値を使用してください。

注意:固有のランダム性のため、同じシードでも完全に同じ結果が生成されるとは限りません。

レスポンスパラメーター

成功レスポンス

`task_id` を保存して、タスクのステータスと結果をクエリします。

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

エラーレスポンス

タスクの作成に失敗しました。詳細については、「エラーメッセージ」を参照して問題を解決してください。

{
    "code": "InvalidApiKey",
    "message": "No API-key provided.",
    "request_id": "7438d53d-6eb8-4596-8835-xxxxxx"
}

output object

タスクの出力情報。

プロパティ

task_id string

タスク ID。この ID を使用して、最大 24 時間タスクをクエリできます。

task_status string

タスクステータス。

列挙

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN:タスクが存在しないか、ステータスが不明です。

request_id string

一意のリクエスト ID。この ID を使用して、問題を追跡およびトラブルシューティングできます。

code string

エラーコード。このパラメーターはリクエストが失敗した場合にのみ返されます。詳細については、「エラーメッセージ」をご参照ください。

message string

詳細なエラーメッセージ。このパラメーターはリクエストが失敗した場合にのみ返されます。詳細については、「エラーメッセージ」をご参照ください。

ステップ 2:タスク ID を使用して結果をポーリング

シンガポール: GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id}

北京: GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

説明
  • ポーリングの提案:画像生成には数分かかることがあります。10 秒などの適切なクエリ間隔でポーリングメカニズムを使用して結果を取得することを推奨します。

  • タスクステータスの遷移:PENDING → RUNNING → SUCCEEDED または FAILED。

  • 結果 URL:タスクが成功すると、画像 URL が返されます。URL は 24 時間有効です。URL を取得した後、すぐに画像をダウンロードし、Object Storage Service (OSS) などの永続ストレージサービスに保存する必要があります。

リクエストパラメーター

タスク結果のクエリ

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

API キーはリージョン固有です。API キーを取得してください。
北京リージョンのモデルの場合、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"
ヘッダー

Authorization string (必須)

認証情報。この API は Model Studio API キーを認証に使用します。例:`Bearer sk-xxxx`。

URL パスパラメーター

task_id string (必須)

タスク ID。

レスポンスパラメーター

タスクの実行成功

画像 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": "花柄のドレスを、襟と袖口に精巧な刺繍が施されたヴィンテージスタイルのレースのロングドレスに変更します。",
                "actual_prompt": "ピンクのプリーツドレスを、襟と袖口に精巧な刺繍が施されたヴィンテージスタイルのレースのロングドレスに置き換えます。人物の髪型、メイク、姿勢は変更しません。全体的なスタイルは、元の画像の柔らかなトーンとクラシックな雰囲気と一致させる必要があります。",
                "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
    }
}

タスクの実行失敗

タスクが失敗した場合、`task_status` は FAILED に設定され、エラーコードとメッセージが提供されます。詳細については、「エラーメッセージ」を参照して問題を解決してください。

{
    "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-xxxxxx",
        "task_status": "FAILED",
        "code": "InvalidParameter",
        "message": "xxxxxx",
        "task_metrics": {
            "TOTAL": 4,
            "SUCCEEDED": 0,
            "FAILED": 4
        }
    }
}

タスクの部分的な失敗

モデルは 1 つのタスクで複数の画像を生成できます。少なくとも 1 つの画像が正常に生成された場合、タスクステータスは SUCCEEDED とマークされ、成功した画像の URL が返されます。生成に失敗した画像については、結果に失敗理由が含まれます。これらの失敗を解決するには、「エラーメッセージ」をご参照ください。さらに、正常に生成された画像のみが使用状況統計にカウントされます。

{
    "request_id": "85eaba38-0185-99d7-8d16-xxxxxx",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/123/a1.png"
            },
            {
                "code": "InternalError.Timeout",
                "message": "実行中に内部タイムアウトエラーが発生しました。後でもう一度試すか、サービスサポートに連絡してください。"
            }
        ],
        "task_metrics": {
            "TOTAL": 2,
            "SUCCEEDED": 1,
            "FAILED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

タスククエリの期限切れ

`task_id` は 24 時間有効です。この期間を過ぎると、クエリは失敗し、次のエラーメッセージが返されます。

{
    "request_id": "a4de7c32-7057-9f82-8581-xxxxxx",
    "output": {
        "task_id": "502a00b1-19d9-4839-a82f-xxxxxx",
        "task_status": "UNKNOWN"
    }
}

output object

タスクの出力情報。

プロパティ

task_id string

タスク ID。この ID を使用して、最大 24 時間タスクをクエリできます。

task_status string

タスクステータス。

列挙

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN:タスクが存在しないか、ステータスが不明です。

submit_time string

タスクが送信された時刻。時刻は UTC+8 です。フォーマットは `YYYY-MM-DD HH:mm:ss.SSS` です。

scheduled_time string

タスクの実行が開始された時刻。時刻は UTC+8 です。フォーマットは `YYYY-MM-DD HH:mm:ss.SSS` です。

end_time string

タスクが完了した時刻。時刻は UTC+8 です。フォーマットは `YYYY-MM-DD HH:mm:ss.SSS` です。

results array of object

生成結果の配列。各エントリには、画像 URL とプロンプト情報、または生成が失敗した場合はエラー詳細が含まれます。

プロパティ

orig_prompt string

元の入力プロンプト。これは prompt リクエストパラメーターの値です。

actual_prompt string

プロンプトリライトが有効な場合、このパラメーターは使用された実際の最適化されたプロンプトを返します。この機能が無効な場合、このパラメーターは返されません。

url string

出力画像の URL。

code string

画像生成が失敗したときに返されるエラーコード。

message string

画像生成が失敗したときに返されるエラーメッセージ。

task_metrics object

タスク結果の統計。

プロパティ

TOTAL integer

タスクの総数。

SUCCEEDED integer

成功したタスクの数。

FAILED integer

失敗したタスクの数。

code string

エラーコード。このパラメーターはリクエストが失敗した場合にのみ返されます。詳細については、「エラーメッセージ」をご参照ください。

message string

詳細なエラーメッセージ。このパラメーターはリクエストが失敗した場合にのみ返されます。詳細については、「エラーメッセージ」をご参照ください。

usage object

使用状況の統計。正常に生成された画像のみが課金対象となります。

プロパティ

image_count integer

モデルによって正常に生成された画像の数。課金計算式は:料金 = (画像の数) × (単価) です。

request_id string

一意のリクエスト ID。この ID を使用して、問題を追跡およびトラブルシューティングできます。

DashScope SDK

SDK パラメーターは HTTP API を反映しており、構造は各言語の規則に合わせて調整されています。

画像編集には時間がかかります。SDK は内部でポーリングを処理し、同期と非同期の両方の呼び出しモードを提供します。

Python SDK

重要

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

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

同期呼び出し

リクエスト例

この例では、パブリック 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/ja/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("サポートされていない、または認識されない画像形式です")
    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('----同期呼び出し、しばらくお待ちください----')
rsp = ImageSynthesis.call(api_key=api_key,
                          model="wan2.5-i2i-preview",
                          prompt="画像 1 の目覚まし時計を、画像 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": "画像 1 の目覚まし時計を、画像 2 の食卓にある花瓶の隣に置きます。",
                "actual_prompt": "画像 1 の青い目覚まし時計を、画像 2 の食卓のテーブルクロスの端近く、花瓶の右側に置きます。目覚まし時計はカメラの方を向き、テーブルと平行に保ち、その影がテーブルに自然に落ちるようにします。"
            }
        ],
        "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
    }
}

非同期呼び出し

この例では、パブリック 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/ja/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('----タスクを作成----')
    task_info = create_async_task()
    print('----タスクを待機----')
    wait_async_task(task_info)


# 非同期タスクを作成
def create_async_task():
    rsp = ImageSynthesis.async_call(api_key=api_key,
                                    model="wan2.5-i2i-preview",
                                    prompt="画像 1 の目覚まし時計を、画像 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": "画像 1 の目覚まし時計を、画像 2 の食卓にある花瓶の隣に置きます。",
                "actual_prompt": "画像 1 の青い目覚まし時計を、画像 2 の食卓のテーブルクロスの端近く、花瓶の右側に置きます。目覚まし時計はカメラの方を向き、テーブルと平行に保ち、その影がテーブルに自然に落ちるようにします。"
            }
        ],
        "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 SDK

重要

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

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

同期呼び出し

リクエスト例

この例では、パブリック 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/ja/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("画像 1 の目覚まし時計を、画像 2 の食卓にある花瓶の隣に置きます。")
                        .images(imageUrls)
                        .n(1)
                         //.size("1280*1280")
                        .negativePrompt("")
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---同期呼び出し、しばらくお待ちください----");
            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("ファイルが存在しません: " + filePath);
        }
        // MIME タイプを検出
        String mimeType = null;
        try {
            mimeType = Files.probeContentType(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("ファイルタイプを検出できません: " + filePath);
        }
        if (mimeType == null || !mimeType.startsWith("image/")) {
            throw new IllegalArgumentException("サポートされていない、または認識されない画像形式です");
        }
        // ファイルの内容を読み込んでエンコード
        byte[] fileBytes = null;
        try{
            fileBytes = Files.readAllBytes(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("ファイルの内容を読み取れません: " + 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": "画像 1 の目覚まし時計を、画像 2 の食卓にある花瓶の隣に置きます。",
                "actual_prompt": "画像 1 の青い目覚まし時計を、画像 2 の食卓のテーブルクロスの端近く、花瓶の右側に置きます。目覚まし時計の正面がカメラを向き、花瓶と平行になるようにします。",
                "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
    }
}

非同期呼び出し

この例では、パブリック 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/ja/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("画像 1 の目覚まし時計を、画像 2 の食卓にある花瓶の隣に置きます。")
                        .images(imageUrls)
                        .n(1)
                        //.size("1280*1280")
                        .negativePrompt("")
                        .parameters(parameters)
                        .build();
        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---非同期呼び出し、しばらくお待ちください----");
            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": "画像 1 の目覚まし時計を、画像 2 の食卓にある花瓶の隣に置きます。",
                "actual_prompt": "画像 1 の青い目覚まし時計を、画像 2 の食卓のテーブルクロスの端近く、花瓶の右側に置きます。目覚まし時計の正面がカメラを向き、花瓶と平行になるようにします。",
                "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
    }
}

制限事項

  • データ保持:タスク ID と画像 URL は 24 時間後に期限切れとなり、その後はアクセスできなくなります。

  • コンテンツ審査:すべての入力 (プロンプトと画像) および出力は自動的に審査されます。非準拠のコンテンツは `IPInfringementSuspect` または `DataInspectionFailed` エラーをトリガーします。詳細については、「エラーコード」をご参照ください。

  • ネットワークアクセス:画像リンクは Object Storage Service (OSS) に保存されます。ご利用の環境が OSS リンクをブロックしている場合は、これらのドメインを許可リストに追加してください:

    # OSS ドメイン名リスト
    dashscope-result-bj.oss-cn-beijing.aliyuncs.com
    dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com
    dashscope-result-sh.oss-cn-shanghai.aliyuncs.com
    dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com
    dashscope-result-zjk.oss-cn-zhangjiakou.aliyuncs.com
    dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com
    dashscope-result-hy.oss-cn-heyuan.aliyuncs.com
    dashscope-result-cd.oss-cn-chengdu.aliyuncs.com
    dashscope-result-gz.oss-cn-guangzhou.aliyuncs.com
    dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com

エラーコード

呼び出しが失敗した場合は、「エラーメッセージ」を参照してトラブルシューティングを行ってください。

よくある質問

Q:Wan 2.1 から移行する場合、どのような API の変更点に注意すべきですか?

A:主な違いは以下の通りです:

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

  • Wan2.5 - 汎用画像編集のみ prompt パラメーターが必要です。すべての編集操作をテキスト指示で記述します。function パラメーターは非推奨となり、使用されなくなりました。

Q:モデルの呼び出し回数を確認するにはどうすればよいですか?

A:使用状況メトリクス (呼び出し回数、成功率など) は、API 呼び出しから 1 時間以内にモデル監視 (シンガポール)モデル監視 (北京) ページに表示されます。手順については、「請求クエリとコスト管理」をご参照ください。