Wan 画像編集モデルは、テキストプロンプトから、アウトペインティング、ウォーターマーク除去、スタイル変換、命令ベースの編集、局所インペインティング、画像修復など、さまざまな編集タスクを実行します。
このドキュメントは 中国 (北京) リージョンにのみ適用されます。モデルを使用するには、中国 (北京) リージョンの API キー を使用する必要があります。
モデル概要
パフォーマンスショーケース
元の画像 |
髪を赤色に変える |
少女にサングラスを追加する |
フランスの絵本スタイルに変換する |
主な機能をご参照ください。
料金
北京リージョン
北京リージョンでは無料クォータは提供されません。すべての呼び出しが課金対象となります。続行する前にご確認ください。
モデル | 単価 | レート制限 (Alibaba Cloud アカウントと RAM ユーザーで共有) | |
タスク送信の RPS 制限 | 同時タスク数 | ||
wanx2.1-imageedit | $0.020070/画像 | 2 | 2 |
クイックスタート
前提条件
API キーを取得し、環境変数として設定します。DashScope SDK を使用して呼び出しを行う場合は、SDK をインストールする必要もあります。
サンプルコード
画像編集 API を呼び出して局所インペインティングを実行します。
SDK は非同期処理をカプセル化しているため、インターフェイスは同期的に動作します。つまり、1 つのリクエストで結果を待ちます。curl の例では、タスクの送信と結果のクエリという 2 つの個別の非同期操作を示しています。
Python
パブリック URL、Base64 エンコーディング、ローカルファイルパスの 3 つの入力メソッドをサポートしています。
リクエスト例
import base64
import os
from http import HTTPStatus
from dashscope import ImageSynthesis
import mimetypes
"""
環境要件:
dashscope python SDK >= 1.23.8
SDK のインストール/アップグレード:
pip install -U dashscope
"""
# 環境変数が設定されていない場合は、次の行を api_key="sk-xxx" に置き換えてください
api_key = os.getenv("DASHSCOPE_API_KEY")
# --- ヘルパー関数: 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 を使用
mask_image_url = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png"
base_image_url = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg"
# [メソッド 2] ローカルファイルを使用 (絶対パスと相対パスをサポート)
# フォーマット要件: file:// + ファイルパス
# 例 (絶対パス):
# mask_image_url = "file://" + "/path/to/your/mask_image.png" # Linux/macOS
# base_image_url = "file://" + "C:/path/to/your/base_image.jpeg" # Windows
# 例 (相対パス):
# mask_image_url = "file://" + "./mask_image.png" # 実際のパスに基づく
# base_image_url = "file://" + "./base_image.jpeg" # 実際のパスに基づく
# [メソッド 3] Base64 エンコードされた画像を使用
# mask_image_url = encode_file("./mask_image.png") # 実際のパスに基づく
# base_image_url = encode_file("./base_image.jpeg") # 実際のパスに基づく
def sample_sync_call_imageedit():
print('please wait...')
rsp = ImageSynthesis.call(api_key=api_key,
model="wanx2.1-imageedit",
function="description_edit_with_mask",
prompt="A ceramic rabbit holding a ceramic flower",
mask_image_url=mask_image_url,
base_image_url=base_image_url,
n=1)
assert rsp.status_code == HTTPStatus.OK
print('response: %s' % rsp)
if rsp.status_code == HTTPStatus.OK:
for result in rsp.output.results:
print("---------------------------")
print(result.url)
else:
print('sync_call Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_sync_call_imageedit()レスポンス例
URL は 24 時間有効です。画像を速やかにダウンロードしてください。
{
"status_code": 200,
"request_id": "dc41682c-4e4a-9010-bc6f-xxxxxx",
"code": null,
"message": "",
"output": {
"task_id": "6e319d88-a07a-420c-9493-xxxxxx",
"task_status": "SUCCEEDED",
"results": [
{
"url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.png?xxxxxx"
}
],
"submit_time": "2025-05-26 14:58:27.320",
"scheduled_time": "2025-05-26 14:58:27.339",
"end_time": "2025-05-26 14:58:39.170",
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 1,
"FAILED": 0
}
},
"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.JsonUtils;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
/**
* 環境要件
* dashscope java SDK >=2.20.9
* Maven 依存関係の更新:
* https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
*/
public class ImageEditSync {
// 環境変数が設定されていない場合は、次の行を apiKey="sk-xxx" に置き換えてください
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
/**
* 画像入力メソッド: 次の 3 つから 1 つを選択します。
*
* 1. パブリック URL を使用 - 一般公開されている画像に適しています。
* 2. ローカルファイルを使用 - ローカルでの開発およびテストに適しています。
* 3. Base64 エンコーディングを使用 - 非公開の画像や暗号化された転送が必要なシナリオに適しています。
*/
//[メソッド 1] パブリック URL
static String maskImageUrl = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png";
static String baseImageUrl = "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg";
//[メソッド 2] ローカルファイルパス (file://+絶対パス または file:///+絶対パス)
// static String maskImageUrl = "file://" + "/your/path/to/mask_image.png"; // Linux/macOS
// static String baseImageUrl = "file:///" + "C:/your/path/to/base_image.png"; // Windows
//[メソッド 3] Base64 エンコーディング
// static String maskImageUrl = encodeFile("/your/path/to/mask_image.png");
// static String baseImageUrl = encodeFile("/your/path/to/base_image.png");
public static void syncCall() {
// parameters パラメーターを設定
Map<String, Object> parameters = new HashMap<>();
parameters.put("prompt_extend", true);
ImageSynthesisParam param =
ImageSynthesisParam.builder()
.apiKey(apiKey)
.model("wanx2.1-imageedit")
.function(ImageSynthesis.ImageEditFunction.DESCRIPTION_EDIT_WITH_MASK)
.prompt("A ceramic rabbit holding a ceramic flower")
.maskImageUrl(maskImageUrl)
.baseImageUrl(baseImageUrl)
.n(1)
.size("1024*1024")
.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": "bf6c6361-f0fc-949c-9d60-xxxxxx",
"output": {
"task_id": "958db858-153b-4c81-b243-xxxxxx",
"task_status": "SUCCEEDED",
"results": [
{
"url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.png?xxxxxx"
}
],
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 1,
"FAILED": 0
}
},
"usage": {
"image_count": 1
}
}curl
タスクの作成、ステータスのポーリング、結果の取得と保存という完全なワークフローをカバーします。
非同期呼び出しを行うには、
X-DashScope-Asyncヘッダーをenableに設定します。タスク ID は 24 時間後に有効期限が切れ、ステータスは
UNKNOWNに変わります。
ステップ 1: タスクの作成
task_id を返します。
リクエスト例
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "wanx2.1-imageedit",
"input": {
"function": "description_edit_with_mask",
"prompt": "A ceramic rabbit holding a ceramic flower.",
"base_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg",
"mask_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png"
},
"parameters": {
"n": 1
}
}'レスポンス例
{
"output": {
"task_status": "PENDING",
"task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
},
"request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}ステップ 2: タスク ID で結果をクエリ
task_status が SUCCEEDED または FAILED になるまで、task_id を使用してタスクのステータスをポーリングします。
リクエスト例
86ecf553-d340-4e21-xxxxxxxxx を実際の task_id に置き換えてください。
curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"レスポンス例
画像 URL は 24 時間後に有効期限が切れます。速やかにダウンロードしてください。
{
"request_id": "eeef0935-02e9-9742-bb55-xxxxxx",
"output": {
"task_id": "a425c46f-dc0a-400f-879e-xxxxxx",
"task_status": "SUCCEEDED",
"submit_time": "2025-02-21 17:56:31.786",
"scheduled_time": "2025-02-21 17:56:31.821",
"end_time": "2025-02-21 17:56:42.530",
"results": [
{
"url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/aaa.png"
}
],
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 1,
"FAILED": 0
}
},
"usage": {
"image_count": 1
}
}主な機能
function パラメーターを使用して編集機能を指定します。すべての機能は、クイックスタート と同じ呼び出しメソッドに従います。
以下のセクションでは、機能固有の input および parameters JSON を使用した curl の例を示します。
注意: 完全な curl リクエストには、model、input、parameters などのトップレベルのフィールドを含める必要があります。構造の詳細については、「汎用画像編集 API リファレンス」をご参照ください。
グローバルなスタイル化
画像全体に芸術的なスタイルを適用します。ユースケース:絵本の作成、ソーシャルメディアの背景、特定のスタイルに合わせたコンセプト画像など。
functionをstylization_allに設定します。サポートされているスタイル:
フランスの絵本スタイル
金箔アートスタイル
parameters.strength(0.0–1.0、デフォルト: 0.5) は、変更の強度を制御します。値が低いほど、元の画像が多く保持されます。プロンプトの形式: 「[スタイル] に変換」 (例:「フランスの絵本スタイルに変換」)。
入力画像 | 出力画像 | |
プロンプト: フランスの絵本スタイルに変換 | プロンプト: 金箔アートスタイルに変換 | |
|
|
|
|
|
|
strength で画像の変更度合いを制御
parameters.strength パラメーター (0.0–1.0、デフォルト: 0.5) は、変更の強度を制御します。0 に近い値は元の画像を保持し、1 に近い値はより多く変更します。
入力プロンプト: フランスの絵本スタイルに変換。
入力画像 | 出力画像 | ||
strength=0.0 (最小値) | strength=0.5 (デフォルト値) | strength=1.0 (最大値) | |
|
|
|
|
局所的なスタイル化
局所的な領域にのみスタイル変換を適用します。ユースケース:パーソナライズされたカスタマイズ (キャラクターの服装) や広告デザイン (プロダクトのハイライト) など。
functionをstylization_localに設定します。サポートされているスタイル: サポートされているスタイルとそれに対応する値は次のとおりです:
氷の彫刻: ice
クラウド:クラウド
中国の祝祭提灯: chinese festive lantern
板: 木製
青と白の磁器: blue and white porcelain
ふわふわ: fluffy
糸: weaving
風船: balloon
プロンプトの形式: 「[オブジェクト] を [スタイル] に変更」 (例:「家を木製スタイルに変更」)。
入力画像 | 出力画像 | |||
|
氷の彫刻 |
雲 |
中国の祝祭提灯 |
木製 |
青と白の磁器 |
ふわふわ |
|
風船 | |
命令ベースの編集
領域を指定せずにテキスト命令でコンテンツを追加または変更します。ユースケース:正確な位置指定を必要としない簡単な編集 (アクセサリーの追加、髪の色の変更など)。
functionをdescription_editに設定します。parameters.strength(0.0–1.0、デフォルト: 0.5) は、変更の強度を制御します。値が低いほど、元の画像が多く保持されます。プロンプト: 「追加」や「変更」などの動詞を含めます。削除の場合は、代わりに局所インペインティングを使用してください。
機能 | 入力画像 | 出力画像 |
要素の追加 |
|
子猫にサングラスを追加する。 |
要素の変更 |
|
彼女の髪を赤色に変える。 |
strength で画像の変更度合いを制御
parameters.strength パラメーター (0.0–1.0、デフォルト: 0.5) は、変更の強度を制御します。0 に近い値は元の画像を保持し、1 に近い値はより多く変更します。
入力プロンプト: 彼女の服をカラフルなプリントのビーチシャツに変更する。
入力画像 | 出力画像 | ||
strength=0.0 (最小値) | strength=0.5 (デフォルト値) | strength=1.0 (最大値) | |
|
|
|
|
局所インペインティング
マスクされた領域のコンテンツを追加、変更、または削除します。ユースケース:正確な制御が必要な編集 (服の変更、オブジェクトの置き換え、不要な要素の削除など)。
functionをdescription_edit_with_maskに設定します。マスクの要件:
mask_image_urlを提供します。白 = 編集領域、黒 = 保持領域。プロンプト: 「追加」、「変更」などのアクションを含め、削除の場合は削除後のコンテンツを記述します。
追加/変更: アクションまたは最終結果を記述します。
削除: 小さなオブジェクトの場合は
promptを空のままにします。大きなオブジェクトの場合は、削除アクション自体ではなく、削除後に希望する背景を記述します。
機能 | 入力画像 | 入力マスク画像 (白は編集対象領域) | 出力画像 |
要素の追加 |
|
|
子犬に帽子を追加する。 プロンプトを「帽子をかぶった子犬」のように、期待される画像の内容を記述することもできます。 |
要素の変更 |
|
|
セラミックのウサギがセラミックの花を持っている。 プロンプトを「セラミックのウサギが持っているニンジンをセラミックの花に置き換える」のように、アクションを記述することもできます。 |
要素の削除 |
|
|
テーブルの上の透明なガラスの花瓶。 プロンプトには削除後の内容を記述する必要があります。「茶色のクマを削除する」とは書かないでください。 |
テキストとウォーターマークの除去
法的リスクに関する警告
この機能を使用して著作権で保護された画像 (他のブランドのウォーターマークの除去など) を処理すると、著作権侵害になる可能性があります。処理された画像を使用する法的権利があることを確認し、関連するすべての法的責任を負うものとします。
中国語/英語のテキストまたはウォーターマークを除去します。ユースケース:素材の処理や広告のクリーンアップなど。
functionをremove_watermarkに設定します。プロンプト: 一般的な指示 (「テキストを除去」) を使用するか、種類を指定します (「英語のテキストを除去」)。
入力画像 | 出力画像 (画像内のテキストを除去) |
|
|
|
|
アウトペインティング
画像を全方向に比例的に拡張し、コンテンツをインテリジェントに塗りつぶします。ユースケース:構図の調整や、異なるメディア向けの縦横比の変換など。
functionをexpandに設定します。関連パラメーター:
top_scale、bottom_scale、left_scale、right_scaleは、方向ごとの拡張率を制御します (例: 1.5 = 1.5 倍のサイズ)。プロンプトのヒント: 拡張後に表示されると期待する完全なシーンを記述します。
入力画像 | 出力画像 |
|
|
画像超解像
画像の鮮明度を向上させ、低解像度またはぼやけた画像のアップスケーリングをサポートします。ユースケース:古い写真の復元や、HD 印刷/表示用の解像度の向上など。
functionをsuper_resolutionに設定します。parameters.upscale_factor(1–4、デフォルト: 1) は、アップスケーリングを制御します。値 1 は、拡大せずに鮮明度のみを向上させます。プロンプトのヒント: 「画像超解像」を使用するか、画像の内容を記述します。
入力画像 (ぼやけた画像) | 出力画像 (鮮明な画像) |
|
|
画像のカラー化
白黒またはグレースケールの画像をカラーに変換します。ユースケース:歴史的な写真や線画のカラー化など。
functionをcolorizationに設定します。プロンプト: 自動カラー化の場合は空のままにするか、主要な要素の色を指定します (例:「青い背景、黄色い葉」)。
入力画像 | 出力画像 |
|
|
線画から画像生成 (落書きベースの描画をサポート)
線画の輪郭とテキストプロンプトから画像を生成します。ユースケース:建築コンセプト、イラスト、または落書きベースの描画など。
functionをdoodleに設定します。関連パラメーター:
parameters.is_sketch。これは画像生成結果を制御します。false(デフォルト): モデルは RGB 入力から線画を抽出し、画像を生成します (RGB → 線画 → 画像)。true: モデルは落書きのような RGB 入力から直接画像を生成します (RGB → 画像)。
プロンプト: 期待されるコンテンツを記述します。詳細が多いほど、より良い結果が得られます。
機能 | 入力画像 | 出力画像 |
線画から画像生成 (is_sketch=false) |
|
ミニマリストな北欧スタイルのリビングルーム。 |
落書きベースの描画 (is_sketch=true) |
|
二次元アニメスタイルの木。 |
参照カートゥーンキャラクターに基づく画像生成
法的リスクに関する警告
この機能を使用して著作権で保護されたカートゥーンキャラクターを処理すると、著作権侵害になる可能性があります。参照するキャラクターを使用する法的権利を持っているか、独自のオリジナルキャラクターを使用する必要があります。また、関連するすべての法的責任を負うものとします。
functionをcontrol_cartoon_featureに設定します。プロンプトの形式: 「カートゥーンキャラクターが [アクション/環境の詳細]...」
入力画像 | 出力画像 |
|
|
本番環境に適用
ベストプラクティス
非同期ポーリング: レート制限を回避するために、段階的なポーリング間隔 (例: 30 秒間は 3 秒ごと、その後は間隔を長くする) を使用します。
パラメーターチューニング: 本番環境に適用する前に、
strengthなどの主要なパラメーターを小規模な試行でテストし、最適な値を見つけます。画像ストレージ: API が返す URL は 24 時間後に有効期限が切れます。画像をダウンロードし、速やかに永続ストレージ (例: OSS) に転送します。
リスク防止
エラーハンドリング: クエリ結果の
task_statusを確認します。FAILEDの場合は、トラブルシューティングのためにcodeとmessageを記録します。一時的なエラー (例: タイムアウト) は、リトライで成功する場合があります。コンテンツモデレーション: API は、すべての入出力をコンプライアンスのためにレビューします。非準拠のコンテンツは
DataInspectionFailedを返します。
API リファレンス
入力およびレスポンスパラメーターの詳細については、「汎用画像編集 API リファレンス」をご参照ください。
課金とレート制限
モデルの無料クォータと料金については、「Wan 画像編集 2.1」をご参照ください。
モデルのレート制限については、「Wan」をご参照ください。
課金の詳細:
課金は正常に生成された画像の数ごとに行われます。料金は
task_statusがSUCCEEDEDの場合にのみ適用されます。失敗した呼び出しは料金が発生せず、新規ユーザー向けの無料クォータも消費しません。
エラーコード
モデルの呼び出しが失敗し、エラーメッセージが返された場合は、「エラーメッセージ」で解決策をご参照ください。
よくある質問
Q: タスクが失敗 (FAILED) するのはなぜですか?
A: タスク失敗の一般的な理由は次のとおりです:
コンテンツモデレーションの失敗: 入力または出力がセキュリティポリシーをトリガーしました。
パラメーターエラー: 無効なリクエストパラメーター (例: 不正な
function名やアクセスできない URL)。内部モデルエラー: 予期しない処理の問題。トラブルシューティングの詳細については、クエリレスポンスの
codeおよびerrorフィールドを確認してください。




















編み物






























