Model pengeditan gambar Wan2.5 mendukung satu hingga tiga gambar input dan satu hingga empat gambar output. Anda dapat menggunakan instruksi teks untuk melakukan pengeditan gambar tunggal dengan subjek yang konsisten, deteksi objek dan segmentasi, serta fusi multi-gambar.
Mulai
Prasyarat
Sebelum melakukan pemanggilan, dapatkan Kunci API dan atur Kunci API tersebut sebagai Variabel lingkungan. Untuk melakukan pemanggilan menggunakan SDK, instal SDK DashScope.
Contoh kode
Proses pemanggilan API dengan satu atau beberapa gambar input hampir identik.
Contoh ini menunjukkan fusi multi-gambar. Masukkan dua gambar ke dalam array images. Model akan menghasilkan satu gambar hasil fusi berdasarkan prompt teks.
Prompt input: Tempatkan jam alarm dari gambar 1 di samping vas bunga di atas meja makan pada gambar 2.
Gambar input 1 | Gambar input 2 | Gambar output |
|
|
|
Pemanggilan sinkron
Pastikan SDK Python DashScope versi 1.25.2 atau lebih baru dan SDK Java DashScope versi 2.22.2 atau lebih baru.
Versi lama dapat memicu error seperti "url error, please check url!". Instal atau upgrade SDK.
Python
Contoh ini mendukung tiga metode input gambar: URL publik, encoding Base64, dan jalur file lokal.
Contoh permintaan
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
# Berikut adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
# --- Input gambar: Gunakan encoding Base64 ---
# Format encoding Base64 adalah 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")
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}"
"""
Metode input gambar:
Pilih salah satu dari tiga metode berikut.
1. Gunakan URL publik - Cocok untuk gambar yang dapat diakses publik.
2. Gunakan file lokal - Cocok untuk pengembangan dan pengujian lokal.
3. Gunakan encoding Base64 - Cocok untuk gambar pribadi atau skenario yang memerlukan transmisi terenkripsi.
"""
# [Metode 1] Gunakan URL gambar publik
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"
# [Metode 2] Gunakan file lokal (mendukung jalur absolut dan relatif)
# Persyaratan format: file:// + jalur file
# Contoh (jalur absolut):
# image_url_1 = "file://" + "/path/to/your/image_1.png" # Linux/macOS
# image_url_2 = "file://" + "C:/path/to/your/image_2.png" # Windows
# Contoh (jalur relatif):
# image_url_1 = "file://" + "./image_1.png" # Gunakan jalur aktual Anda
# image_url_2 = "file://" + "./image_2.png" # Gunakan jalur aktual Anda
# [Metode 3] Gunakan gambar yang di-encode Base64
# image_url_1 = encode_file("./image_1.png") # Gunakan jalur aktual Anda
# image_url_2 = encode_file("./image_2.png") # Gunakan jalur aktual Anda
print('----sync call, please wait a moment----')
rsp = ImageSynthesis.call(api_key=api_key,
model="wan2.5-i2i-preview",
prompt="Place the alarm clock from Image 1 next to the vase on the dining table in Image 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:
# Simpan gambar di direktori saat ini
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))Contoh respons
URL berlaku selama 24 jam. Unduh gambar segera.
{
"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": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
"actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the alarm clock facing the camera, parallel to the table, with its shadow naturally cast on the table."
}
],
"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
Contoh ini mendukung tiga metode input gambar: URL publik, encoding Base64, dan jalur file lokal.
Contoh permintaan
// 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 {
// Berikut adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey="sk-xxx"
// Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
/**
* Metode input gambar: Pilih salah satu dari tiga metode berikut.
*
* 1. Gunakan URL publik - Cocok untuk gambar yang dapat diakses publik.
* 2. Gunakan file lokal - Cocok untuk pengembangan dan pengujian lokal.
* 3. Gunakan encoding Base64 - Cocok untuk gambar pribadi atau skenario yang memerlukan transmisi terenkripsi.
*/
//[Metode 1] URL publik
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";
//[Metode 2] Jalur file lokal (file://+jalur absolut atau file:///+jalur absolut)
// 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
//[Metode 3] Encoding Base64
// static String imageUrl_1 = encodeFile("/your/path/to/image_1.png");
// static String imageUrl_2 = encodeFile("/your/path/to/image_2.png");
// Tetapkan daftar gambar yang akan diedit
static List<String> imageUrls = new ArrayList<>();
static {
imageUrls.add(imageUrl_1);
imageUrls.add(imageUrl_2);
}
public static void syncCall() {
// Tetapkan parameter
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("Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.")
.images(imageUrls)
.n(1)
//.size("1280*1280")
.negativePrompt("")
.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));
}
/**
* Meng-encode file menjadi string Base64.
* @param filePath Jalur 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
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) {
syncCall();
}
}Contoh respons
URL berlaku selama 24 jam. Unduh gambar segera.
{
"request_id": "d362685b-757f-4eac-bab5-xxxxxx",
"output": {
"task_id": "bfa7fc39-3d87-4fa7-b1e6-xxxxxx",
"task_status": "SUCCEEDED",
"results": [
{
"orig_prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
"actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the front of the alarm clock facing the camera, parallel to the vase.",
"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
}
}Pemanggilan asinkron
Pastikan SDK Python DashScope versi 1.25.2 atau lebih baru dan SDK Java DashScope versi 2.22.2 atau lebih baru.
Versi lama dapat memicu error seperti "url error, please check url!". Instal atau upgrade SDK.
Python
Contoh ini menggunakan URL publik untuk mengirimkan gambar.
Contoh permintaan
import os
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import dashscope
import requests
from dashscope import ImageSynthesis
# Berikut adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
# Gunakan URL gambar publik
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('----create task----')
task_info = create_async_task()
print('----wait task----')
wait_async_task(task_info)
# Buat tugas asinkron
def create_async_task():
rsp = ImageSynthesis.async_call(api_key=api_key,
model="wan2.5-i2i-preview",
prompt="Place the alarm clock from Image 1 next to the vase on the dining table in Image 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
# Tunggu hingga tugas asinkron selesai
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)
# simpan file ke direktori saat ini
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))
# Dapatkan informasi tugas asinkron
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))
# Batalkan tugas asinkron. Hanya tugas dalam status PENDING yang dapat dibatalkan.
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()
Contoh respons
1. Contoh respons untuk permintaan pembuatan tugas
{
"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. Contoh respons untuk permintaan kueri tugas
URL berlaku selama 24 jam. Unduh gambar segera.
{
"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": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
"actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the alarm clock facing the camera, parallel to the table, with its shadow naturally cast on the table."
}
],
"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
Contoh ini secara default menggunakan URL publik untuk mengirimkan gambar.
Contoh permintaan
// 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 {
// Berikut adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey="sk-xxx"
// Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
//URL publik
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";
// Tetapkan daftar gambar yang akan diedit
static List<String> imageUrls = new ArrayList<>();
static {
imageUrls.add(imageUrl_1);
imageUrls.add(imageUrl_2);
}
public static void asyncCall() {
// Tetapkan parameter
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("Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.")
.images(imageUrls)
.n(1)
//.size("1280*1280")
.negativePrompt("")
.parameters(parameters)
.build();
ImageSynthesis imageSynthesis = new ImageSynthesis();
ImageSynthesisResult result = null;
try {
System.out.println("---async call, please wait a moment----");
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();
// Jika Anda telah menyetel DASHSCOPE_API_KEY sebagai variabel lingkungan, Anda dapat mengosongkan apiKey.
ImageSynthesisResult result = is.fetch(taskId, apiKey);
System.out.println(result.getOutput());
System.out.println(result.getUsage());
}
public static void main(String[] args) {
asyncCall();
}
}Contoh respons
1. Contoh respons untuk permintaan pembuatan tugas
{
"request_id": "5dbf9dc5-4f4c-9605-85ea-542f97709ba8",
"output": {
"task_id": "7277e20e-aa01-4709-xxxxxxxx",
"task_status": "PENDING"
}
}2. Contoh respons untuk permintaan kueri tugas
URL berlaku selama 24 jam. Unduh gambar segera.
{
"request_id": "d362685b-757f-4eac-bab5-xxxxxx",
"output": {
"task_id": "bfa7fc39-3d87-4fa7-b1e6-xxxxxx",
"task_status": "SUCCEEDED",
"results": [
{
"orig_prompt": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 2.",
"actual_prompt": "Place the blue alarm clock from Image 1 to the right of the vase on the dining table in Image 2, near the edge of the tablecloth. Keep the front of the alarm clock facing the camera, parallel to the vase.",
"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
}
}curl
Contoh ini mencakup dua langkah: membuat tugas dan mengkueri hasilnya.
Untuk pemanggilan asinkron, Anda harus menyetel parameter header
X-DashScope-Asynckeenable.task_iduntuk tugas asinkron berlaku untuk kueri selama 24 jam. Setelah periode ini, status tugas berubah menjadiUNKNOWN.
Langkah 1: Kirim permintaan untuk membuat tugas
Permintaan ini mengembalikan ID tugas (task_id).
Contoh permintaan
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": "Place the alarm clock from Image 1 next to the vase on the dining table in Image 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
}
}'Contoh respons
{
"output": {
"task_status": "PENDING",
"task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
},
"request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}Langkah 2: Kueri hasil berdasarkan ID tugas
Gunakan task_id dari langkah sebelumnya untuk melakukan polling status tugas melalui API hingga task_status berubah menjadi SUCCEEDED atau FAILED.
Contoh permintaan
Ganti 86ecf553-d340-4e21-xxxxxxxxx dengan ID tugas yang sebenarnya.
Kunci API untuk wilayah Singapura dan Beijing berbeda. Buat Kunci API.
`base_url` berikut untuk wilayah Singapura. Untuk model di wilayah Beijing, ganti `base_url` dengan `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"Contoh respons
URL gambar berlaku selama 24 jam. Harap unduh gambar segera.
{
"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": "Place the alarm clock from image 1 next to the vase on the dining table in image 2.",
"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
}
}Ketersediaan model
Untuk daftar model dan harga, lihat Pengeditan gambar umum Wan2.5.
Parameter input
Gambar input (images)
images adalah array yang mendukung pengiriman satu hingga tiga gambar untuk diedit atau difusikan. Gambar input harus memenuhi persyaratan berikut:
Format gambar: JPEG, JPG, PNG (saluran alfa tidak didukung), BMP, dan WEBP didukung.
Resolusi gambar: Lebar dan tinggi gambar harus berada dalam rentang 384 hingga 5.000 piksel.
Ukuran file: Satu file gambar tidak boleh melebihi 10 MB.
// Contoh ini hanya menunjukkan struktur bidang images. Input berisi 2 gambar.
{
"images": [
"https://img.alicdn.com/imgextra/i4/O1CN01TlDlJe1LR9zso3xAC_!!6000000001295-2-tps-1104-1472.png",
"https://img.alicdn.com/imgextra/i4/O1CN01M9azZ41YdblclkU6Z_!!6000000003082-2-tps-1696-960.png"
]
}Urutan input gambar
Untuk input multi-gambar, urutan gambar ditentukan oleh posisinya dalam array. Oleh karena itu, nomor gambar yang dirujuk dalam prompt harus sesuai dengan urutan dalam array gambar. Misalnya, gambar pertama dalam array adalah "gambar 1", yang kedua adalah "gambar 2", atau Anda dapat menggunakan penanda seperti "[Gambar 1]" dan "[Gambar 2]".
Gambar input | Gambar output | ||
Gambar 1 |
Gambar 2 |
Prompt: Pindahkan gambar 1 ke atas gambar 2 |
Prompt: Pindahkan gambar 2 ke atas gambar 1 |
Metode input gambar
Model ini mendukung tiga metode berikut untuk mengirimkan gambar:
Parameter opsional
Model ini juga menyediakan beberapa parameter opsional untuk menyesuaikan efek generasi gambar. Parameter terpenting meliputi:
size: Menentukan resolusi gambar output dalam piksel, menggunakan formatlebar*tinggi. Nilai default adalah1280*1280. Resolusi harus berada dalam rentang 768×768 hingga 1280×1280 piksel. Rasio aspek harus antara 1:4 dan 4:1.Jika Anda tidak menentukan parameter
size, sistem akan menghasilkan gambar berukuran 1280×1280 piksel secara default dan berusaha mempertahankan rasio aspek gambar input:Untuk input gambar tunggal, rasio aspek sama dengan gambar input.
Untuk input multi-gambar, rasio aspek sama dengan gambar terakhir dalam array input.
n: Menetapkan jumlah gambar output. Nilainya dapat berupa bilangan bulat dari 1 hingga 4. Default-nya adalah4. Kami merekomendasikan menyetelnya ke 1 untuk pengujian.negative_prompt: Prompt negatif menggambarkan konten yang tidak ingin muncul dalam gambar, seperti "blurry" atau "extra fingers". Parameter ini hanya digunakan untuk membantu mengoptimalkan kualitas generasi.watermark: Menentukan apakah akan menambahkan Watermark. Watermark terletak di pojok kanan bawah gambar dengan tulisan "AI-generated". Default-nya adalahfalse, yang berarti tidak ada Watermark yang ditambahkan.seed: Seed bilangan acak. Nilainya harus berada dalam rentang[0, 2147483647]. Jika Anda tidak memberikan seed, algoritma akan secara otomatis menghasilkan bilangan acak untuk digunakan. Untuk menjaga agar konten yang dihasilkan relatif konsisten, gunakan nilai seed yang sama untuk setiap permintaan.Catatan: Karena generasi model bersifat probabilistik, penggunaan seed yang sama tidak menjamin hasilnya identik setiap kali.
Parameter output
Format gambar: PNG.
Jumlah gambar: Satu hingga empat.
Resolusi gambar: Anda dapat menentukan resolusi menggunakan parameter input
size. Jika parameter ini tidak ditentukan, lihat deskripsi parameter size.Semua gambar output akan memiliki resolusi yang sama.
Contoh
Model pengeditan gambar Wan2.5 saat ini tidak mendukung pembuatan set gambar.
Fusi multi-gambar
Gambar input | Gambar output |
|
Pindahkan lukisan malam berbintang dari gambar 2 ke casing ponsel pada gambar 1. |
|
Gunakan font dan gaya teks "Wan2.5" dari [Gambar 1] sebagai satu-satunya referensi. Pertahankan lebar goresan dan kurva tanpa perubahan. Pindahkan secara tepat tekstur kertas berlapis dari [Gambar 2] ke teks tersebut. |
|
Gunakan dua gambar referensi untuk menggambar ulang secara terarah: Gunakan [Gambar 2] sebagai referensi bentuk dan struktur tas. Gunakan bulu burung beo di [Gambar 1] sebagai referensi warna dan tekstur. Pindahkan secara tepat warna dan tekstur bulu burung beo ke material permukaan tas di [Gambar 2]. |
|
Gunakan komposisi dan tekstur kaca buram desain kartu nama di [Gambar 1] sebagai templat untuk menghasilkan kartu kerja vertikal bagi orang di [Gambar 2]. Kartunya memiliki sudut membulat dan semi-transparan, dengan highlight lembut dan bayangan ringan. Bust orang tersebut ditempatkan di area tengah atas. Nama, jabatan, perusahaan, dan nomor telepon disusun di pojok kiri bawah menggunakan font sans-serif minimalis dengan ruang putih seimbang. Di pojok kanan atas, tempatkan gambar kartun 3D lucu orang tersebut dari [Gambar 1], menembus batas hingga setengah mengambang keluar dari kartu dan melemparkan bayangan ringan, menciptakan lapisan dan fokus visual. Pencahayaan keseluruhan cerah dan alami, dengan detail material realistis. Jangan tambahkan pola atau elemen ekstra apa pun. |
Pemahaman gambar
Deteksi objek dan pelokalisasi
Mendeteksi objek tertentu dalam gambar dan menghasilkan gambar dengan Kotak pembatas dan Label.
Gambar input | Gambar output |
|
Detect the sunflowers and pumpkins in the image. Draw bounding boxes and add labels. |
Segmentasi instans
Model menghasilkan wilayah warna unik untuk setiap objek individual dalam gambar, menunjukkan garis besar lengkapnya. Misalnya, area ungu pada gambar output mewakili instans headphone yang telah disegmentasi.
Gambar input | Gambar output |
|
Segment the headphones in the image. |
Pelestarian fitur subjek
Input image | Output image |
|
Hasilkan foto yang sangat detail dari seorang gadis yang melakukan cosplay berdasarkan ilustrasi ini, di Comiket. Harus merupakan orang sungguhan yang sedang cosplay. Tiru secara persis pose, postur tubuh, gerakan tangan, ekspresi wajah, dan framing kamera seperti pada ilustrasi aslinya. Pertahankan sudut, perspektif, dan komposisi yang sama tanpa penyimpangan apa pun. |
|
Hasilkan tiga instans orang dari foto tersebut dalam sebuah adegan kantor. Satu sedang duduk di meja sambil bekerja. Yang lain berdiri sambil minum kopi. Yang ketiga bersandar di meja sambil membaca buku. Ketiganya adalah orang yang sama dari foto tersebut. |
|
Hasilkan rangkaian citra empat panel dari foto ini. Pada panel pertama, gadis tersebut menghadap kamera. Pada panel kedua, ia mengangkat tangan kanannya untuk menyisir rambutnya. Pada panel ketiga, ia melambaikan tangan dengan antusias kepada penonton. Pada panel keempat, ia tersenyum dengan mata tertutup. |
Modifikasi dan peningkatan skala
Feature | Input image | Output image |
Modify element |
|
Ubah gaun bermotif bunga menjadi gaun panjang berenda bergaya vintage dengan detail bordir indah pada kerah dan manset. |
Modify lighting |
|
Tambahkan highlight kecil yang berkilauan pada permukaan bintang laut agar tampak bercahaya terhadap latar belakang matahari terbenam. |
Upscale subject element |
|
Perbesar sapi dalam citra. |
Upscale image details |
|
Perbesar tampilan dan tunjukkan cabang tempat burung beo bertengger. |
Ekstraksi elemen
Input image | Output image |
|
Ekstrak semua item pakaian yang dikenakan oleh orang dalam citra tersebut. Susun secara rapi di latar belakang putih. |
Generasi gambar dari sketsa
Input image | Output image |
|
Hasilkan citra nyata baru berdasarkan sketsa ini, yaitu pemandangan desa Mediterania yang menawan dengan bangunan batu rustic yang memiliki atap terakota, daun jendela kayu, serta balkon yang dihiasi pakaian yang sedang dijemur. Latar depan dipenuhi tanaman hijau subur, termasuk tanaman merambat dan bunga-bunga yang sedang mekar, menciptakan suasana yang hidup dan bersemangat. Arsitekturnya menampilkan detail rumit seperti pintu lengkung dan susunan batu bermotif, yang membangkitkan kesan sejarah dan kehangatan], [hari yang cerah dan bersinar dengan langit biru jernih, menghasilkan bayangan lembut di jalanan berbatu dan memperkuat nuansa hangat pada bangunan-bangunan tersebut. Di latar belakang, perbukitan bergelombang dan pegunungan yang jauh memberikan latar yang indah, menambah kedalaman dan ketenangan pada pemandangan ini. |
Generasi teks
Gambar input | Gambar output |
|
Add the title "微距摄影" in large, rounded, white font to the upper-left corner of the image. Below the title, add the subtitle "勤劳就有收获" in a smaller, light green font. |
Penghapusan Tanda Air
Gambar input | Gambar output |
|
Remove all text from the upper-left corner. |
Outpainting
Gambar input | Gambar output |
|
Outpaint the image to generate a long shot photo. |
Penagihan dan Pembatasan laju
Untuk kuota gratis dan harga satuan, lihat Model dan harga.
Untuk batas laju, lihat Wan.
Deskripsi penagihan:
Penagihan didasarkan pada jumlah gambar yang berhasil dihasilkan. Anda hanya dikenai biaya ketika API mengembalikan
task_statusbernilaiSUCCEEDEDdan gambar berhasil dihasilkan.Pemanggilan model yang gagal atau error pemrosesan tidak dikenai biaya dan tidak mengurangi kuota gratis Anda.
Referensi API
Untuk parameter input dan output, lihat Referensi API Pengeditan Gambar Umum Wan 2.5.
FAQ
T: Saya menggunakan Pengeditan Gambar Umum Wan2.1. Jika saya beralih ke wan2.5, apakah saya perlu mengubah cara memanggil SDK?
J: Ya. Desain parameter berbeda untuk kedua versi tersebut:
Pengeditan Gambar Umum 2.1: Memerlukan parameter
promptdanfunction.Pengeditan Gambar Umum 2.5: Hanya memerlukan parameter
prompt. Jelaskan semua operasi pengeditan melalui instruksi teks. Parameterfunctiontidak lagi didukung atau diperlukan.









































