Topik ini menjelaskan parameter input dan output untuk model pengeditan gambar umum Wan.
Dokumen ini hanya berlaku untuk wilayah Tiongkok (Beijing). Untuk menggunakan model ini, gunakan API key dari wilayah Tiongkok (Beijing).
Model ini menggunakan instruksi sederhana untuk menjalankan berbagai tugas pengeditan gambar, seperti ekspansi gambar, penghapusan watermark, style transfer, inpainting gambar, dan peningkatan gambar. Fitur-fitur berikut saat ini didukung:
-
Stilisasi gambar: Stilisasi global dan lokal.
-
Pengeditan konten gambar: Pengeditan berbasis instruksi (menambah atau memodifikasi konten gambar menggunakan instruksi tanpa menentukan area), inpainting (menambah, menghapus, atau memodifikasi konten di area tertentu), serta penghapusan watermark teks (bahasa Tiongkok dan Inggris).
-
Pengoptimalan ukuran dan resolusi gambar: Ekspansi gambar (memperluas berdasarkan rasio) dan super resolusi (meningkatkan ke definisi tinggi).
-
Pemrosesan warna gambar: Pewarnaan (mengonversi gambar hitam-putih atau grayscale menjadi berwarna).
-
Generasi berdasarkan gambar referensi: Generasi sketsa-ke-gambar (mengekstraksi sketsa dari gambar input lalu menghasilkan gambar berdasarkan sketsa tersebut) dan generasi karakter kartun berdasarkan referensi.
Panduan terkait: Pengeditan gambar - Wan2.1
Ikhtisar model
|
Model |
Harga |
Batas laju (dibagi oleh akun root dan Pengguna RAM) |
|
|
RPS pengiriman tugas |
Tugas konkuren |
||
|
wanx2.1-imageedit |
$0,020070/gambar |
2 |
2 |
Efek model
|
Fitur |
Gambar input |
Prompt input |
Gambar output |
|
Stilisasi global |
|
Convert to French picture book style |
|
|
Stilisasi lokal |
|
Change the house to a wooden style. |
|
|
Pengeditan berbasis instruksi |
|
Change her hair to red. |
|
|
Inpainting |
Input image
Input mask image (white is the masked area)
|
A ceramic rabbit holding a ceramic flower. |
Output image
|
|
Penghapusan watermark teks |
|
Remove the text from the image. |
|
|
Ekspansi gambar |
|
A green fairy. |
|
|
Super Resolution |
Blurry image
|
Super resolution. |
Clear image
|
|
Pewarnaan |
|
Blue background, yellow leaves. |
|
|
Generasi sketsa-ke-gambar |
Input image
|
A living room in a minimalist Nordic style. |
Extract the sketch from the original image and generate a new image
|
|
Generasi karakter kartun berdasarkan referensi |
Input reference image (cartoon character)
|
The cartoon character cautiously peeks out, looking at a sparkling blue gem in the room. |
Output image
|
Prasyarat
Panggil API pengeditan gambar umum Wan menggunakan HTTP atau SDK DashScope.
Sebelum melakukan panggilan, dapatkan API key dan ekspor API key sebagai variabel lingkungan.
Untuk memanggil API menggunakan SDK, instal SDK DashScope. SDK tersedia untuk Python dan Java.
HTTP
Model gambar membutuhkan waktu lama untuk diproses. Untuk mencegah timeout, panggilan HTTP hanya mendukung pengambilan hasil secara asinkron. Diperlukan dua permintaan:
-
Buat tugas untuk mendapatkan ID tugas: Kirim permintaan untuk membuat tugas. Respons akan mengembalikan ID tugas (
task_id). -
Kueri hasil menggunakan ID tugas: Gunakan ID tugas dari langkah sebelumnya untuk mengkueri status dan hasil tugas. Jika tugas berhasil, respons akan mengembalikan URL gambar yang berlaku selama 24 jam.
Setelah dibuat, tugas masuk ke antrian untuk penjadwalan. Panggil API kueri untuk mengambil status dan hasil tugas.
Model pengeditan gambar umum membutuhkan waktu sekitar 5 hingga 15 detik untuk memproses permintaan. Waktu aktual tergantung pada jumlah tugas dalam antrian dan kondisi jaringan. Harap bersabar menunggu hasilnya.
Langkah 1: Buat tugas untuk mendapatkan ID tugas
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis
Parameter permintaan |
Stilisasi global
Melewatkan file lokal (Base64)Contoh berikut menunjukkan cara melewatkan parameter yang dikodekan Base64 untuk stilisasi global. Karena string yang dikodekan Base64 panjang, unduh image_base64 dan salin seluruh isinya ke parameter Untuk informasi lebih lanjut tentang format data, lihat Format yang didukung.
Stilisasi lokal
Pengeditan berbasis instruksiDeskripsi fitur: Menambah atau memodifikasi konten gambar hanya menggunakan instruksi, tanpa menentukan area.
InpaintingDeskripsi fitur: Menambah, menghapus, atau memodifikasi konten di area tertentu.
Penghapusan watermark teksDeskripsi fitur: Mendukung penghapusan watermark teks bahasa Tiongkok dan Inggris.
Ekspansi gambarDeskripsi fitur: Mendukung ekspansi gambar secara proporsional ke atas, bawah, kiri, dan kanan.
Super resolusiDeskripsi fitur: Mendukung peningkatan gambar buram ke definisi tinggi.
PewarnaanDeskripsi fitur: Mengonversi gambar hitam-putih atau grayscale menjadi gambar berwarna.
Generasi sketsa-ke-gambarDeskripsi fitur: Mengekstraksi sketsa dari gambar input lalu menghasilkan gambar berdasarkan sketsa tersebut.
Generasi karakter kartun berdasarkan referensiDeskripsi fitur: Mendukung generasi gambar berdasarkan karakter kartun referensi.
|
Header permintaan |
|
|
Content-Type Tipe konten permintaan. Harus |
|
|
Authorization Mengotentikasi permintaan dengan Kunci API Model Studio. Contoh: Bearer sk-xxxx. |
|
|
X-DashScope-Async Mengaktifkan pemrosesan asinkron. Permintaan HTTP hanya mendukung panggilan asinkron. Harus Penting
Jika header permintaan ini tidak ada, kesalahan "current user api does not support synchronous calls" akan dikembalikan. |
|
Body permintaan |
|
|
model Nama model, misalnya wanx2.1-imageedit. |
|
|
input Informasi input dasar (prompt). |
|
|
parameters Parameter pemrosesan gambar. |
Parameter respons |
Respons berhasilSimpan
Respons kesalahanPembuatan tugas gagal. Lihat 错误码.
|
|
output Informasi output tugas. |
|
|
request_id Pengidentifikasi permintaan unik untuk pelacakan dan troubleshooting. |
|
|
code Kode kesalahan. Hanya dikembalikan untuk permintaan yang gagal. Lihat 错误码. |
|
|
message Pesan kesalahan detail. Hanya dikembalikan untuk permintaan yang gagal. Lihat 错误码. |
Langkah 2: Kueri hasil berdasarkan ID tugas
GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}
Parameter permintaan |
Kueri hasil tugasGanti
|
Header permintaan |
|
|
Authorization Mengotentikasi permintaan dengan Kunci API Model Studio. Contoh: Bearer sk-xxxx. |
|
Parameter path |
|
|
task_id ID tugas. |
Parameter respons |
Tugas berhasilData tugas (status tugas dan URL gambar) hanya disimpan selama 24 jam lalu secara otomatis dihapus. Segera simpan gambar yang dihasilkan. Tugas gagalKetika tugas gagal,
Tugas sebagian gagalModel dapat menghasilkan beberapa gambar per tugas. Jika setidaknya satu berhasil, status tugas adalah
|
|
output Informasi output tugas. |
|
|
usage Statistik informasi output. Hanya hasil yang berhasil yang dihitung. |
|
|
request_id Pengidentifikasi permintaan unik untuk pelacakan dan troubleshooting. |
SDK DashScope
Pastikan Anda telah menginstal versi terbaru SDK DashScope. Jika tidak, kesalahan waktu proses mungkin terjadi.
SDK DashScope saat ini mendukung Python dan Java.
Nama parameter dalam SDK sebagian besar konsisten dengan yang ada di API HTTP. Struktur parameternya bergantung pada enkapsulasi SDK untuk masing-masing bahasa. Untuk deskripsi parameter, lihat 万相-图生视频-基于首帧(2.1-2.6).
Pemrosesan model video membutuhkan waktu lama, sehingga layanan menggunakan pendekatan asinkron. SDK menyediakan wrapper yang mendukung panggilan sinkron dan asinkron.
Model pengeditan gambar umum membutuhkan waktu sekitar 5 hingga 15 detik untuk memproses permintaan. Waktu aktual tergantung pada jumlah tugas dalam antrian dan kondisi jaringan. Harap bersabar menunggu hasilnya.
SDK Python
Saat menggunakan SDK Python untuk memproses file gambar, masukkan gambar dengan salah satu dari tiga metode berikut. Pilih metode yang paling sesuai dengan skenario Anda.
-
URL publik: URL gambar yang dapat diakses publik melalui protokol HTTP atau HTTPS.
-
Dikodekan Base64: Lewatkan string file yang dikodekan Base64 dalam format
data:{MIME_type};base64,{base64_data}. -
Jalur file lokal: Mendukung jalur absolut dan relatif. Lihat tabel berikut untuk format jalur file yang valid.
|
Sistem |
Jalur file yang dilewatkan |
Contoh (jalur absolut) |
Contoh (jalur relatif) |
|
Linux atau macOS |
file://{jalur absolut atau relatif file} |
file:///home/images/test.png |
file://./images/test.png |
|
Windows |
file://D:/images/test.png |
file://./images/test.png |
Kode contoh
Sebelum memanggil kode, instal atau tingkatkan SDK Python DashScope ke versi terbaru: pip install -U dashscope. Lihat 安装SDK.
Panggilan sinkron
Contoh ini menunjukkan panggilan sinkron dan mendukung tiga metode input gambar: URL publik, pengkodean Base64, dan jalur file lokal.
Contoh permintaan
import base64
import os
from http import HTTPStatus
from dashscope import ImageSynthesis
import dashscope
import mimetypes
"""
Persyaratan lingkungan:
dashscope python SDK >= 1.23.8
Instal/Upgrade SDK:
pip install -U dashscope
"""
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"
# Jika variabel lingkungan tidak dikonfigurasi, ganti baris berikut dengan: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# --- Fungsi pembantu: untuk pengkodean Base64 ---
# Formatnya 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 gambar publik - cocok untuk gambar yang dapat diakses publik.
2. Gunakan file lokal - cocok untuk pengembangan dan pengujian lokal.
3. Gunakan pengkodean Base64 - cocok untuk gambar pribadi atau skenario yang memerlukan transmisi terenkripsi.
"""
# [Metode 1] Gunakan URL gambar publik
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"
# [Metode 2] Gunakan file lokal (mendukung jalur absolut dan relatif)
# Persyaratan format: file:// + jalur file
# Contoh (jalur absolut):
# mask_image_url = "file://" + "/path/to/your/mask_image.png" # Linux/macOS
# base_image_url = "file://" + "C:/path/to/your/base_image.jpeg" # Windows
# Contoh (jalur relatif):
# mask_image_url = "file://" + "./mask_image.png" # Berdasarkan jalur aktual
# base_image_url = "file://" + "./base_image.jpeg" # Berdasarkan jalur aktual
# [Metode 3] Gunakan gambar yang dikodekan Base64
# mask_image_url = encode_file("./mask_image.png") # Berdasarkan jalur aktual
# base_image_url = encode_file("./base_image.jpeg") # Berdasarkan jalur aktual
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()
Contoh respons
URL berlaku selama 24 jam. Segera unduh gambarnya.
{
"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
}
}
Panggilan asinkron
Contoh ini hanya menunjukkan metode panggilan asinkron.
Contoh permintaan
import os
from http import HTTPStatus
from dashscope import ImageSynthesis
import dashscope
"""
Persyaratan lingkungan:
dashscope python SDK >= 1.23.4
Instal/Upgrade SDK:
pip install -U dashscope
"""
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"
# Jika variabel lingkungan tidak dikonfigurasi, ganti baris berikut dengan: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# Gunakan URL gambar publik
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"
def sample_async_call_imageedit():
# Panggilan asinkron, mengembalikan task_id
rsp = ImageSynthesis.async_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)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print("task_id: %s" % rsp.output.task_id)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
# Dapatkan informasi tugas asinkron
status = ImageSynthesis.fetch(task=rsp, api_key=api_key)
if status.status_code == HTTPStatus.OK:
print(status.output.task_status) # periksa status tugas
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(status.status_code, status.code, status.message))
# Tunggu hingga tugas asinkron selesai
rsp = ImageSynthesis.wait(rsp)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(rsp.output)
for result in rsp.output.results:
print("---------------------------")
print(result.url)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_async_call_imageedit()
Contoh respons
1. Contoh respons untuk membuat tugas
{
"status_code": 200,
"request_id": "6dc3bf6c-be18-9268-9c27-xxxxxx",
"code": "",
"message": "",
"output": {
"task_id": "686391d9-7ecf-4290-a8e9-xxxxxx",
"task_status": "PENDING",
"video_url": ""
},
"usage": null
}
2. Contoh respons untuk mengkueri hasil tugas
URL berlaku selama 24 jam. Segera unduh gambarnya.
{
"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?Expires=17xxxxxx"
}
],
"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
}
}
SDK Java
Saat menggunakan SDK Java untuk memproses file gambar, masukkan gambar dengan salah satu dari tiga metode berikut. Pilih metode yang paling sesuai dengan skenario Anda.
-
URL publik: URL gambar yang dapat diakses publik melalui protokol HTTP atau HTTPS.
-
Dikodekan Base64: Lewatkan string file yang dikodekan Base64 dalam format
data:{MIME_type};base64,{base64_data}. -
Jalur file lokal: Hanya jalur absolut yang didukung. Lihat tabel berikut untuk format jalur file yang valid.
|
Sistem |
Jalur file yang akan diteruskan |
Contoh |
|
Linux atau macOS |
file://{jalur absolut file} |
file:///home/images/test.png |
|
Windows |
file:///{jalur absolut file} |
file:///D:/images/test.png |
Kode contoh
Sebelum memanggil kode, instal atau tingkatkan SDK Java DashScope ke versi terbaru. Lihat 安装SDK.
Panggilan sinkron
Contoh ini menunjukkan panggilan sinkron dan mendukung tiga metode input gambar: URL publik, pengkodean 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.Base64;
import java.util.HashMap;
import java.util.Map;
/**
* Persyaratan lingkungan
* dashscope java SDK >=2.20.9
* Perbarui dependensi Maven:
* https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
*/
public class ImageEditSync {
static {Constants.baseHttpApiUrl="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";}
// Jika variabel lingkungan tidak dikonfigurasi, ganti baris berikut dengan: apiKey="sk-xxx"
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
/**
* Metode input gambar: Pilih salah satu dari tiga berikut.
*
* 1. Gunakan URL publik - cocok untuk gambar yang dapat diakses publik.
* 2. Gunakan file lokal - cocok untuk pengembangan dan pengujian lokal.
* 3. Gunakan pengkodean Base64 - cocok untuk gambar pribadi atau skenario yang memerlukan transmisi terenkripsi.
*/
//[Metode 1] URL publik
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";
//[Metode 2] Jalur file lokal (file://+jalur absolut atau file:///+jalur absolut)
// static String maskImageUrl = "file://" + "/your/path/to/mask_image.png"; // Linux/macOS
// static String baseImageUrl = "file:///" + "C:/your/path/to/base_image.png"; // Windows
//[Metode 3] Pengkodean 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() {
// Atur parameter 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));
}
/**
* Mengkodekan 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 tipe MIME
String mimeType = null;
try {
mimeType = Files.probeContentType(path);
} catch (IOException e) {
throw new IllegalArgumentException("Tidak dapat mendeteksi tipe file: " + filePath);
}
if (mimeType == null || !mimeType.startsWith("image/")) {
throw new IllegalArgumentException("Format gambar tidak didukung atau tidak dikenali");
}
// Baca konten file dan kodekan
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. Segera unduh gambarnya.
{
"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
}
}
Panggilan asinkron
Contoh ini hanya menunjukkan metode panggilan asinkron.
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.HashMap;
import java.util.Map;
/**
* Persyaratan lingkungan
* dashscope java SDK >= 2.20.1
* Perbarui dependensi Maven:
* https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
*/
public class ImageEditAsync {
static {Constants.baseHttpApiUrl="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";}
// Jika variabel lingkungan tidak dikonfigurasi, ganti baris berikut dengan: apiKey="sk-xxx"
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
//[Metode 1] URL publik
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";
public static void asyncCall() {
// Atur parameter 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("---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 DASHSCOPE_API_KEY diatur sebagai variabel lingkungan, apiKey bisa kosong.
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 membuat tugas
{
"request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
"output": {
"task_id": "7277e20e-aa01-4709-xxxxxxxx",
"task_status": "PENDING"
}
}
2. Contoh respons untuk mengkueri hasil tugas
URL berlaku selama 24 jam. Segera unduh gambarnya.
{
"request_id": "3d740fc4-a968-9c36-b0e7-xxxxxxxx",
"output": {
"task_id": "34dcf4b0-ed84-441e-91cb-xxxxxxxx",
"task_status": "SUCCEEDED",
"results": [
{
"url": "https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/xxx.png"
}
],
"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",
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 1,
"FAILED": 0
}
},
"usage": {
"image_count": 1
}
}
Kode kesalahan
Jika panggilan model gagal dan mengembalikan pesan kesalahan, lihat 错误码 untuk solusinya.
API ini juga memiliki kode status khusus, seperti yang ditunjukkan dalam tabel berikut.
|
Kode status HTTP |
Kode kesalahan API (code) |
Pesan kesalahan API (message) |
Deskripsi |
|
400 |
InvalidParameter |
InvalidParameter |
Parameter permintaan tidak valid. |
|
400 |
IPInfringementSuspect |
Input data is suspected of being involved in IP infringement. |
Data input (seperti prompt atau gambar) dicurigai melanggar hak kekayaan intelektual. Periksa input untuk memastikan tidak mengandung konten yang berisiko melanggar. |
|
400 |
DataInspectionFailed |
Input data may contain inappropriate content. |
Data input (seperti prompt atau gambar) mungkin mengandung konten yang tidak pantas. Ubah input dan coba lagi. |
|
500 |
InternalError |
InternalError |
Layanan mengalami gangguan. Coba lagi untuk mengesampingkan masalah sesekali. |
Format gambar input
Format yang didukung
Gambar input mendukung berbagai format string, seperti yang ditunjukkan dalam tabel berikut.
|
Metode pemanggilan |
HTTP |
SDK Python |
Java SDK |
|
Metode input gambar yang didukung |
|
|
|
Metode 1: Gunakan URL publik
-
Sediakan alamat gambar yang dapat diakses publik melalui protokol HTTP atau HTTPS.
-
Contoh:
https://xxxx/img.png
Metode 2: Gunakan pengkodean Base64
Konversi file gambar lokal menjadi string Base64 dan masukkan ke dalam format data:{MIME_type};base64,{base64_data}.
-
Untuk kode konversi, lihat Kode contoh.
-
{MIME_type}: Jenis media gambar yang harus sesuai dengan format file.
-
{base64_data}: String Base64 dari file gambar.
-
Referensi tipe MIME:
Format gambar
Tipe MIME
JPEG
image/jpeg
JPG
image/jpeg
PNG
image/png
BMP
image/bmp
TIFF
image/tiff
WEBP
image/webp
-
Contoh:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDg......Catatan: String Base64 di atas dipotong untuk demonstrasi. Dalam penggunaan aktual, gunakan string Base64 lengkap.
Metode 3: Gunakan jalur file lokal
-
HTTP tidak mendukung jalur file lokal. Hanya SDK Python dan SDK Java yang mendukung metode ini.
-
Untuk aturan jalur file lokal, lihat SDK Python dan SDK Java.
FAQ
Untuk pertanyaan umum mengenai model gambar—termasuk penagihan model, aturan pembatasan laju, dan kesalahan API yang sering terjadi—lihat 常见问题.




















