全部产品
Search
文档中心

Alibaba Cloud Model Studio:Wan - referensi API pengeditan citra umum

更新时间:Nov 27, 2025

Topik ini menjelaskan parameter input dan output model pengeditan citra umum Wan.

Penting

Model ini hanya tersedia di wilayah China (Beijing). Untuk menggunakan model ini, Anda harus menggunakan API key untuk wilayah China (Beijing).

Model ini mampu menjalankan berbagai tugas pengeditan citra berdasarkan instruksi sederhana, cocok untuk skenario seperti outpainting, penghapusan watermark, style transfer, restorasi citra, dan peningkatan citra. Fitur-fitur berikut didukung:

  • Stilisasi citra: Stilisasi global dan lokal.

  • Pengeditan konten citra: Pengeditan berbasis instruksi (menambah atau memodifikasi konten citra berdasarkan instruksi tanpa menentukan wilayah), inpainting (menambah, menghapus, atau memodifikasi konten citra di wilayah tertentu), serta penghapusan teks dan watermark (bahasa Tiongkok dan Inggris).

  • Optimisasi ukuran dan resolusi citra: Outpainting (memperluas citra berdasarkan rasio tertentu) dan super-resolusi citra (penskalaan definisi tinggi).

  • Pemrosesan warna citra: Pewarnaan citra (mengubah citra hitam-putih atau grayscale menjadi citra berwarna).

  • Generasi berdasarkan citra referensi: Line art ke citra (mengekstraksi line art dari citra input untuk menghasilkan citra baru) dan generasi berbasis referensi karakter kartun.

Panduan terkait: Pengeditan citra - Wan 2.1

Ikhtisar model

Model

Harga satuan

Batas laju (dibagi bersama oleh Akun Alibaba Cloud dan Pengguna RAM)

Batas RPS untuk pengiriman tugas

Jumlah tugas konkuren

wanx2.1-imageedit

$0,020070/citra

2

2

Peragaan kinerja

Fitur

Citra input

Prompt input

Citra keluaran

Stilisasi global

image

Convert to French picture book style

image

Stilisasi lokal

image

Change the house to a wooden style.

image

Pengeditan berbasis instruksi

image

Change her hair to red.

image

Inpainting

Input image

image

Input mask image (The white area is the mask area)

image

A ceramic rabbit holding a ceramic flower.

Output image

image

Penghapusan teks dan watermark

image

Remove the text from the image.

image

Outpainting

20250319105917

A green fairy.

image

Super-resolusi citra

Blurry image

image

Image super-resolution.

Clear image

image

Pewarnaan citra

image

Blue background, yellow leaves.

image

Seni Garis ke Citra

Input image

image

A living room in a minimalist Nordic style.

Extract the line art from the original image and generate a new image

image

Hasilkan citra berdasarkan referensi karakter kartun

Input reference image (cartoon character)

image

The cartoon character cautiously peeks out, peering at a brilliant blue gem in the room.

Output image

image

Prasyarat

Anda dapat memanggil API pengeditan citra umum Wan menggunakan HTTP dan SDK DashScope.

Sebelum melakukan panggilan, dapatkan API key dan atur API key sebagai variabel lingkungan.

Untuk melakukan panggilan menggunakan SDK, instal SDK DashScope. SDK tersedia untuk Python dan Java.

HTTP

Model citra memerlukan waktu pemrosesan yang lama. Untuk menghindari timeout permintaan, panggilan HTTP hanya mendukung pengambilan hasil model secara asinkron. Anda harus membuat dua permintaan:

  1. Buat tugas untuk mendapatkan ID tugas: Kirim permintaan untuk membuat tugas. Permintaan ini mengembalikan task_id.

  2. Kueri hasil berdasarkan ID tugas: Gunakan ID tugas dari langkah sebelumnya untuk mengkueri status dan hasil tugas. Jika tugas berhasil dijalankan, URL citra akan dikembalikan. URL tersebut berlaku selama 24 jam.

Catatan

Setelah tugas dibuat, tugas tersebut ditambahkan ke antrian dan menunggu penjadwalan. Anda kemudian harus memanggil API "kueri hasil berdasarkan ID tugas" untuk mengambil status dan hasil tugas.

Model pengeditan citra umum memerlukan waktu sekitar 5 hingga 15 detik untuk memproses permintaan. Waktu pemrosesan aktual bergantung pada jumlah tugas dalam antrian dan kondisi jaringan.

Langkah 1: Buat tugas dan dapatkan ID tugas

POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis

Parameter permintaan

Stilisasi global

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "stylization_all",
    "prompt": "Convert to French picture book style",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/stylization_all_1.jpeg"
  },
  "parameters": {
    "n": 1
  }
}'

Pass a local file (base64)

Contoh berikut menunjukkan cara meneruskan parameter dalam Base64 untuk stilisasi global.

Karena string terenkripsi Base64 panjang, unduh image_base64 dan salin seluruh kontennya sebagai nilai parameter base_image_url.

Untuk informasi lebih lanjut tentang format data, lihat Metode input.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "stylization_all",
    "prompt": "Convert to French picture book style",
    "base_image_url": "data:image/jpeg;base64,/9j/4AAQSkZJR......"
  },
  "parameters": {
    "n": 1
  }
}'

Stilisasi lokal

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "stylization_local",
    "prompt": "Change the house to a wooden board style.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/stylization_local_1.png"
  },
  "parameters": {
    "n": 1
  }
}'

Pengeditan berbasis instruksi

Deskripsi: Menambah atau memodifikasi konten citra berdasarkan instruksi tanpa menentukan wilayah.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "description_edit",
    "prompt": "Change her hair to red.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_2.png"
  },
  "parameters": {
    "n": 1
  }
}'

Inpainting

Deskripsi: Menambah, menghapus, atau memodifikasi konten citra di wilayah tertentu.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "description_edit_with_mask",
    "prompt": "A ceramic rabbit holding a ceramic flower.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3.jpeg",
    "mask_image_url": "http://wanx.alicdn.com/material/20250318/description_edit_with_mask_3_mask.png"
  },
  "parameters": {
    "n": 1
  }
}'

Penghapusan teks dan watermark

Deskripsi: Fitur ini mendukung penghapusan teks dan watermark dalam bahasa Tiongkok dan Inggris.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "remove_watermark",
    "prompt": "Remove the text from the image",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/remove_watermark_1.png"
  },
  "parameters": {
    "n": 1
  }
}'

Outpainting

Deskripsi: Fitur ini mendukung outpainting ke arah atas, bawah, kiri, dan kanan berdasarkan rasio tertentu.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "expand",
    "prompt": "A green fairy",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/expand_2.jpg"
  },
  "parameters": {
    "top_scale": 1.5,
    "bottom_scale": 1.5,
    "left_scale": 1.5,
    "right_scale": 1.5,
    "n": 1
  }
}'

Super-resolusi citra

Deskripsi: Fitur ini mendukung penskalaan definisi tinggi untuk citra buram.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "super_resolution",
    "prompt": "Image super-resolution.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/super_resolution_1.jpeg"  
  },
  "parameters": {
    "upscale_factor": 2,
    "n": 1
  }
}'

Pewarnaan citra

Deskripsi: Mengubah citra hitam-putih atau grayscale menjadi citra berwarna.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "colorization",
    "prompt": "Blue background, yellow leaves.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/colorization_1.jpeg"  
  },
  "parameters": {
    "n": 1
  }
}'

Line art ke citra

Deskripsi: Mengekstraksi line art dari citra input dan menghasilkan citra baru berdasarkan line art yang diekstraksi.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "doodle",
    "prompt": "A living room in a minimalist Nordic style.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/doodle_1.png"
  },
  "parameters": {
    "n": 1
  }
}'

Hasilkan gambar dari referensi karakter kartun

Deskripsi: Fitur ini mendukung generasi citra berdasarkan referensi karakter kartun.

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "control_cartoon_feature",
    "prompt": "The cartoon character cautiously peeks out, peering at a brilliant blue gem in the room.",
    "base_image_url": "http://wanx.alicdn.com/material/20250318/control_cartoon_feature_1.png"
  },
  "parameters": {
    "n": 1
  }
}'
Header permintaan

Content-Type string (Wajib)

Tipe konten permintaan. Atur parameter ini ke application/json.

Authorization string (Wajib)

Kredensial otentikasi identitas untuk permintaan. API ini menggunakan Kunci API Model Studio untuk otentikasi identitas. Contoh: Bearer sk-xxxx.

X-DashScope-Async string (Wajib)

Parameter konfigurasi pemrosesan asinkron. Permintaan HTTP hanya mendukung pemrosesan asinkron. Anda harus mengatur parameter ini ke enable.

Penting

Jika header permintaan ini tidak ada, pesan kesalahan "current user api does not support synchronous calls" dikembalikan.

Body permintaan

model string (Wajib)

Nama model. Contoh: wanx2.1-imageedit.

input object (Wajib)

Informasi input dasar, seperti prompt.

Properti

prompt string (Wajib)

Prompt yang menggambarkan elemen dan fitur visual yang diharapkan dalam citra yang dihasilkan.

Prompt dapat dalam bahasa Tiongkok atau Inggris dan tidak boleh melebihi 800 karakter. Setiap karakter Tiongkok atau huruf dihitung sebagai satu karakter. Teks apa pun yang melebihi batas ini akan dipotong.

Prompt untuk fitur yang berbeda bervariasi. Rujuk tips prompt untuk setiap fitur.

function string (Wajib)

Fitur pengeditan citra. Fitur-fitur berikut didukung:

  • stylization_all: Stilisasi global. Dua gaya didukung. Gaya dan tips prompt

  • stylization_local: Stilisasi lokal. Delapan gaya didukung. Gaya dan tips prompt

  • description_edit: Pengeditan berbasis instruksi. Anda dapat mengedit citra berdasarkan instruksi. Metode ini direkomendasikan untuk tugas pengeditan sederhana. Tips prompt

  • description_edit_with_mask: Inpainting. Anda perlu menentukan area pengeditan. Metode ini cocok untuk skenario yang memerlukan kontrol presisi atas cakupan pengeditan. Tips prompt

  • remove_watermark: Penghapusan teks dan watermark. Tips prompt

  • expand: Outpainting. Tips prompt

  • super_resolution: Super-resolusi citra. Tips prompt

  • colorization: Pewarnaan citra. Tips prompt

  • doodle: Line art ke citra. Tips prompt

  • control_cartoon_feature: Generasi citra dari referensi karakter kartun. Tips prompt

base_image_url string (Wajib)

URL atau data terenkripsi Base64 dari citra input.

Batasan citra:

  • Format citra: JPG, JPEG, PNG, BMP, TIFF, atau WEBP.

  • Resolusi citra: Lebar dan tinggi citra harus berada dalam rentang [512, 4096] piksel.

  • Ukuran citra: Tidak lebih dari 10 MB.

  • URL tidak boleh mengandung karakter Tiongkok.

Detail citra input:

  1. Gunakan URL yang dapat diakses publik

    • HTTP atau HTTPS didukung.

    • Contoh: http://wanx.alicdn.com/material/20250318/stylization_all_1.jpeg.

  2. String yang berisi data citra terenkripsi Base64.

    • Format data: data:{MIME_type};base64,{base64_data}.

    • Contoh: data:image/jpeg;base64,GDU7MtCZzEbTbmRZ.......

    • Data citra terenkripsi dalam contoh tidak lengkap dan hanya untuk tujuan demonstrasi. Untuk informasi lebih lanjut, lihat Metode input.

mask_image_url string (Opsional)

Parameter ini wajib hanya ketika function diatur ke description_edit_with_mask (inpainting). Parameter ini tidak diperlukan untuk fitur lainnya.

URL atau data terenkripsi Base64 dari citra mask.

Anda dapat meneruskan URL yang dapat diakses publik (HTTP/HTTPS) atau citra terenkripsi Base64. Untuk informasi lebih lanjut, lihat Metode input.

Persyaratan citra mask:

  • Resolusi citra: Resolusi harus sama dengan citra yang ditentukan oleh base_image_url. Lebar dan tinggi citra harus berada dalam rentang [512, 4096] piksel.

  • Format citra: JPG, JPEG, PNG, BMP, TIFF, atau WEBP.

  • Ukuran citra: Tidak lebih dari 10 MB.

  • URL tidak boleh mengandung karakter Tiongkok.

Persyaratan warna area mask:

  • Area putih: Menunjukkan bagian yang akan diedit. Harus benar-benar putih (nilai RGB: [255,255,255]). Jika tidak, mungkin tidak teridentifikasi dengan benar.

  • Area hitam: Menunjukkan bagian yang tidak perlu diubah. Harus benar-benar hitam (nilai RGB: [0,0,0]). Jika tidak, mungkin tidak teridentifikasi dengan benar.

Untuk mendapatkan citra mask, Anda dapat menggunakan Photoshop atau alat lain untuk menghasilkan citra mask hitam-putih.

parameters object (Opsional)

Parameter pengeditan citra.

Properti

Umum

n integer (Opsional)

Jumlah citra yang akan dihasilkan. Nilai yang valid: 1 hingga 4. Nilai default: 1.

seed integer (Opsional)

Seed bilangan acak, yang digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed harus berada dalam rentang [0, 2147483647].

Jika Anda tidak memberikan parameter ini, algoritma secara otomatis menghasilkan bilangan acak sebagai seed. Untuk menghasilkan konten yang relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark terletak di pojok kanan bawah citra, bertuliskan "AI Generated".

  • false (default)

  • true

Stilisasi global

n integer (Opsional)

Jumlah citra yang akan dihasilkan. Nilai yang valid: 1 hingga 4. Nilai default: 1.

seed integer (Opsional)

Seed bilangan acak, yang digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed harus berada dalam rentang [0, 2147483647].

Jika Anda tidak memberikan parameter ini, algoritma secara otomatis menghasilkan bilangan acak sebagai seed. Untuk menghasilkan konten yang relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark terletak di pojok kanan bawah citra, bertuliskan "AI Generated".

  • false (default)

  • true

strength float (Opsional)

Tentukan parameter ini ketika function diatur ke stylization_all (stylisasi global).

Mengontrol tingkat modifikasi citra. Nilai harus berada dalam rentang [0,0, 1,0]. Nilai default: 0,5.

Nilai yang lebih mendekati 0 menunjukkan hasil yang lebih mirip citra asli. Nilai yang lebih mendekati 1 menunjukkan tingkat modifikasi yang lebih besar terhadap citra asli.

Pengeditan berbasis instruksi

n integer (Opsional)

Jumlah citra yang akan dihasilkan. Nilai yang valid: 1 hingga 4. Nilai default: 1.

seed integer (Opsional)

Seed bilangan acak, yang digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed harus berada dalam rentang [0, 2147483647].

Jika Anda tidak memberikan parameter ini, algoritma secara otomatis menghasilkan bilangan acak sebagai seed. Untuk menghasilkan konten yang relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark terletak di pojok kanan bawah citra, bertuliskan "AI Generated".

  • false (default)

  • true

strength float (Opsional)

Tentukan parameter ini ketika function diatur ke description_edit (pengeditan berbasis instruksi).

Mengontrol tingkat modifikasi citra. Nilai harus berada dalam rentang [0,0, 1,0]. Nilai default: 0,5.

Nilai yang lebih mendekati 0 menunjukkan hasil yang lebih mirip citra asli. Nilai yang lebih mendekati 1 menunjukkan tingkat modifikasi yang lebih besar terhadap citra asli.

Outpainting

n integer (Opsional)

Jumlah citra yang akan dihasilkan. Nilai yang valid: 1 hingga 4. Nilai default: 1.

seed integer (Opsional)

Seed bilangan acak, yang digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed harus berada dalam rentang [0, 2147483647].

Jika Anda tidak memberikan parameter ini, algoritma secara otomatis menghasilkan bilangan acak sebagai seed. Untuk menghasilkan konten yang relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark terletak di pojok kanan bawah citra, bertuliskan "AI Generated".

  • false (default)

  • true

top_scale float (Opsional)

Tentukan parameter ini hanya ketika function diatur ke expand (outpainting).

Citra dipusatkan dan diperluas ke atas berdasarkan rasio yang ditentukan. Nilai default: 1,0. Nilai harus berada dalam rentang [1,0, 2,0].

bottom_scale float (Opsional)

Tentukan parameter ini hanya ketika function diatur ke expand (outpainting).

Citra dipusatkan dan diperluas ke bawah berdasarkan rasio yang ditentukan. Nilai default: 1,0. Nilai harus berada dalam rentang [1,0, 2,0].

left_scale float (Opsional)

Tentukan parameter ini hanya ketika function diatur ke expand (outpainting).

Citra dipusatkan dan diperluas ke kiri berdasarkan rasio yang ditentukan. Nilai default: 1,0. Nilai harus berada dalam rentang [1,0, 2,0].

right_scale float (Opsional)

Tentukan parameter ini hanya ketika function diatur ke expand (outpainting).

Citra dipusatkan dan diperluas ke kanan berdasarkan rasio yang ditentukan. Nilai default: 1,0. Nilai harus berada dalam rentang [1,0, 2,0].

Super-resolusi citra

n integer (Opsional)

Jumlah citra yang akan dihasilkan. Nilai yang valid: 1 hingga 4. Nilai default: 1.

seed integer (Opsional)

Seed bilangan acak, yang digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed harus berada dalam rentang [0, 2147483647].

Jika Anda tidak memberikan parameter ini, algoritma secara otomatis menghasilkan bilangan acak sebagai seed. Untuk menghasilkan konten yang relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark terletak di pojok kanan bawah citra, bertuliskan "AI Generated".

  • false (default)

  • true

upscale_factor integer (Opsional)

Tentukan parameter ini hanya ketika function diatur ke super_resolution (super-resolusi citra).

Menentukan faktor pembesaran untuk super-resolusi citra. Fitur ini meningkatkan detail dan meningkatkan resolusi citra untuk mencapai pemrosesan definisi tinggi sambil memperbesar citra.

Nilai harus berada dalam rentang 1 hingga 4. Nilai default: 1. Jika Anda mengatur upscale_factor ke 1, hanya pemrosesan definisi tinggi yang dilakukan pada citra tanpa pembesaran.

Line art ke citra

n integer (Opsional)

Jumlah citra yang akan dihasilkan. Nilai yang valid: 1 hingga 4. Nilai default: 1.

seed integer (Opsional)

Seed bilangan acak, yang digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Nilai parameter seed harus berada dalam rentang [0, 2147483647].

Jika Anda tidak memberikan parameter ini, algoritma secara otomatis menghasilkan bilangan acak sebagai seed. Untuk menghasilkan konten yang relatif stabil, gunakan nilai parameter seed yang sama.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark terletak di pojok kanan bawah citra, bertuliskan "AI Generated".

  • false (default)

  • true

is_sketch bool (Opsional)

Tentukan parameter ini hanya ketika function diatur ke doodle (line art ke citra).

Menentukan apakah citra input adalah citra line art.

  • false: Nilai default. Citra input bukan citra line art. Model terlebih dahulu mengekstraksi line art dari citra input dan kemudian menghasilkan citra baru berdasarkan line art yang diekstraksi.

  • true: Citra input adalah citra line art. Model menghasilkan citra langsung dari citra input. Ini cocok untuk skenario doodling.

Parameter respons

Respons berhasil

Simpan task_id untuk mengkueri status dan hasil tugas.

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

Respons kesalahan

Pembuatan tugas gagal. Untuk informasi lebih lanjut, lihat Pesan kesalahan untuk menyelesaikan masalah.

{
    "code":"InvalidApiKey",
    "message":"Invalid API-key provided.",
    "request_id":"fb53c4ec-1c12-4fc4-a580-xxxxxx"
}

output object

Informasi output tugas.

Properti

task_id string

ID tugas. Kueri berlaku selama 24 jam.

task_status string

Status tugas.

Enumerasi

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN: Tugas tidak ada atau statusnya tidak dapat ditentukan.

request_id string

ID permintaan unik. Anda dapat menggunakan ID ini untuk melacak dan memecahkan masalah.

code string

Kode kesalahan untuk permintaan yang gagal. Parameter ini tidak dikembalikan jika permintaan berhasil. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

message string

Informasi detail tentang permintaan yang gagal. Parameter ini tidak dikembalikan jika permintaan berhasil. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

Langkah 2: Kueri hasil berdasarkan ID tugas

GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

Parameter permintaan

Kueri hasil tugas

Ganti 86ecf553-d340-4e21-xxxxxxxxx dengan ID tugas yang sebenarnya.

curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Header permintaan

Authorization string (Wajib)

Kredensial otentikasi identitas untuk permintaan. API ini menggunakan Kunci API Model Studio untuk otentikasi identitas. Contoh: Bearer sk-xxxx.

Parameter Jalur

task_id string (Wajib)

ID tugas.

Parameter respons

Eksekusi tugas berhasil

Data tugas, seperti status tugas dan URL citra, hanya disimpan selama 24 jam dan secara otomatis dihapus setelah periode ini. Anda harus segera menyimpan citra yang dihasilkan.

{
    "request_id": "eeef0935-02e9-9742-bb55-xxxxxx",
    "output": {
        "task_id": "a425c46f-dc0a-400f-879e-xxxxxx",
        "task_status": "SUCCEEDED",
        "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",
        "results": [
            {
                "url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/aaa.png"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

Eksekusi tugas gagal

Jika tugas gagal, task_status diatur ke FAILED, dan kode kesalahan serta pesan disediakan. Untuk informasi lebih lanjut, lihat Pesan kesalahan untuk menyelesaikan masalah.

{
    "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-xxxxxx",
        "task_status": "FAILED",
        "code": "InvalidParameter",
        "message": "xxxxxx",
        "task_metrics": {
            "TOTAL": 4,
            "SUCCEEDED": 0,
            "FAILED": 4
        }
    }
}

Tugas sebagian gagal

Model dapat menghasilkan beberapa citra dalam satu tugas. Jika setidaknya satu citra berhasil dihasilkan, status tugas ditandai sebagai SUCCEEDED, dan URL citra yang sesuai dikembalikan. Untuk citra yang gagal dihasilkan, hasilnya berisi alasan kegagalan. Selain itu, hanya hasil yang berhasil yang dihitung dalam statistik penggunaan. Untuk informasi lebih lanjut, lihat Pesan kesalahan untuk menyelesaikan masalah.

{
    "request_id": "85eaba38-0185-99d7-8d16-xxxxxx",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/123/a1.png"
            },
            {
                "code": "InternalError.Timeout",
                "message": "An internal timeout error has occured during execution, please try again later or contact service support."
            }
        ],
        "task_metrics": {
            "TOTAL": 2,
            "SUCCEEDED": 1,
            "FAILED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

output object

Informasi output tugas.

Properti

task_id string

ID tugas. Kueri berlaku selama 24 jam.

task_status string

Status tugas.

Enumerasi

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN: Tugas tidak ada atau statusnya tidak dapat ditentukan.

submit_time string

Waktu saat tugas diajukan. Waktu dalam zona waktu UTC+8. Formatnya adalah YYYY-MM-DD HH:mm:ss.SSS.

scheduled_time string

Waktu saat tugas mulai berjalan. Waktu dalam zona waktu UTC+8. Formatnya adalah YYYY-MM-DD HH:mm:ss.SSS.

end_time string

Waktu saat tugas selesai. Waktu dalam zona waktu UTC+8. Formatnya adalah YYYY-MM-DD HH:mm:ss.SSS.

results array object

Daftar hasil tugas, termasuk URL citra dan pesan kesalahan untuk tugas yang sebagian gagal.

Struktur data

{
    "results": [
        {
            "url": ""
        },
        {
            "code": "",
            "message": ""
        }
    ]
}

task_metrics object

Statistik hasil tugas.

Properti

TOTAL integer

Jumlah total tugas.

SUCCEEDED integer

Jumlah tugas yang berhasil.

FAILED integer

Jumlah tugas yang gagal.

code string

Kode kesalahan untuk permintaan yang gagal. Parameter ini tidak dikembalikan jika permintaan berhasil. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

message string

Informasi detail tentang permintaan yang gagal. Parameter ini tidak dikembalikan jika permintaan berhasil. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

usage object

Statistik penggunaan untuk permintaan. Hanya citra yang berhasil dihasilkan yang dihitung.

Properti

image_count integer

Jumlah citra yang berhasil dihasilkan oleh model. Rumus penagihan: Biaya = Jumlah citra × Harga satuan.

request_id string

ID permintaan unik. Anda dapat menggunakan ID ini untuk melacak dan memecahkan masalah.

DashScope SDK

Pastikan Anda telah menginstal versi terbaru SDK DashScope. Jika tidak, kesalahan mungkin terjadi.

SDK DashScope tersedia untuk Python dan Java.

Nama parameter dalam SDK sebagian besar sama dengan yang ada di API HTTP. Struktur parameter spesifik untuk enkapsulasi SDK untuk setiap bahasa. Untuk informasi lebih lanjut tentang parameter, lihat Panggilan HTTP.

Karena model citra memerlukan waktu pemrosesan yang lama, layanan dasar bersifat asinkron. SDK menyediakan lapisan enkapsulasi yang mendukung panggilan sinkron dan asinkron.

Model pengeditan citra umum memerlukan waktu sekitar 5 hingga 15 detik untuk memproses permintaan. Waktu pemrosesan aktual bergantung pada jumlah tugas dalam antrian dan kondisi jaringan.

Python SDK

Saat Anda menggunakan Python SDK untuk memproses file citra, Anda dapat menggunakan salah satu dari tiga metode berikut untuk memasukkan citra. Pilih metode yang paling sesuai dengan skenario Anda.

  1. URL publik: URL citra yang dapat diakses publik menggunakan protokol HTTP atau HTTPS.

  2. Pengkodean Base64: String file terenkripsi Base64 dalam format data:{MIME_type};base64,{base64_data}.

  3. Jalur file lokal: Mendukung jalur absolut dan relatif. Untuk informasi tentang cara memberikan jalur file yang benar, lihat tabel berikut.

Sistem

Jalur file yang harus disediakan

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

Catatan

Sebelum memanggil kode, pastikan Anda telah menginstal SDK Python DashScope. Kami menyarankan Anda memperbarui ke versi terbaru dengan menjalankan pip install -U dashscope. Untuk informasi lebih lanjut, lihat Instal SDK.

Panggilan sinkron

Contoh ini menunjukkan cara melakukan panggilan sinkron dan mendukung tiga metode input citra: URL publik, pengkodean Base64, dan jalur file lokal.

Permintaan contoh
import base64
import os
from http import HTTPStatus
from dashscope import ImageSynthesis
import mimetypes

"""
Persyaratan lingkungan:
    dashscope python SDK >= 1.23.8
Instal/Perbarui SDK:
    pip install -U dashscope
"""

# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")


# --- Fungsi pembantu: untuk pengkodean 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 citra 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}"

"""
Deskripsi metode input citra:
Tiga metode input citra berikut disediakan. Anda dapat memilih salah satunya.

1. Gunakan URL publik - cocok untuk citra yang dapat diakses publik.
2. Gunakan file lokal - cocok untuk pengembangan dan pengujian lokal.
3. Gunakan pengkodean Base64 - cocok untuk citra pribadi atau skenario yang memerlukan transmisi terenkripsi.
"""

# [Metode 1] Gunakan URL citra 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 (jalur absolut dan relatif didukung)
# 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"                 # Sesuai jalur aktual
# base_image_url = "file://" + "./base_image.jpeg"                # Sesuai jalur aktual

# [Metode 3] Gunakan citra terenkripsi Base64
# mask_image_url = encode_file("./mask_image.png")               # Sesuai jalur aktual
# base_image_url = encode_file("./base_image.jpeg")              # Sesuai 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()
Respons contoh
URL berlaku selama 24 jam. Unduh citra segera.
{
    "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
    }
}

Pemanggilan asinkron

Contoh ini hanya menunjukkan cara melakukan panggilan asinkron.

Permintaan contoh
import os
from http import HTTPStatus
from dashscope import ImageSynthesis

"""
Persyaratan lingkungan:
    dashscope python SDK >= 1.23.4
Instal/Perbarui SDK:
    pip install -U dashscope
"""

# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")

# Gunakan URL citra 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()
Respons contoh

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. Unduh citra segera.
{
    "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
    }
}

Java SDK

Saat Anda menggunakan Java SDK untuk memproses file citra, Anda dapat menggunakan salah satu dari tiga metode berikut untuk memasukkan citra. Pilih metode yang paling sesuai dengan skenario Anda.

  1. URL publik: URL citra yang dapat diakses publik menggunakan protokol HTTP atau HTTPS.

  2. Pengkodean Base64: String file terenkripsi Base64 dalam format data:{MIME_type};base64,{base64_data}.

  3. Jalur file lokal: Hanya jalur absolut yang didukung. Untuk informasi tentang cara memberikan jalur file yang benar, lihat tabel berikut.

Sistem

Jalur file yang harus disediakan

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

Catatan

Sebelum memanggil kode, pastikan Anda telah menginstal SDK Java DashScope. Kami menyarankan Anda memperbarui ke versi terbaru. Untuk informasi lebih lanjut, lihat Instal SDK.

Panggilan sinkron

Contoh ini menunjukkan cara melakukan panggilan sinkron dan mendukung tiga metode input citra: URL publik, pengkodean Base64, dan jalur file lokal.

Permintaan contoh
// 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.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 {

    // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey="sk-xxx"
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * Deskripsi metode input citra: Pilih salah satu dari tiga metode
     *
     * 1. Gunakan URL publik - cocok untuk citra yang dapat diakses publik.
     * 2. Gunakan file lokal - cocok untuk pengembangan dan pengujian lokal.
     * 3. Gunakan pengkodean Base64 - cocok untuk citra 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));
    }

    /**
     * Mengenkripsi 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 citra tidak didukung atau tidak dikenali");
        }
        // Baca konten file dan enkripsi
        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();
    }
}
Respons contoh
URL berlaku selama 24 jam. Unduh citra segera.
{
    "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
    }
}

Pemanggilan asinkron

Contoh ini hanya menunjukkan cara melakukan panggilan asinkron.

Permintaan contoh
// 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.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 {

    // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: 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 dapat dikosongkan.
        ImageSynthesisResult result = is.fetch(taskId, apiKey);
        System.out.println(result.getOutput());
        System.out.println(result.getUsage());
    }


    public static void main(String[] args) {
        asyncCall();
    }
}
Respons contoh

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

video_url kedaluwarsa dalam 24 jam. Unduh video segera.
{
	"request_id": "3d740fc4-a968-9c36-b0e7-xxxxxxxx",
	"output": {
		"task_id": "34dcf4b0-ed84-441e-91cb-xxxxxxxx",
		"task_status": "SUCCEEDED",
		"video_url": "https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/aaaa.mp4"
	},
	"usage": {
		"video_count": 1,
		"video_duration": 5,
		"video_ratio": "standard"
	}
}

Kode kesalahan

Jika panggilan gagal, lihat Pesan kesalahan untuk troubleshooting.

API ini juga mengembalikan kode kesalahan spesifik berikut.

Kode status HTTP

code (kode kesalahan API)

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 citra) 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 citra) mungkin mengandung konten yang tidak pantas. Ubah input dan coba lagi.

500

InternalError

InternalError

Terjadi kesalahan layanan. Coba lagi untuk mengesampingkan kemungkinan kejadian insidental.

Deskripsi citra input

Pass by value

Citra input dapat diberikan dalam berbagai format string. Tabel berikut menjelaskan format yang didukung untuk setiap metode panggilan.

Metode

HTTP

Python SDK

Java SDK

Metode input citra yang didukung

  • URL publik

  • Pengkodean Base64

  • URL publik

  • Pengkodean Base64

  • Jalur file lokal

  • URL publik

  • Pengkodean Base64

  • Jalur file lokal

Metode 1: Gunakan URL publik

  • Berikan URL citra yang dapat diakses publik. HTTP dan HTTPS didukung.

  • Contoh: https://xxxx/img.png.

Metode 2: Gunakan pengkodean Base64

Konversi file citra lokal menjadi string terenkripsi Base64 dan berikan dalam format data:{MIME_type};base64,{base64_data}.

  • Untuk kode konversi, lihat Kode contoh.

  • {MIME_type}: Tipe media citra. Harus sesuai dengan format file.

  • {base64_data}: Data citra terenkripsi Base64.

  • Pemetaan tipe MIME:

    Format citra

    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 tujuan demonstrasi. Dalam praktiknya, Anda harus meneruskan string terenkripsi lengkap.

Metode 3: Gunakan jalur file lokal

  • Panggilan HTTP tidak mendukung jalur file lokal. Metode ini hanya didukung oleh SDK Python dan Java.

  • Untuk informasi lebih lanjut tentang aturan untuk meneruskan jalur file lokal, lihat Python SDK dan Java SDK.

Konfigurasi akses citra

Konfigurasikan daftar putih nama domain: Pastikan sistem bisnis Anda dapat mengakses tautan citra

Citra yang dihasilkan disimpan di OSS Alibaba Cloud. Setiap citra diberikan tautan OSS, seperti https://dashscope-result-xx.oss-cn-xxxx.aliyuncs.com/xxx.png. Tautan OSS memungkinkan akses publik, dan Anda dapat menggunakannya untuk melihat atau mengunduh citra. Tautan tersebut hanya berlaku selama 24 jam.

Jika bisnis Anda memiliki persyaratan keamanan tinggi dan tidak dapat mengakses tautan OSS Alibaba Cloud, Anda harus mengonfigurasi daftar putih untuk akses publik. Tambahkan nama domain berikut ke daftar putih Anda untuk mengakses tautan citra.

# Daftar nama domain 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

FAQ

Untuk pertanyaan umum tentang model citra, lihat dokumen FAQ. Dokumen ini mencakup topik seperti penagihan model, batas permintaan, dan solusi untuk kesalahan API umum.