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

Alibaba Cloud Model Studio:Wan - general image editing 2.5

最終更新日:Dec 06, 2025

Wan - general image editing 2.5 モデルは、テキスト命令を使用して、1 つ以上の参照画像に基づいて、主題の一貫性を保った画像編集と複数画像の融合を実行します。

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

モデル概要

特徴

入力例

出力画像

単一画像の編集

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 キーを環境変数として設定してください。SDK を使用して呼び出しを行うには、DashScope SDK をインストールします。

重要

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

HTTP

画像編集タスクの完了には、通常 1〜2 分程度の時間がかかります。そのため、API は非同期呼び出しを使用します。このプロセスには、タスクの作成と結果のポーリングという 2 つの主要なステップが含まれます。手順は以下の通りです:

実際の所要時間は、キュー内のタスク数とサービスの実行状況によって異なります。結果が返されるまで待つ必要があります。

ステップ 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 文字を超えることはできません。各漢字または文字は 1 文字としてカウントされます。超過した文字は自動的に切り捨てられます。

プロンプトの使用に関するヒントについては、「テキストから画像へのプロンプトガイド」をご参照ください。

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

images array of string (必須)

画像 URL の配列。

  • 配列には最大 3 つの画像を含めることができます。

  • 複数画像の入力の場合、配列内の画像の順序がそのシーケンスを定義します。

画像の制限:

  • 画像フォーマット: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 です。

  • 画像解像度:総ピクセル数は [768*768, 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` パラメーターはコストに直接影響します。`n` の値が大きいほどコストが高くなります。呼び出しを行う前に、モデルの料金をご確認ください。

生成する画像の数。値は 1 から 4 までの整数である必要があります。デフォルト値は 4 です。コストを管理するために、テスト目的でこのパラメーターを明示的に 1 に設定することを推奨します。

watermark boolean (任意)

ウォーターマークを追加するかどうかを指定します。ウォーターマークは画像の右下隅に「AI-generated」と表示されます。

  • false (デフォルト)

  • true

prompt_extend boolean (任意)

プロンプトの再書き込みを有効にするかどうかを指定します。有効にすると、大規模モデルが入力プロンプトを再書き込みして全体的なパフォーマンスを向上させますが、実行時間が増加します。

  • true (デフォルト)

  • false

例:true。

seed integer (任意)

乱数シード。値は [0, 2147483647] の範囲の整数である必要があります。

このパラメーターが提供されない場合、アルゴリズムは自動的に乱数をシードとして生成します。このパラメーターが提供される場合、アルゴリズムは n 個の各画像に対してシードパラメーターを生成します。例えば、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":"Invalid API-key provided.",
    "request_id":"fb53c4ec-1c12-4fc4-a580-xxxxxx"
}

output object

タスクの出力情報。

プロパティ

task_id string

タスク 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。

  • 結果リンク:タスクが成功すると、画像リンクが返されます。リンクの有効期間は 24 時間です。リンクを取得したら、すぐに画像をダウンロードし、Object Storage Service などの永続的なストレージサービスに保存してください。

リクエストパラメーター

タスク結果のクエリ

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"
ヘッダー

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": "An internal timeout error has occured during execution, please try again later or contact service support."
            }
        ],
        "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。クエリは 24 時間有効です。

task_status string

タスクのステータス。

列挙

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN:タスクが存在しないか、ステータスを判断できません。

submit_time string

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

scheduled_time string

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

end_time string

タスクが完了した時刻。時刻は UTC+08:00 タイムゾーンです。フォーマットは 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 のパラメーター名と一致しています。パラメーター構造は、各プログラミング言語の規則に合わせてカプセル化されています。

画像編集タスクには約 30〜60 秒かかります。SDK は、下位層で HTTP 非同期呼び出しプロセスをカプセル化し、同期呼び出しと非同期呼び出しの両方をサポートします。

実際の所要時間は、キュー内のタスク数とサービスの実行状況によって異なります。結果が返されるまで待つ必要があります。

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/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/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/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/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
    }
}

制限事項

  • データ有効期間:タスクの `task_id` と画像 URL は 24 時間のみ保持されます。この期間を過ぎると、クエリやダウンロードはできなくなります。

  • Content Moderation:入力プロンプト、入力画像、出力画像はすべて Content Moderation の対象となります。非準拠のコンテンツを含むリクエストは、「IPInfringementSuspect」または「DataInspectionFailed」エラーになります。詳細については、「エラーコード」をご参照ください。

  • ネットワークアクセス構成:画像リンクは Object Storage Service (OSS) に保存されます。セキュリティポリシーにより、ご利用の業務システムが 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:一般画像編集 2.1 を使用していましたが、wan2.5 モデルに切り替えるために SDK の呼び出しを調整する必要がありますか?

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

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

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

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

A:モデルの呼び出しが完了してから 1 時間後、モデル監視 (シンガポール)モデル監視 (北京) ページに移動して、呼び出し回数や成功率などのメトリックを確認できます。手順については、「モデルの呼び出し記録を確認するにはどうすればよいですか?」をご参照ください。