Qwen の画像編集モデルは、複数の入力画像と出力画像をサポートします。画像内のテキストを正確に修正したり、オブジェクトを追加・削除したり、被写体のポーズを調整したり、画像スタイルを転送したり、画像のディテールを強化したりできます。
モデル概要
入力画像 1 | 入力画像 2 | 入力画像 3 | 出力画像(複数画像) | |
|
|
|
|
|
入力プロンプト: 画像 1 の女性が、画像 2 の黒いドレスを着用し、画像 3 のポーズで座っています。
モデル | 説明 | 出力画像仕様 |
qwen-image-2.0-pro 現在、qwen-image-2.0-pro-2026-03-03 と同じ機能を提供しています。 | 画像生成および画像編集向けの Qwen Pro シリーズです。テキストのレンダリング、リアルなテクスチャ、セマンティクスへの忠実度において、強化された機能を提供します。 画像生成については、「Qwen-Image」をご参照ください。 | 画像解像度:
画像フォーマット: PNG 画像枚数: 1 ~ 6 枚 |
qwen-image-2.0-pro-2026-03-03 | ||
qwen-image-2.0 現在、qwen-image-2.0-2026-03-03 と同じ機能を提供しています。 | Qwen 画像生成および画像編集モデルの高速化バージョンで、パフォーマンスと応答速度のバランスを最適化しています。 画像生成については、「Qwen-Image」をご参照ください。 | |
qwen-image-2.0-2026-03-03 | ||
qwen-image-edit-max 現在、qwen-image-edit-max-2026-01-16 と同じ機能を提供しています。 | Qwen 画像編集 Max シリーズです。産業デザイン、幾何学的推論、キャラクターの一貫性において、強化された機能を提供します。 | 画像解像度:
画像フォーマット: PNG 画像枚数: 1 ~ 6 枚 |
qwen-image-edit-max-2026-01-16 | ||
qwen-image-edit-plus 現在、qwen-image-edit-plus-2025-10-30 と同じ機能を提供しています。 | Qwen 画像編集 Plus シリーズは、複数画像出力およびカスタム解像度をサポートします。 | |
qwen-image-edit-plus-2025-12-15 | ||
qwen-image-edit-plus-2025-10-30 | ||
qwen-image-edit | 単一画像編集および複数画像融合をサポートします。 | 画像解像度: カスタマイズ不可。出力解像度は上記のデフォルト動作に従います。 画像フォーマット: PNG 画像枚数: 1 枚 |
API を呼び出す前に、「モデル一覧」を、各リージョンごとにご確認ください。
前提条件
API を呼び出す前に、「API キーの取得」および「API キーを環境変数としてエクスポート」を行ってください。
SDK を使用して API を呼び出す場合は、「DashScope SDK のインストール」を行ってください。SDK は Python および Java 向けに提供されています。
中国 (北京) リージョンおよびシンガポールリージョンでは、それぞれ専用の API キー および リクエストエンドポイント を使用します。これらを混在して使用しないでください。リージョン間でのクロス呼び出しを行うと、認証失敗またはサービスエラーが発生します。
HTTP
シンガポール: POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
中国 (北京): POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
リクエストパラメーター | 単一画像編集この例では、 複数画像融合この例では、 |
ヘッダー | |
Content-Type リクエストのコンテンツタイプです。値は必ず | |
Authorization Model Studio API キーを使用した認証資格情報です。 例: | |
リクエスト本文 | |
model モデル名です。例: qwen-image-2.0-pro。 | |
input 入力オブジェクトで、以下のフィールドを含みます。 | |
parameters 画像生成を制御するための追加パラメーターです。 |
レスポンスパラメーター | 成功時のレスポンスタスクデータ(タスクステータスおよび画像 URL)は 24 時間のみ保持され、その後自動的にパージされます。生成された画像は速やかに保存してください。 エラー時のレスポンスタスクが失敗した場合、レスポンスには関連する情報が返されます。コードおよびメッセージフィールドから、失敗の原因を特定できます。エラーの解決方法については、「エラーコード」をご参照ください。 |
output モデルによって生成された結果です。 | |
usage このリクエストのリソース使用量です。このパラメーターは、リクエストが成功した場合にのみ返されます。 | |
request_id リクエストの固有識別子です。トレースおよびトラブルシューティングに使用します。 | |
code エラーコードです。リクエストが失敗した場合にのみ返されます。「エラーコード」について詳しくは、こちらをご参照ください。 | |
message 詳細なエラーメッセージです。リクエストが失敗した場合にのみ返されます。「エラーコード」について詳しくは、こちらをご参照ください。 |
DashScope SDK
SDK のパラメーター名は、HTTP API とほぼ一致します。パラメーターの完全な一覧については、「Qwen API リファレンス」をご参照ください。
Python SDK
最新バージョンの DashScope Python SDK をインストールしてください。それ以外の場合、実行時エラーが発生する可能性があります。「SDK のインストールまたはアップグレード」をご参照ください。
非同期 API はサポートされていません。
リクエスト例
パブリック URL を使用して画像を渡す
import json
import os
import dashscope
from dashscope import MultiModalConversation
# 以下はシンガポールリージョン向けの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# このモデルは、1 ~ 3 枚の入力画像をサポートします。
messages = [
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/thtclx/input1.png"},
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/iclsnx/input2.png"},
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/gborgw/input3.png"},
{"text": "画像 1 の女性が、画像 2 の黒いドレスを着用し、画像 3 のポーズで座るようにしてください。"}
]
}
]
# シンガポールおよび中国 (北京) リージョンでは、それぞれ専用の API キーを使用します。API キーの取得方法については、こちらをご参照ください: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# 環境変数が設定されていない場合は、api_key="sk-xxx" として API キーを直接指定してください。
api_key = os.getenv("DASHSCOPE_API_KEY")
# qwen-image-2.0、qwen-image-edit-max、および qwen-image-edit-plus シリーズでは、1 ~ 6 枚の画像を出力できます。この例では、2 枚の画像を出力する方法を示します。
response = MultiModalConversation.call(
api_key=api_key,
model="qwen-image-2.0-pro",
messages=messages,
stream=False,
n=2,
watermark=False,
negative_prompt=" ",
prompt_extend=True,
size="1024*1536",
)
if response.status_code == 200:
# 完全なレスポンスを表示するには、次の行のコメントを解除してください。
# print(json.dumps(response, ensure_ascii=False))
for i, content in enumerate(response.output.choices[0].message.content):
print(f"出力画像 {i+1} の URL: {content['image']}")
else:
print(f"HTTP ステータスコード: {response.status_code}")
print(f"エラーコード: {response.code}")
print(f"エラーメッセージ: {response.message}")
print("詳細については、ドキュメントをご参照ください: https://www.alibabacloud.com/help/en/model-studio/error-code")
Base64 エンコーディングを使用して画像を渡す
import json
import os
import dashscope
from dashscope import MultiModalConversation
import base64
import mimetypes
# 以下はシンガポールリージョン向けの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# --- 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("サポートされていない、または認識できない画像フォーマットです")
try:
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}"
except IOError as e:
raise IOError(f"ファイル読み取りエラー: {file_path}, エラー: {str(e)}")
# 画像の Base64 エンコーディングを取得します。
# エンコーディング関数を呼び出します。"/path/to/your/image.png" を、ローカルの画像ファイルのパスに置き換えてください。
image = encode_file("/path/to/your/image.png")
messages = [
{
"role": "user",
"content": [
{"image": image},
{"text": "深度マップに一致する画像を生成します。以下の説明に従ってください:赤く錆びた自転車が泥道に駐車されており、背景には鬱蒼とした原生林が広がっています。"}
]
}
]
# シンガポールおよび中国 (北京) リージョンでは、それぞれ専用の API キーを使用します。API キーの取得方法については、こちらをご参照ください: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# 環境変数が設定されていない場合は、api_key="sk-xxx" として API キーを直接指定してください。
api_key = os.getenv("DASHSCOPE_API_KEY")
# qwen-image-2.0、qwen-image-edit-max、および qwen-image-edit-plus シリーズでは、1 ~ 6 枚の画像を出力できます。この例では、2 枚の画像を出力する方法を示します。
response = MultiModalConversation.call(
api_key=api_key,
model="qwen-image-2.0-pro",
messages=messages,
stream=False,
n=2,
watermark=False,
negative_prompt=" ",
prompt_extend=True,
size="1536*1024",
)
if response.status_code == 200:
# 完全なレスポンスを表示するには、次の行のコメントを解除してください。
# print(json.dumps(response, ensure_ascii=False))
for i, content in enumerate(response.output.choices[0].message.content):
print(f"出力画像 {i+1} の URL: {content['image']}")
else:
print(f"HTTP ステータスコード: {response.status_code}")
print(f"エラーコード: {response.code}")
print(f"エラーメッセージ: {response.message}")
print("詳細については、ドキュメントをご参照ください: https://www.alibabacloud.com/help/en/model-studio/error-code")
URL から画像をダウンロードする
# 画像をダウンロードするために requests ライブラリをインストールします: pip install requests
import requests
def download_image(image_url, save_path='output.png'):
try:
response = requests.get(image_url, stream=True, timeout=300) # タイムアウトを設定
response.raise_for_status() # HTTP ステータスコードが 200 でない場合、例外を発生させます
with open(save_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"画像を正常にダウンロードしました: {save_path}")
except requests.exceptions.RequestException as e:
print(f"画像のダウンロードに失敗しました: {e}")
image_url = "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
download_image(image_url, save_path='output.png')
レスポンス例
画像リンクは 24 時間有効です。画像を速やかにダウンロードしてください。
input_tokensおよびoutput_tokensは互換性フィールドであり、現在は固定値 0 です。
{
"status_code": 200,
"request_id": "fa41f9f9-3cb6-434d-a95d-4ae6b9xxxxxx",
"code": "",
"message": "",
"output": {
"text": null,
"finish_reason": null,
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"image": "https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/xxx.png?Expires=xxx"
},
{
"image": "https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/xxx.png?Expires=xxx"
}
]
}
}
],
"audio": null
},
"usage": {
"input_tokens": 0,
"output_tokens": 0,
"characters": 0,
"height": 1536,
"image_count": 2,
"width": 1024
}
}Java SDK
最新バージョンの DashScope Java SDK をインストールしてください。それ以外の場合、実行時エラーが発生する可能性があります。「SDK のインストールまたはアップグレード」をご参照ください。
リクエスト例
パブリック URL を使用して画像を渡す
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
public class QwenImageEdit {
static {
// 以下はシンガポールリージョン向けの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// シンガポールおよび中国 (北京) リージョンでは、それぞれ専用の API キーを使用します。API キーの取得方法については、こちらをご参照ください: https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数が設定されていない場合は、次の行を API キーで置き換えてください: apiKey="sk-xxx"
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void call() throws ApiException, NoApiKeyException, UploadFileException, IOException {
MultiModalConversation conv = new MultiModalConversation();
// このモデルは、1 ~ 3 枚の入力画像をサポートします。
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/thtclx/input1.png"),
Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/iclsnx/input2.png"),
Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/gborgw/input3.png"),
Collections.singletonMap("text", "画像 1 の女性が、画像 2 の黒いドレスを着用し、画像 3 のポーズで座るようにしてください。")
)).build();
// qwen-image-2.0、qwen-image-edit-max、および qwen-image-edit-plus シリーズでは、1 ~ 6 枚の画像を出力できます。この例では、2 枚の画像を出力する方法を示します。
Map<String, Object> parameters = new HashMap<>();
parameters.put("watermark", false);
parameters.put("negative_prompt", " ");
parameters.put("n", 2);
parameters.put("prompt_extend", true);
parameters.put("size", "1024*1536");
MultiModalConversationParam param = MultiModalConversationParam.builder()
.apiKey(apiKey)
.model("qwen-image-2.0-pro")
.messages(Collections.singletonList(userMessage))
.parameters(parameters)
.build();
MultiModalConversationResult result = conv.call(param);
// 完全なレスポンスを表示するには、次の行のコメントを解除してください。
// System.out.println(JsonUtils.toJson(result));
List<Map<String, Object>> contentList = result.getOutput().getChoices().get(0).getMessage().getContent();
int imageIndex = 1;
for (Map<String, Object> content : contentList) {
if (content.containsKey("image")) {
System.out.println("出力画像 " + imageIndex + " の URL: " + content.get("image"));
imageIndex++;
}
}
}
public static void main(String[] args) {
try {
call();
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
}
}Base64 エンコーディングを使用して画像を渡す
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
public class QwenImageEdit {
static {
// 以下はシンガポールリージョン向けの URL です。中国 (北京) リージョンのモデルを使用する場合は、URL を https://dashscope.aliyuncs.com/api/v1 に置き換えてください。
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// シンガポールおよび中国 (北京) リージョンでは、それぞれ専用の API キーを使用します。API キーの取得方法については、こちらをご参照ください: https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数が設定されていない場合は、次の行を API キーで置き換えてください: apiKey="sk-xxx"
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void call() throws ApiException, NoApiKeyException, UploadFileException, IOException {
// "/path/to/your/image.png" を、ローカルの画像ファイルのパスに置き換えてください。
String image = encodeFile("/path/to/your/image.png");
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", image),
Collections.singletonMap("text", "深度マップに一致する画像を生成します。以下の説明に従ってください:赤く錆びた自転車が泥道に駐車されており、背景には鬱蒼とした原生林が広がっています。")
)).build();
// qwen-image-2.0、qwen-image-edit-max、および qwen-image-edit-plus シリーズでは、1 ~ 6 枚の画像を出力できます。この例では、2 枚の画像を出力する方法を示します。
Map<String, Object> parameters = new HashMap<>();
parameters.put("watermark", false);
parameters.put("negative_prompt", " ");
parameters.put("n", 2);
parameters.put("prompt_extend", true);
parameters.put("size", "1536*1024");
MultiModalConversationParam param = MultiModalConversationParam.builder()
.apiKey(apiKey)
.model("qwen-image-2.0-pro")
.messages(Collections.singletonList(userMessage))
.parameters(parameters)
.build();
MultiModalConversationResult result = conv.call(param);
// 完全なレスポンスを表示するには、次の行のコメントを解除してください。
// System.out.println(JsonUtils.toJson(result));
List<Map<String, Object>> contentList = result.getOutput().getChoices().get(0).getMessage().getContent();
int imageIndex = 1;
for (Map<String, Object> content : contentList) {
if (content.containsKey("image")) {
System.out.println("出力画像 " + imageIndex + " の URL: " + content.get("image"));
imageIndex++;
}
}
}
/**
* ファイルを Base64 文字列にエンコードします。
* @param filePath ファイルパス。
* @return MIME タイプおよび Base64 データを含む文字列: data:{mime_type};base64,{base64_data}
*/
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) {
try {
call();
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
}
}URL から画像をダウンロードする
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class ImageDownloader {
public static void downloadImage(String imageUrl, String savePath) {
try {
URL url = new URL(imageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
connection.setReadTimeout(300000);
connection.setRequestMethod("GET");
InputStream inputStream = connection.getInputStream();
FileOutputStream outputStream = new FileOutputStream(savePath);
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
inputStream.close();
outputStream.close();
System.out.println("画像を正常にダウンロードしました: " + savePath);
} catch (Exception e) {
System.err.println("画像のダウンロードに失敗しました: " + e.getMessage());
}
}
public static void main(String[] args) {
String imageUrl = "http://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx?Expires=xxx";
String savePath = "output.png";
downloadImage(imageUrl, savePath);
}
}レスポンス例
画像リンクは 24 時間有効です。画像を速やかにダウンロードしてください。
{
"requestId": "46281da9-9e02-941c-ac78-be88b8xxxxxx",
"usage": {
"image_count": 2,
"width": 1024,
"height": 1536
},
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
},
{
"image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
}
]
}
}
]
}
}エラーコード
モデル呼び出しが失敗し、エラーメッセージが返された場合の解決方法については、「エラーメッセージ」をご参照ください。
課金およびレート制限
モデルの価格および無料クォータについては、「モデル一覧および価格」をご参照ください。
レート制限については、「レート制限」をご参照ください。
課金の説明: 成功して生成された 画像の枚数に基づいて課金されます。失敗したモデル呼び出しや処理エラーは課金されず、無料クォータも消費されません。
よくある質問
Q: Qwen 画像編集モデルは、どの言語をサポートしていますか?
A: 公式には簡体字中国語および 英語 をサポートしています。その他の言語でも動作する場合がありますが、結果は保証されません。
Q: モデル呼び出しのメトリックを確認するにはどうすればよいですか?
A: モデル呼び出しが完了してから 1 時間後、モデルモニタリング(シンガポール) または モデルモニタリング(中国 (北京)) ページにアクセスして、呼び出し回数や成功率などのメトリックを確認できます。詳細については、「請求照会およびコスト管理」をご参照ください。
Q: 画像ストレージのドメイン名ホワイトリストを取得するにはどうすればよいですか?
A: モデルによって生成された画像は OSS に保存されます。API は一時的なパブリック URL を返します。このダウンロード URL のファイアウォールホワイトリストを設定するには、以下の点にご注意ください。基盤となるストレージは動的に変更される場合があります。本トピックでは、古くなった情報によるアクセス障害を防ぐため、固定の OSS ドメイン名ホワイトリストを提供していません。セキュリティ制御が必要な場合は、アカウントマネージャーに連絡して、最新の OSS ドメイン名リストを取得してください。




