Qwen-Image Edit mendukung input dan output multi-gambar. Anda dapat mengedit teks dalam gambar, menambahkan, menghapus, atau memindahkan objek, mengubah pose subjek, mentransfer gaya, serta meningkatkan detail—semuanya melalui prompt bahasa alami.
Ikhtisar model
Gambar input 1 | Gambar input 2 | Gambar input 3 | Gambar output (multiple) | |
|---|---|---|---|---|
|
|
|
|
|
Prompt: Gadis dari Gambar 1 mengenakan gaun hitam dari Gambar 2 dan duduk dalam pose dari Gambar 3.
| Nama model | Deskripsi model | Spesifikasi gambar output |
|---|---|---|
qwen-image-2.0-pro
| Seri Pro dari model generasi dan pengeditan gambar Qwen menawarkan peningkatan kemampuan dalam rendering teks, tekstur realistis, dan kepatuhan semantik.
| Resolusi gambar:
Format gambar: png Jumlah gambar: 1–6 |
qwen-image-2.0-pro-2026-06-22 | ||
qwen-image-2.0-pro-2026-04-22 | ||
qwen-image-2.0-pro-2026-03-03 | ||
qwen-image-2.0
| Ini adalah versi akselerasi dari model generasi dan pengeditan gambar Qwen, yang menyeimbangkan kinerja dan kecepatan respons.
| |
qwen-image-2.0-2026-03-03 | ||
qwen-image-edit-max
| Seri Max dari model pengeditan gambar Qwen menyediakan kemampuan lebih kuat dalam desain industri, penalaran geometris, dan konsistensi karakter. | Resolusi gambar:
Format gambar: png Jumlah gambar: 1–6 |
qwen-image-edit-max-2026-01-16 | ||
qwen-image-edit-plus
| Seri Plus dari model pengeditan gambar Qwen mendukung output multi-gambar dan resolusi kustom. | |
qwen-image-edit-plus-2025-12-15 | ||
qwen-image-edit-plus-2025-10-30 | ||
qwen-image-edit | Model ini mendukung pengeditan gambar tunggal dan fusi multi-gambar. | Resolusi gambar: Tidak dapat dikustomisasi. Aturan generasi sama dengan aturan Bawaan yang dijelaskan di atas. Format gambar: png Jumlah gambar: Tetap 1 |
CatatanSebelum memanggil API, periksa Daftar Model untuk melihat model mana saja yang didukung di setiap Wilayah.
Prasyarat
Sebelum melakukan pemanggilan, dapatkan Kunci API dan ekspor Kunci API sebagai Variabel lingkungan.
Untuk memanggil API menggunakan SDK, instal SDK DashScope. SDK tersedia untuk Python dan Java.
PentingWilayah China (Beijing) dan Singapura memiliki Kunci API dan Titik akhir permintaan yang terpisah. Keduanya tidak dapat saling dipertukarkan. Pemanggilan lintas-Wilayah menyebabkan kegagalan otentikasi atau error layanan.
Pemanggilan HTTP
Wilayah Singapura:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
Wilayah Beijing:POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.
Parameter permintaan | Pengeditan gambar tunggalContoh ini menggunakan model Fusi multi-gambarContoh ini menggunakan model |
Header permintaan | |
Content-Type Tipe konten permintaan. Harus | |
Authorization Mengotentikasi permintaan dengan Kunci API Model Studio. Contoh: Bearer sk-xxxx. | |
Body permintaan | |
model Nama model. Contoh: qwen-image-2.0-pro. | |
input Objek input, berisi bidang berikut: | |
parameters Parameter tambahan untuk mengontrol pembuatan gambar. |
Parameter respons | Tugas berhasilData tugas (status tugas dan URL gambar) hanya disimpan selama 24 jam, lalu secara otomatis di-purge. Segera simpan gambar yang dihasilkan. Tugas gagalJika tugas gagal karena alasan apa pun, informasi terkait akan dikembalikan. Anda dapat mengidentifikasi penyebab error menggunakan bidang code dan message. Untuk informasi lebih lanjut, lihat Error codes. |
output Hasil generasi model. | |
usage Penggunaan sumber daya untuk pemanggilan ini. Hanya dikembalikan jika berhasil. | |
request_id Identifikasi unik permintaan untuk pelacakan dan troubleshooting. | |
code Kode error. Hanya dikembalikan untuk permintaan yang gagal. Lihat Error codes. | |
message Pesan error detail. Hanya dikembalikan untuk permintaan yang gagal. Lihat Error codes. |
Panggilan SDK DashScope
Nama parameter SDK sebagian besar konsisten dengan HTTP API. Struktur parameter dikemas berdasarkan fitur bahasa. Untuk daftar lengkap parameter, lihat Referensi API Qwen.
Panggilan SDK Python
Catatan
- Kami menyarankan menginstal versi terbaru SDK Python DashScope untuk menghindari potensi error waktu proses. Untuk informasi selengkapnya, lihat Instal atau upgrade SDK.
- Antarmuka asinkron tidak didukung.
Contoh permintaan
import json
import os
import dashscope
from dashscope import MultiModalConversation
# Berikut ini adalah URL untuk wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL berbeda-beda tergantung wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Model mendukung satu hingga tiga gambar input.
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": "Gadis dari Gambar 1 mengenakan gaun hitam dari Gambar 2 dan duduk dalam pose dari Gambar 3."}
]
}
]
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# Seri qwen-image-2.0, qwen-image-edit-max, dan qwen-image-edit-plus mendukung satu hingga enam gambar output. Contoh ini menghasilkan dua gambar.
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:
# Untuk melihat respons lengkap, hapus komentar pada baris berikut.
# print(json.dumps(response, ensure_ascii=False))
for i, content in enumerate(response.output.choices[0].message.content):
print(f"URL gambar output {i+1}: {content['image']}")
else:
print(f"Kode status HTTP: {response.status_code}")
print(f"Kode error: {response.code}")
print(f"Pesan error: {response.message}")
print("Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/error-code")
import json
import os
import dashscope
from dashscope import MultiModalConversation
import base64
import mimetypes
# Berikut ini adalah URL untuk wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL berbeda-beda tergantung wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# --- Untuk encoding Base64 ---
# Format: 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("Format gambar tidak didukung atau tidak dikenali")
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"Error membaca file: {file_path}, Error: {str(e)}")
# Dapatkan encoding Base64 gambar.
# Panggil fungsi encoding. Ganti "/path/to/your/image.png" dengan path ke file gambar lokal Anda. Jika tidak, kode tidak akan berjalan.
image = encode_file("/path/to/your/image.png")
messages = [
{
"role": "user",
"content": [
{"image": image},
{"text": "Hasilkan gambar yang sesuai dengan depth map, mengikuti deskripsi berikut: Sebuah sepeda merah yang rusak diparkir di jalan berlumpur, dengan hutan purba yang lebat di latar belakang."}
]
}
]
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# Seri qwen-image-2.0, qwen-image-edit-max, dan qwen-image-edit-plus mendukung satu hingga enam gambar output. Contoh ini menghasilkan dua gambar.
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:
# Untuk melihat respons lengkap, hapus komentar pada baris berikut.
# print(json.dumps(response, ensure_ascii=False))
for i, content in enumerate(response.output.choices[0].message.content):
print(f"URL gambar output {i+1}: {content['image']}")
else:
print(f"Kode status HTTP: {response.status_code}")
print(f"Kode error: {response.code}")
print(f"Pesan error: {response.message}")
print("Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/error-code")
# Anda perlu menginstal requests untuk mengunduh gambar: pip install requests
import requests
def download_image(image_url, save_path='output.png'):
try:
response = requests.get(image_url, stream=True, timeout=300) # Tetapkan timeout.
response.raise_for_status() # Bangkitkan exception jika kode status HTTP bukan 200.
with open(save_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"Gambar berhasil diunduh ke: {save_path}")
except requests.exceptions.RequestException as e:
print(f"Gagal mengunduh gambar: {e}")
image_url = "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
download_image(image_url, save_path='output.png')
Contoh respons
URL gambar berlaku selama 24 jam. Unduh gambar segera.
input_tokens,output_tokens, dancharactersbidang bersifat kompatibel. Nilainya saat ini tetap 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
}
}
Panggil menggunakan Java SDK
CatatanInstal DashScope Java SDK versi terbaru untuk menghindari error waktu proses. Lihat Instal atau upgrade SDK.
Contoh permintaan
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 {
// Berikut ini adalah URL untuk Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL berbeda-beda tergantung wilayahnya.
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan kunci API DashScope Anda: apiKey="sk-xxx".
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void call() throws ApiException, NoApiKeyException, UploadFileException, IOException {
MultiModalConversation conv = new MultiModalConversation();
// Model mendukung satu hingga tiga gambar input.
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", "Gadis dari Gambar 1 mengenakan gaun hitam dari Gambar 2 dan duduk dalam pose dari Gambar 3.")
)).build();
// Model seri qwen-image-2.0, qwen-image-edit-max, dan qwen-image-edit-plus mendukung satu hingga enam gambar output. Contoh ini menghasilkan dua gambar.
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);
// Untuk melihat respons lengkap, hapus komentar pada baris berikut.
// 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("URL gambar output " + imageIndex + ": " + content.get("image"));
imageIndex++;
}
}
}
public static void main(String[] args) {
try {
call();
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
}
}
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 {
// Berikut ini adalah URL untuk Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL berbeda-beda tergantung wilayahnya.
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
// Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan kunci API DashScope Anda: apiKey="sk-xxx".
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void call() throws ApiException, NoApiKeyException, UploadFileException, IOException {
// Ganti "/path/to/your/image.png" dengan path ke file gambar lokal Anda. Jika tidak, kode tidak dapat dijalankan.
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", "Hasilkan gambar yang sesuai dengan depth map, mengikuti deskripsi berikut: Sebuah sepeda merah yang rusak diparkir di jalan berlumpur, dengan hutan purba yang lebat di latar belakang.")
)).build();
// Model seri qwen-image-2.0, qwen-image-edit-max, dan qwen-image-edit-plus mendukung satu hingga enam gambar output. Contoh ini menghasilkan dua gambar.
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);
// Untuk melihat respons lengkap, hapus komentar pada baris berikut.
// 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("URL gambar output " + imageIndex + ": " + content.get("image"));
imageIndex++;
}
}
}
/**
* Mengencode file menjadi string Base64.
* @param filePath Path ke file.
* @return String Base64 dalam format: data:{mime_type};base64,{base64_data}.
*/
public static String encodeFile(String filePath) {
Path path = Paths.get(filePath);
if (!Files.exists(path)) {
throw new IllegalArgumentException("File tidak ada: " + filePath);
}
// Deteksi jenis MIME.
String mimeType = null;
try {
mimeType = Files.probeContentType(path);
} catch (IOException e) {
throw new IllegalArgumentException("Tidak dapat mendeteksi jenis file: " + filePath);
}
if (mimeType == null || !mimeType.startsWith("image/")) {
throw new IllegalArgumentException("Format gambar tidak didukung atau tidak dikenali.");
}
// Baca konten file dan encode-kan.
byte[] fileBytes = null;
try{
fileBytes = Files.readAllBytes(path);
} catch (IOException e) {
throw new IllegalArgumentException("Tidak dapat membaca konten file: " + 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());
}
}
}
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("Gambar berhasil diunduh ke: " + savePath);
} catch (Exception e) {
System.err.println("Pengunduhan gambar gagal: " + 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);
}
}
Contoh respons
URL gambar berlaku selama 24 jam. Unduh gambar segera.
{
"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"
}
]
}
}
]
}
}
Kode error
Jika pemanggilan model gagal dan mengembalikan pesan error, lihat Kode error untuk resolusi.
Penagihan dan pembatasan laju
- Untuk kuota gratis model dan laju penagihan, lihat Model List.
- Lihat Qwen-Image untuk detail pembatasan laju model.
- Penagihan: Anda dikenai biaya per image yang berhasil dihasilkan. Panggilan yang gagal tidak dikenai biaya dan tidak mengurangi kuota gratis pengguna baru Anda.
FAQ
T: Bahasa apa saja yang didukung oleh model Qwen Image Editing?
J: Model ini saat ini mendukung Bahasa Tionghoa Sederhana dan Bahasa Inggris. Anda dapat mencoba bahasa lain, tetapi kinerjanya tidak dijamin.
T: Bagaimana cara melihat metrik pemanggilan model?
J: Satu jam setelah pemanggilan model selesai, buka halaman Monitoring (Singapura) atau Monitoring (Tiongkok (Beijing)) untuk melihat metrik seperti jumlah pemanggilan dan laju keberhasilan. Untuk informasi lebih lanjut, lihat Billing dan manajemen biaya.
T: Bagaimana cara mendapatkan daftar putih nama domain untuk penyimpanan gambar?
J: Gambar yang dihasilkan oleh model disimpan di OSS. API mengembalikan URL publik temporary. Untuk mengonfigurasi daftar putih firewall untuk URL unduhan ini, perhatikan hal berikut: Penyimpanan dasar dapat berubah secara dinamis. Topik ini tidak menyediakan daftar putih nama domain OSS yang tetap guna mencegah masalah akses akibat informasi yang kedaluwarsa. Jika Anda memiliki persyaratan pengendalian keamanan, hubungi account manager Anda untuk mendapatkan daftar nama domain OSS terbaru.




