Skip to main content
Wan

Wan2.1 - referensi API pengeditan gambar umum

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).
  • Optimalisasi 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 (mengekstrak sketsa dari gambar input lalu menghasilkan gambar berdasarkan sketsa tersebut) dan generasi karakter kartun referensi.
Panduan terkait: Pengeditan gambar - Wan2.1

Ikhtisar model

Model

Harga

Batas laju (dibagi bersama oleh akun root dan Pengguna RAM)

RPS pengiriman tugas

Tugas konkuren

wanx2.1-imageedit

$0,020070/gambar

2

2

Efek model

Fitur

Gambar input

Masukkan prompt

Gambar output

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 (white is the masked area)

image

A ceramic rabbit holding a ceramic flower.

Output image

image

Penghapusan watermark teks

image

Remove the text from the image.

image

Ekspansi gambar

20250319105917

A green fairy.

image

Super Resolution

Blurry image

image

Super resolution.

Clear image

image

Pewarnaan

image

Blue background, yellow leaves.

image

Generasi sketsa-ke-gambar

Input image

image

A living room in a minimalist Nordic style.

Extract the sketch from the original image and generate a new image

image

Generasi karakter kartun referensi

Input reference image (cartoon character)

image

The cartoon character cautiously peeks out, looking at a sparkling blue gem in the room.

Output image

image

Prasyarat

Panggil API pengeditan gambar umum Wan menggunakan HTTP atau SDK DashScope. Sebelum melakukan panggilan, dapatkan Kunci API dan ekspor Kunci API 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:
  1. Buat tugas untuk mendapatkan ID tugas: Kirim permintaan untuk membuat tugas. Respons akan mengembalikan ID tugas (task_id).
  2. Kueri hasil menggunakan ID tugas: Gunakan ID tugas dari langkah sebelumnya untuk menanyakan 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 bergantung pada jumlah tugas dalam antrian dan kondisi jaringan. Harap tunggu hasilnya dengan sabar.

Langkah 1: Buat tugas untuk mendapatkan ID tugas

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.

Parameter permintaan

Header permintaan
Content-Type string (Wajib)Tipe konten permintaan. Harus application/json.Authorization string (Wajib)Mengotentikasi permintaan dengan Kunci API Model Studio. Contoh: Bearer sk-xxxx.X-DashScope-Async string (Wajib)Mengaktifkan pemrosesan asinkron. Permintaan HTTP hanya mendukung panggilan asinkron. Harus enable.
Jika header permintaan ini tidak ada, kesalahan "current user api does not support synchronous calls" akan dikembalikan.
Body permintaan
model string (Wajib)Nama model, misalnya wanx2.1-imageedit.input object (Wajib)Informasi input dasar (prompt).

Properti

promptstring(Wajib)Prompt yang digunakan untuk menggambarkan elemen dan fitur visual yang diinginkan dalam gambar yang dihasilkan.Mendukung bahasa Tiongkok dan Inggris. Panjang maksimum: 800 karakter. Setiap karakter Tiongkok atau huruf dihitung sebagai satu karakter. Karakter berlebih akan dipotong secara otomatis.
Prompt bervariasi untuk fitur yang berbeda. Kami menyarankan Anda meninjau tips prompting yang sesuai untuk setiap fitur.
functionstring(Wajib)Fitur pengeditan gambar. Fitur-fitur berikut saat ini didukung:
  • stylization_all: Stilisasi global. Dua gaya saat ini didukung. Gaya dan tips prompting
  • stylization_local: Stilisasi lokal. Delapan gaya saat ini didukung. Gaya dan tips prompting
  • description_edit: Pengeditan berbasis instruksi. Gunakan instruksi untuk mengedit gambar. Direkomendasikan untuk tugas pengeditan sederhana. Tips prompting
  • description_edit_with_mask: Inpainting. Tentukan area pengeditan. Cocok untuk skenario yang memerlukan kontrol tepat atas cakupan pengeditan. Tips prompting
  • remove_watermark: Penghapusan watermark teks. Tips prompting
  • expand: Ekspansi gambar. Tips prompting
  • super_resolution: Super resolusi. Tips prompting
  • colorization: Pewarnaan. Tips prompting
  • doodle: Generasi sketsa-ke-gambar. Tips prompting
  • control_cartoon_feature: Generasi karakter kartun referensi. Tips prompting
base_image_url string (Wajib)URL atau data yang dikodekan Base64 dari gambar input.Persyaratan gambar:
  • Format file: JPG, JPEG, PNG, BMP, TIFF, atau WEBP
  • Resolusi: Lebar dan tinggi harus 512 hingga 4.096 piksel
  • Ukuran file: Maksimum 10 MB
  • URL tidak boleh mengandung karakter Tiongkok
Format gambar input:
  1. Gunakan URL publik
    • Protokol HTTP atau HTTPS didukung.
    • Contoh: http://wanx.alicdn.com/material/20250318/stylization_all_1.jpeg
  2. Melewatkan string gambar yang dikodekan Base64
    • Format data: data:{MIME_type};base64,{base64_data}
    • Contoh: data:image/jpeg;base64,GDU7MtCZzEbTbmRZ......
    • String yang dikodekan dalam contoh tidak lengkap dan hanya untuk demonstrasi. Untuk informasi lebih lanjut, lihat Format yang didukung.
mask_image_url string (Opsional)Parameter ini hanya diperlukan ketika function diatur ke description_edit_with_mask (inpainting). Tidak diperlukan untuk fitur lainnya.URL atau data yang dikodekan Base64 dari gambar mask.Anda dapat melewatkan URL yang dapat diakses publik (HTTP/HTTPS) atau string yang dikodekan Base64. Untuk informasi lebih lanjut, lihat Format yang didukung.Persyaratan gambar mask:
  • Resolusi: Harus sesuai dengan resolusi gambar yang ditentukan oleh base_image_url. Lebar dan tinggi harus 512 hingga 4.096 piksel
  • Format file: JPG, JPEG, PNG, BMP, TIFF, atau WEBP
  • Ukuran file: Maksimum 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, area tersebut mungkin tidak teridentifikasi dengan benar.
Untuk mendapatkan gambar mask, gunakan Photoshop atau alat lainnya.
parameters object (Opsional)Parameter pemrosesan gambar.

Properti

  • Umum
  • Stilisasi global
  • Pengeditan berbasis instruksi
  • Ekspansi gambar
  • Super resolusi
  • Generasi sketsa-ke-gambar
n integer (Opsional)Jumlah gambar yang akan dihasilkan. Rentang nilai: 1 hingga 4. Default: 1.seedinteger(Opsional)Bilangan acak seed, digunakan untuk mengontrol keacakan konten yang dihasilkan oleh model. Rentang nilai: [0, 2147483647].Jika tidak disediakan, algoritma secara otomatis menghasilkan bilangan acak sebagai seed. Untuk menjaga konten yang dihasilkan relatif stabil, gunakan nilai parameter seed yang sama.watermark bool (Opsional)Menentukan apakah akan menambahkan watermark. Watermark berada di pojok kanan bawah gambar dan menampilkan "Generated by AI".
  • false (default)
  • true
  • Stilisasi global
  • Melewatkan file lokal (Base64)
  • Stilisasi lokal
  • Pengeditan berbasis instruksi
  • Inpainting
  • Penghapusan watermark teks
  • Ekspansi gambar
  • Super resolusi
  • Pewarnaan
  • Generasi sketsa-ke-gambar
  • Generasi karakter kartun referensi
curl --location 'https://{WorkspaceId}.cn-beijing.maas.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
  }
}'

Parameter respons

output objectInformasi output tugas.

Properti

task_id stringID tugas. Berlaku untuk kueri selama 24 jam.task_status stringStatus tugas.

Nilai enumerasi

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: Tugas tidak ada atau statusnya tidak diketahui.
request_id stringIdentifikasi unik permintaan untuk pelacakan dan troubleshooting.code stringKode kesalahan. Hanya dikembalikan untuk permintaan yang gagal. Lihat Kode kesalahan.message stringPesan kesalahan detail. Hanya dikembalikan untuk permintaan yang gagal. Lihat Kode kesalahan.
  • Respons berhasil
  • Respons kesalahan
Simpan task_id untuk menanyakan status dan hasil tugas.
{
    "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

GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id} Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.

Parameter permintaan

Header permintaan
Authorization string (Wajib)Mengotentikasi permintaan dengan Kunci API Model Studio. Contoh: Bearer sk-xxxx.
Parameter path
task_id string (Wajib)ID tugas.
  • Kueri hasil tugas
Ganti 86ecf553-d340-4e21-xxxxxxxxx dengan task_id Anda yang sebenarnya.
curl -X GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Parameter respons

outputobjectInformasi output tugas.

Properti

task_id stringID tugas. Berlaku untuk kueri selama 24 jam.task_status stringStatus tugas.

Nilai enumerasi

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: Tugas tidak ada atau statusnya tidak diketahui.
submit_time stringWaktu saat tugas diajukan. Waktu dalam UTC+8 dan formatnya YYYY-MM-DD HH:mm:ss.SSS.scheduled_time stringWaktu saat tugas dieksekusi. Waktu dalam UTC+8 dan formatnya YYYY-MM-DD HH:mm:ss.SSS.end_time stringWaktu saat tugas selesai. Waktu dalam UTC+8 dan formatnya YYYY-MM-DD HH:mm:ss.SSS.results array objectDaftar hasil tugas, termasuk URL gambar dan pesan kesalahan untuk tugas yang sebagian gagal.
{
    "results": [
        {
            "url": ""
        },
        {
            "code": "",
            "message": ""
        }
    ]
}
task_metrics objectStatistik untuk hasil tugas.

Properti

TOTAL integerJumlah total tugas.SUCCEEDED integerJumlah tugas yang berhasil.FAILED integerJumlah tugas yang gagal.
code stringKode kesalahan. Hanya dikembalikan untuk permintaan yang gagal. Lihat Kode kesalahan.message stringPesan kesalahan detail. Hanya dikembalikan untuk permintaan yang gagal. Lihat Kode kesalahan.
usage objectStatistik informasi output. Hanya hasil yang berhasil yang dihitung.

Properti

image_count integerJumlah gambar yang berhasil dihasilkan. Penagihan: Biaya = Jumlah gambar × Harga satuan.
request_id stringIdentifikasi unik permintaan untuk pelacakan dan troubleshooting.
  • Tugas berhasil
  • Tugas gagal
  • Tugas sebagian gagal
Data tugas (status tugas dan URL gambar) hanya disimpan selama 24 jam lalu secara otomatis dihapus. Segera simpan gambar 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
    }
}

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 parameter bergantung pada enkapsulasi SDK untuk masing-masing bahasa. Untuk deskripsi parameter, lihat 万相-图生视频-基于首帧(2.1-2.6). Pemrosesan model video memerlukan 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 bergantung pada jumlah tugas dalam antrian dan kondisi jaringan. Harap tunggu hasilnya dengan sabar.

SDK Python

Saat menggunakan SDK Python untuk memproses file gambar, masukkan gambar melalui salah satu dari tiga metode berikut. Pilih metode yang paling sesuai dengan skenario Anda.
  1. URL publik: URL gambar yang dapat diakses publik melalui protokol HTTP atau HTTPS.
  2. Dikodekan Base64: Lewatkan string file yang dikodekan Base64 dalam format data:{MIME_type};base64,{base64_data}.
  3. Jalur file lokal: Mendukung jalur mutlak dan relatif. Lihat tabel berikut untuk format jalur file yang valid.

Sistem

Jalur file untuk dilewatkan

Contoh (jalur mutlak)

Contoh (jalur relatif)

Linux atau macOS

file://{jalur mutlak 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 menjalankan kode, instal atau tingkatkan SDK Python DashScope ke versi terbaru: pip install -U dashscope. Lihat Instal SDK.
  • Panggilan sinkron
  • Panggilan asinkron
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/Tingkatkan 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 mutlak dan relatif)
# Persyaratan format: file:// + jalur file
# Contoh (jalur mutlak):
# 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. Unduh gambar 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
    }
}

SDK Java

Saat menggunakan SDK Java untuk memproses file gambar, masukkan gambar melalui salah satu dari tiga metode berikut. Pilih metode yang paling sesuai dengan skenario Anda.
  1. URL publik: URL gambar yang dapat diakses publik melalui protokol HTTP atau HTTPS.
  2. Dikodekan Base64: Lewatkan string file yang dikodekan Base64 dalam format data:{MIME_type};base64,{base64_data}.
  3. Jalur file lokal: Hanya mendukung jalur mutlak. Lihat tabel berikut untuk format jalur file yang valid.

Sistem

Jalur file untuk dilewatkan

Contoh

Linux atau macOS

file://{jalur mutlak file}

file:///home/images/test.png

Windows

file:///{jalur mutlak file}

file:///D:/images/test.png

Kode contoh

Sebelum menjalankan kode, instal atau tingkatkan SDK Java DashScope ke versi terbaru. Lihat Instal SDK.
  • Panggilan sinkron
  • Panggilan asinkron
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 mutlak atau file:///+jalur mutlak)
    // 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 does not exist: " + filePath);
        }
        // Deteksi tipe MIME
        String mimeType = null;
        try {
            mimeType = Files.probeContentType(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Cannot detect file type: " + filePath);
        }
        if (mimeType == null || !mimeType.startsWith("image/")) {
            throw new IllegalArgumentException("Unsupported or unrecognized image format");
        }
        // Baca konten file dan encode
        byte[] fileBytes = null;
        try{
            fileBytes = Files.readAllBytes(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Cannot read file content: " + 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": "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
    }
}

Kode kesalahan

Jika pemanggilan model gagal dan mengembalikan pesan kesalahan, lihat Kode Kesalahan untuk informasi penanganannya. API ini juga memiliki kode status spesifik, 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

  • URL publik

  • Pengkodean Base64

  • URL publik

  • Pengkodean Base64

  • Jalur file lokal

  • URL publik

  • Pengkodean Base64

  • Jalur file lokal

Metode 1: Gunakan URL publik
  • Berikan alamat gambar yang dapat diakses publik. Protokol HTTP atau HTTPS didukung.
  • Contoh: https://xxxx/img.png
Metode 2: Gunakan pengkodean Base64 Konversi file gambar lokal menjadi string Base64 dan gabungkan ke dalam format data:{MIME_type};base64,{base64_data}.
  • Untuk kode konversi, lihat Kode contoh.
  • {MIME_type}: Jenis media gambar, 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 FAQ API Gambar.
Video Generation
Model Dunia
Audio
  • Pembuatan audio
Realtime API
Penyematan Teks
TokenPlan
Model production