Qwen の画像編集モデルは、複数の入力画像と出力画像をサポートします。画像内のテキストを正確に修正したり、オブジェクトを追加・削除したり、被写体のポーズを調整したり、画像スタイルを転送したり、画像のディテールを強化したりできます。
モデル概要
入力画像 1 | 入力画像 2 | 入力画像 3 | 出力画像(複数画像) | |
|
|
|
|
|
入力プロンプト: Image 1 の人物に Image 2 の黒いドレスを着せ、Image 3 のポーズで座らせる。
モデル | 説明 | 出力画像仕様 |
qwen-image-edit-max 現在、qwen-image-edit-max-2026-01-16 と同じ機能を提供しています。 | 単一画像編集および複数画像融合をサポートします。
| フォーマット: PNG
|
qwen-image-edit-max-2026-01-16 | ||
qwen-image-edit-plus 現在、qwen-image-edit-plus-2025-10-30 と同じ機能を提供しています。 | ||
qwen-image-edit-plus-2025-12-15 | ||
qwen-image-edit-plus-2025-10-30 | ||
qwen-image-edit | 単一画像編集および複数画像融合をサポートします。
| 形式: PNG。 解像度: カスタマイズ不可。出力解像度は、上記で説明したデフォルト 動作に従います。 |
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 モデル名。例: | |
input 入力オブジェクト。以下のフィールドを含みます。 | |
parameters 画像生成を制御するための追加パラメーター。 |
レスポンスパラメーター | 成功時のレスポンスタスクデータ(タスクステータスおよび画像 URL)は 24 時間のみ保持され、その後自動的に消去されます。生成された画像は速やかに保存してください。 エラー時のレスポンスタスクが失敗した場合、レスポンスには関連する情報が返されます。コードおよびメッセージフィールドから、失敗の原因を特定できます。エラーの解決方法については、「エラーコード」をご参照ください。 |
output モデルによって生成された結果。 | |
usage このリクエストのリソース使用量。このパラメーターは、リクエストが成功した場合にのみ返されます。 | |
request_id リクエストの固有識別子。トレースおよびトラブルシューティングに使用します。 | |
code エラーコード。リクエストが失敗した場合にのみ返されます。「エラーコード」をご参照ください。 | |
message 詳細なエラーメッセージ。リクエストが失敗した場合にのみ返されます。「エラーコード」をご参照ください。 |
DashScope SDK
SDK のパラメーター名は、HTTP API とほぼ一致します。パラメーターの完全な一覧については、「Qwen API リファレンス」をご参照ください。
Python SDK
最新バージョンの DashScope Python SDK をインストールしてください。それ以外の場合、実行時エラーが発生する可能性があります。「SDK のインストールまたはアップグレード」をご参照ください。
非同期 API はサポートしていません。
リクエストの例
この例では、qwen-image-edit-max モデルを使用して 2 枚の画像を生成します。
パブリック 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": "Image 1 の人物に Image 2 の黒いドレスを着せ、Image 3 のポーズで座らせる。"}
]
}
]
# シンガポールおよび中国 (北京) リージョンでは、それぞれ専用の API キーを使用します。API キーの取得先: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# 環境変数が設定されていない場合は、api_key="sk-xxx" に置き換えてください。
api_key = os.getenv("DASHSCOPE_API_KEY")
# qwen-image-edit-max および qwen-image-edit-plus シリーズは、1~6 枚の画像を出力できます。この例では 2 枚の画像を出力する方法を示します。
response = MultiModalConversation.call(
api_key=api_key,
model="qwen-image-edit-max",
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_key = os.getenv("DASHSCOPE_API_KEY")
# qwen-image-edit-max および qwen-image-edit-plus シリーズは、1~6 枚の画像を出力できます。この例では 2 枚の画像を出力する方法を示します。
response = MultiModalConversation.call(
api_key=api_key,
model="qwen-image-edit-max",
messages=messages,
stream=False,
n=2,
watermark=False,
negative_prompt=" ",
prompt_extend=True,
size="1920*1080",
)
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 のインストールまたはアップグレード」をご参照ください。
リクエストの例
以下の例では、qwen-image-edit-max モデルを使用して 2 枚の画像を生成する方法を示します。
パブリック 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。
// 環境変数が設定されていない場合は、次の行を Model Studio 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", "Image 1 の人物に Image 2 の黒いドレスを着せ、Image 3 のポーズで座らせる。")
)).build();
// 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-edit-max")
.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。
// 環境変数が設定されていない場合は、次の行を Model Studio 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-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-edit-max")
.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"
}
]
}
}
]
}
}画像アクセス権限の設定
モデルによって生成された画像は、Object Storage Service (OSS) に保存されます。各画像には、https://dashscope-result-xx.oss-cn-xxxx.aliyuncs.com/xxx.png のようなパブリックにアクセス可能な OSS リンクが割り当てられます。このリンクを使用して画像を表示またはダウンロードできますが、有効期限は 24 時間です。
セキュリティポリシーにより、パブリック 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: Qwen の画像編集モデルはどの言語をサポートしていますか?
A: 公式には 簡体字中国語 および 英語 をサポートしています。その他の言語でも動作する場合がありますが、結果は保証されません。
Q: 異なるアスペクト比を持つ複数の参照画像をアップロードする場合、出力画像のアスペクト比はどのように決定されますか?
A: デフォルトでは、出力画像のアスペクト比は入力配列の最後の画像と一致します。この動作は、parameters.size パラメーターを指定することで上書きできます。
Q: モデルの使用状況を確認するにはどうすればよいですか?
A: 詳細については、「課金照会およびコスト管理」をご参照ください。




