All Products
Search
Document Center

Alibaba Cloud Model Studio:Referensi API Qwen-Image Edit

Last Updated:Sep 09, 2026

Qwen-Image Edit mendukung input dan output multi-gambar. Anda dapat mengedit teks dalam gambar, menambahkan, menghapus, atau memindahkan objek, mengubah pose subjek, mentransfer gaya, serta meningkatkan detail—semuanya melalui prompt bahasa alami.

Ikhtisar model

Gambar input 1

Gambar input 2

Gambar input 3

Gambar output (multiple)

image99

image98

image89

image100

imageout2

Prompt: Gadis dari Gambar 1 mengenakan gaun hitam dari Gambar 2 dan duduk dalam pose dari Gambar 3.

Nama modelDeskripsi modelSpesifikasi gambar output

qwen-image-2.0-pro Recommended

Saat ini memiliki kemampuan yang sama dengan qwen-image-2.0-pro-2026-04-22

Seri Pro dari model generasi dan pengeditan gambar Qwen menawarkan peningkatan kemampuan dalam rendering teks, tekstur realistis, dan kepatuhan semantik.

Untuk generasi gambar, lihat Qwen-Text to Image.

Resolusi gambar:

  • Dapat dikustomisasi: Jumlah total piksel harus antara 512×512 dan 2048×2048.
  • Bawaan: Jumlah total piksel mendekati 1024×1024, dengan rasio aspek mirip gambar input (atau gambar terakhir dalam input multi-gambar).

Format gambar: png

Jumlah gambar: 1–6

qwen-image-2.0-pro-2026-06-22 Recommended

qwen-image-2.0-pro-2026-04-22

qwen-image-2.0-pro-2026-03-03

qwen-image-2.0 Recommended

Saat ini memiliki kemampuan yang sama dengan qwen-image-2.0-2026-03-03

Ini adalah versi akselerasi dari model generasi dan pengeditan gambar Qwen, yang menyeimbangkan kinerja dan kecepatan respons.

Untuk generasi gambar, lihat Qwen-Text to Image.

qwen-image-2.0-2026-03-03 Recommended

qwen-image-edit-max

Saat ini memiliki kemampuan yang sama dengan qwen-image-edit-max-2026-01-16

Seri Max dari model pengeditan gambar Qwen menyediakan kemampuan lebih kuat dalam desain industri, penalaran geometris, dan konsistensi karakter.

Resolusi gambar:

  • Dapat dikustomisasi: Lebar dan tinggi masing-masing dapat berkisar dari [512, 2048] piksel.
  • Bawaan: Jumlah total piksel mendekati 1024×1024, dengan rasio aspek mirip gambar input (atau gambar terakhir dalam input multi-gambar).

Format gambar: png

Jumlah gambar: 1–6

qwen-image-edit-max-2026-01-16

qwen-image-edit-plus

Saat ini memiliki kemampuan yang sama dengan qwen-image-edit-plus-2025-10-30

Seri Plus dari model pengeditan gambar Qwen mendukung output multi-gambar dan resolusi kustom.

qwen-image-edit-plus-2025-12-15

qwen-image-edit-plus-2025-10-30

qwen-image-edit

Model ini mendukung pengeditan gambar tunggal dan fusi multi-gambar.

Resolusi gambar: Tidak dapat dikustomisasi. Aturan generasi sama dengan aturan Bawaan yang dijelaskan di atas.

Format gambar: png

Jumlah gambar: Tetap 1

CatatanSebelum memanggil API, periksa Daftar Model untuk melihat model mana saja yang didukung di setiap Wilayah.

Prasyarat

Sebelum melakukan pemanggilan, dapatkan Kunci API dan ekspor Kunci API sebagai Variabel lingkungan.

Untuk memanggil API menggunakan SDK, instal SDK DashScope. SDK tersedia untuk Python dan Java.

PentingWilayah China (Beijing) dan Singapura memiliki Kunci API dan Titik akhir permintaan yang terpisah. Keduanya tidak dapat saling dipertukarkan. Pemanggilan lintas-Wilayah menyebabkan kegagalan otentikasi atau error layanan.

Pemanggilan HTTP

Wilayah Singapura:POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Wilayah Beijing:POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Saat memanggil, ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.

Parameter permintaan

Pengeditan gambar tunggal

Contoh ini menggunakan model qwen-image-2.0-pro untuk menghasilkan dua gambar.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
    --data '{
        "model": "qwen-image-2.0-pro",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/fpakfo/image36.webp"
                        },
                        {
                            "text": "Generate an image that matches the depth map, following this description: A red, dilapidated bicycle is parked on a muddy path, with a dense primeval forest in the background."
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "n": 2,
            "negative_prompt": " ",
            "prompt_extend": true,
            "watermark": false,
            "size": "1536*1024"
        }
    }'

Fusi multi-gambar

Contoh ini menggunakan model qwen-image-2.0-pro untuk menghasilkan dua gambar.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
    --data '{
        "model": "qwen-image-2.0-pro",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/thtclx/input1.png"
                        },
                        {
                            "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/iclsnx/input2.png"
                        },
                        {
                            "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/gborgw/input3.png"
                        },
                        {
                            "text": "The girl from Image 1 is wearing the black dress from Image 2 and sitting in the pose from Image 3."
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "n": 2,
            "negative_prompt": " ",
            "prompt_extend": true,
            "watermark": false,
            "size": "1024*1536"
        }
    }'
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.

Body permintaan

model string (Wajib)

Nama model. Contoh: qwen-image-2.0-pro.

input object (Wajib)

Objek input, berisi bidang berikut:

Properti

messages array (Wajib)

Array konten permintaan. Hanya percakapan satu giliran yang didukung saat ini, sehingga array harus berisi tepat satu objek dengan properti role dan content.

Properti

rolestring (Wajib)

Peran pengirim pesan. Harus user.

contentarray (Wajib)

Konten pesan, terdiri dari satu hingga tiga gambar dalam format {"image": "..."} dan satu instruksi pengeditan dalam format {"text": "..."}.

Properti

image string (Wajib)

URL atau data yang diencode Base64 dari gambar input. Anda dapat memberikan satu hingga tiga gambar.

Untuk input multi-gambar, urutan gambar ditentukan oleh urutan array. Rasio aspek gambar output didasarkan pada gambar terakhir.

Persyaratan gambar:
  • Format gambar: JPG, JPEG, PNG, BMP, TIFF, WEBP, atau GIF.

    Gambar output dalam format PNG. Untuk GIF animasi, hanya frame pertama yang diproses.

  • Resolusi gambar: Untuk hasil terbaik, lebar dan tinggi gambar harus antara 384 dan 3072 piksel. Resolusi rendah dapat menghasilkan output buram, sedangkan resolusi tinggi meningkatkan waktu pemrosesan.

  • Ukuran gambar: Tidak lebih dari 10 MB.

Format input yang didukung
  1. URL publik:

    • Mendukung protokol HTTP dan HTTPS.
    • Contoh: https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/fpakfo/image36.webp.
  2. String gambar yang diencode Base64

textstring(Wajib)

Petunjuk positif yang menjelaskan konten, gaya, dan komposisi aliran yang diinginkan dalam gambar keluaran.

Mendukung Bahasa Mandarin Sederhana dan Inggris. Seri qwen-image-2.0 menerima hingga 1.300 token. Model lain menerima hingga 800 token. Sistem akan memotong token berlebih.

Catatan: Array content harus berisi tepat satu objek text. Jika tidak, akan terjadi error.

parameters object (Opsional)

Parameter tambahan untuk mengontrol pembuatan gambar.

Properti

n integer (Opsional)

Jumlah gambar output. Nilai default: 1.

Untuk model seri qwen-image-2.0, qwen-image-edit-max, atau qwen-image-edit-plus, Anda dapat memilih untuk menghasilkan satu hingga enam gambar.

Untuk qwen-image-edit, hanya satu gambar yang dapat dihasilkan.

negative_prompt string (Opsional)

Prompt negatif yang menjelaskan konten yang harus dikecualikan dari output. Gunakan ini untuk membatasi proses pembuatan gambar.

Mendukung bahasa Tiongkok dan Inggris. Maksimal 500 karakter. Setiap karakter Tiongkok, huruf, angka, atau simbol dihitung sebagai satu karakter. Karakter yang melebihi batas akan dipotong secara otomatis.

Contoh: low resolution, error, worst quality, low quality, disfigured, extra fingers, atau bad proportions.

size string (Opsional)

Resolusi gambar output dalam format width*height. Contoh: "1024*1536".

Model seri qwen-image-2.0:

  • Jumlah total piksel harus berada di antara 512×512 dan 2048×2048.
  • Secara default, jumlah total piksel mendekati 1024*1024, dengan rasio aspek yang mirip dengan gambar input (atau gambar terakhir pada input multi-gambar).

Model seri qwen-image-edit-max atau qwen-image-edit-plus:

  • Lebar dan tinggi masing-masing dapat berkisar antara [512, 2048] piksel.
  • Secara default, jumlah total piksel mendekati 1024*1024, dengan rasio aspek yang mirip dengan gambar input (atau gambar terakhir pada input multi-gambar).

Jika Anda menentukan parameter size, sistem akan menggunakan lebar dan tinggi yang ditentukan oleh size sebagai target dan menyesuaikan dimensi gambar output aktual ke kelipatan 16 terdekat. Misalnya, jika Anda menentukan 1033*1032, ukuran gambar output menjadi 1040*1024.

Resolusi yang direkomendasikan untuk rasio aspek umum

  • 1:1: 1024×1024, atau 1536×1536
  • 2:3: 768×1152, atau 1024×1536
  • 3:2: 1152×768, atau 1536×1024
  • 3:4: 960×1280, atau 1080×1440
  • 4:3: 1280×960, atau 1440×1080
  • 9:16: 720×1280, atau 1080×1920
  • 16:9: 1280×720, atau 1920×1080
  • 21:9: 1344×576, atau 2048×872

Model yang didukung: Semua model kecuali qwen-image-edit.

prompt_extend bool (Opsional)

Mengaktifkan penulisan ulang prompt secara cerdas. Nilai default: true. Saat diaktifkan, model mengoptimalkan prompt positif (text), sehingga secara signifikan meningkatkan hasil untuk prompt yang sederhana.

Model yang didukung: Semua model kecuali qwen-image-edit.

watermark bool (Opsional)

Menambahkan Watermark "Qwen-Image" di pojok kanan bawah. Nilai default: false.

seed integer (Opsional)

Bilangan acak seed. Rentang valid: [0, 2147483647].

Menetapkan nilai seed yang sama membantu menjaga stabilitas relatif pada output yang dihasilkan. Jika tidak ditentukan, algoritma akan menggunakan seed acak.

Catatan: Pembuatan gambar bersifat probabilistik. Bahkan dengan seed yang sama, hasilnya dapat berbeda antar pemanggilan.

Parameter respons

Tugas berhasil

Data tugas (status tugas dan URL gambar) hanya disimpan selama 24 jam, lalu secara otomatis di-purge. Segera simpan gambar yang dihasilkan.

{
        "output": {
            "choices": [
                {
                    "finish_reason": "stop",
                    "message": {
                        "role": "assistant",
                        "content": [
                            {
                                "image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
                            },
                            {
                                "image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
                            }
                        ]
                    }
                }
            ]
        },
        "usage": {
            "width": 1536,
            "image_count": 2,
            "height": 1024
        },
        "request_id": "bf37ca26-0abe-98e4-8065-xxxxxx"
    }

Tugas gagal

Jika tugas gagal karena alasan apa pun, informasi terkait akan dikembalikan. Anda dapat mengidentifikasi penyebab error menggunakan bidang code dan message. Untuk informasi lebih lanjut, lihat Error codes.

{
    "request_id": "31f808fd-8eef-9004-xxxxx",
    "code": "InvalidApiKey",
    "message": "Invalid API-key provided."
}

output object

Hasil generasi model.

Property

choices array

Daftar pilihan hasil.

Property

finish_reason string

Alasan tugas dihentikan. Mengembalikan nilai stop jika berhenti secara alami.

message object

Pesan yang dikembalikan oleh model.

Property

rolestring

Peran pesan. Nilainya tetap assistant.

contentarray

Isi pesan, yang berisi informasi gambar yang dihasilkan.

Property

image string

URL gambar yang dihasilkan dalam format PNG. Berlaku selama 24 jam. Segera unduh dan simpan gambarnya.

usage object

Penggunaan sumber daya untuk pemanggilan ini. Hanya dikembalikan jika berhasil.

Property

image_count integer

Jumlah gambar yang dihasilkan.

width integer

Lebar gambar yang dihasilkan dalam piksel.

height integer

Tinggi gambar yang dihasilkan dalam piksel.

request_id string

Identifikasi unik permintaan untuk pelacakan dan troubleshooting.

code string

Kode error. Hanya dikembalikan untuk permintaan yang gagal. Lihat Error codes.

message string

Pesan error detail. Hanya dikembalikan untuk permintaan yang gagal. Lihat Error codes.

Panggilan SDK DashScope

Nama parameter SDK sebagian besar konsisten dengan HTTP API. Struktur parameter dikemas berdasarkan fitur bahasa. Untuk daftar lengkap parameter, lihat Referensi API Qwen.

Panggilan SDK Python

Catatan

  • Kami menyarankan menginstal versi terbaru SDK Python DashScope untuk menghindari potensi error waktu proses. Untuk informasi selengkapnya, lihat Instal atau upgrade SDK.
  • Antarmuka asinkron tidak didukung.

Contoh permintaan

import json
import os
import dashscope
from dashscope import MultiModalConversation

# Berikut ini adalah URL untuk wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL berbeda-beda tergantung wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# Model mendukung satu hingga tiga gambar input.
messages = [
    {
        "role": "user",
        "content": [
            {"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/thtclx/input1.png"},
            {"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/iclsnx/input2.png"},
            {"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/gborgw/input3.png"},
            {"text": "Gadis dari Gambar 1 mengenakan gaun hitam dari Gambar 2 dan duduk dalam pose dari Gambar 3."}
        ]
    }
]

# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")

# Seri qwen-image-2.0, qwen-image-edit-max, dan qwen-image-edit-plus mendukung satu hingga enam gambar output. Contoh ini menghasilkan dua gambar.
response = MultiModalConversation.call(
    api_key=api_key,
    model="qwen-image-2.0-pro",
    messages=messages,
    stream=False,
    n=2,
    watermark=False,
    negative_prompt=" ",
    prompt_extend=True,
    size="1024*1536",
)

if response.status_code == 200:
    # Untuk melihat respons lengkap, hapus komentar pada baris berikut.
    # print(json.dumps(response, ensure_ascii=False))
    for i, content in enumerate(response.output.choices[0].message.content):
        print(f"URL gambar output {i+1}: {content['image']}")
else:
    print(f"Kode status HTTP: {response.status_code}")
    print(f"Kode error: {response.code}")
    print(f"Pesan error: {response.message}")
    print("Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/error-code")
import json
import os
import dashscope
from dashscope import MultiModalConversation
import base64
import mimetypes

# Berikut ini adalah URL untuk wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL berbeda-beda tergantung wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# --- Untuk encoding Base64 ---
# Format: data:{mime_type};base64,{base64_data}
def encode_file(file_path):
    mime_type, _ = mimetypes.guess_type(file_path)
    if not mime_type or not mime_type.startswith("image/"):
        raise ValueError("Format gambar tidak didukung atau tidak dikenali")

    try:
        with open(file_path, "rb") as image_file:
            encoded_string = base64.b64encode(
                image_file.read()).decode('utf-8')
        return f"data:{mime_type};base64,{encoded_string}"
    except IOError as e:
        raise IOError(f"Error membaca file: {file_path}, Error: {str(e)}")

# Dapatkan encoding Base64 gambar.
# Panggil fungsi encoding. Ganti "/path/to/your/image.png" dengan path ke file gambar lokal Anda. Jika tidak, kode tidak akan berjalan.
image = encode_file("/path/to/your/image.png")

messages = [
    {
        "role": "user",
        "content": [
            {"image": image},
            {"text": "Hasilkan gambar yang sesuai dengan depth map, mengikuti deskripsi berikut: Sebuah sepeda merah yang rusak diparkir di jalan berlumpur, dengan hutan purba yang lebat di latar belakang."}
        ]
    }
]

# Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")

# Seri qwen-image-2.0, qwen-image-edit-max, dan qwen-image-edit-plus mendukung satu hingga enam gambar output. Contoh ini menghasilkan dua gambar.
response = MultiModalConversation.call(
    api_key=api_key,
    model="qwen-image-2.0-pro",
    messages=messages,
    stream=False,
    n=2,
    watermark=False,
    negative_prompt=" ",
    prompt_extend=True,
    size="1536*1024",
)

if response.status_code == 200:
    # Untuk melihat respons lengkap, hapus komentar pada baris berikut.
    # print(json.dumps(response, ensure_ascii=False))
    for i, content in enumerate(response.output.choices[0].message.content):
        print(f"URL gambar output {i+1}: {content['image']}")
else:
    print(f"Kode status HTTP: {response.status_code}")
    print(f"Kode error: {response.code}")
    print(f"Pesan error: {response.message}")
    print("Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/error-code")
# Anda perlu menginstal requests untuk mengunduh gambar: pip install requests
import requests

def download_image(image_url, save_path='output.png'):
    try:
        response = requests.get(image_url, stream=True, timeout=300)  # Tetapkan timeout.
        response.raise_for_status()  # Bangkitkan exception jika kode status HTTP bukan 200.
        with open(save_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                f.write(chunk)
        print(f"Gambar berhasil diunduh ke: {save_path}")

    except requests.exceptions.RequestException as e:
        print(f"Gagal mengunduh gambar: {e}")

image_url = "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
download_image(image_url, save_path='output.png')

Contoh respons

URL gambar berlaku selama 24 jam. Unduh gambar segera.

input_tokens , output_tokens , dan characters bidang bersifat kompatibel. Nilainya saat ini tetap 0.

{
    "status_code": 200,
    "request_id": "fa41f9f9-3cb6-434d-a95d-4ae6b9xxxxxx",
    "code": "",
    "message": "",
    "output": {
        "text": null,
        "finish_reason": null,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/xxx.png?Expires=xxx"
                        },
                        {
                            "image": "https://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/xxx.png?Expires=xxx"
                        }
                    ]
                }
            }
        ],
        "audio": null
    },
    "usage": {
        "input_tokens": 0,
        "output_tokens": 0,
        "characters": 0,
        "height": 1536,
        "image_count": 2,
        "width": 1024
    }
}

Panggil menggunakan Java SDK

CatatanInstal DashScope Java SDK versi terbaru untuk menghindari error waktu proses. Lihat Instal atau upgrade SDK.

Contoh permintaan

import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.List;

public class QwenImageEdit {

    static {
        // Berikut ini adalah URL untuk Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL berbeda-beda tergantung wilayahnya.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
    // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan kunci API DashScope Anda: apiKey="sk-xxx".
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void call() throws ApiException, NoApiKeyException, UploadFileException, IOException {

        MultiModalConversation conv = new MultiModalConversation();

        // Model mendukung satu hingga tiga gambar input.
        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/thtclx/input1.png"),
                        Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/iclsnx/input2.png"),
                        Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/gborgw/input3.png"),
                        Collections.singletonMap("text", "Gadis dari Gambar 1 mengenakan gaun hitam dari Gambar 2 dan duduk dalam pose dari Gambar 3.")
                )).build();
        // Model seri qwen-image-2.0, qwen-image-edit-max, dan qwen-image-edit-plus mendukung satu hingga enam gambar output. Contoh ini menghasilkan dua gambar.
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("watermark", false);
        parameters.put("negative_prompt", " ");
        parameters.put("n", 2);
        parameters.put("prompt_extend", true);
        parameters.put("size", "1024*1536");

        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .apiKey(apiKey)
                .model("qwen-image-edit-max")
                .messages(Collections.singletonList(userMessage))
                .parameters(parameters)
                .build();

        MultiModalConversationResult result = conv.call(param);
        // Untuk melihat respons lengkap, hapus komentar pada baris berikut.
        // System.out.println(JsonUtils.toJson(result));
        List<Map<String, Object>> contentList = result.getOutput().getChoices().get(0).getMessage().getContent();
        int imageIndex = 1;
        for (Map<String, Object> content : contentList) {
            if (content.containsKey("image")) {
                System.out.println("URL gambar output " + imageIndex + ": " + content.get("image"));
                imageIndex++;
            }
        }
    }

    public static void main(String[] args) {
        try {
            call();
        } catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
            System.out.println(e.getMessage());
        }
    }
}
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.List;

public class QwenImageEdit {

    static {
        // Berikut ini adalah URL untuk Wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Bailian Anda. URL berbeda-beda tergantung wilayahnya.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // Kunci API untuk wilayah Singapura dan Beijing berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
    // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan kunci API DashScope Anda: apiKey="sk-xxx".
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void call() throws ApiException, NoApiKeyException, UploadFileException, IOException {

        // Ganti "/path/to/your/image.png" dengan path ke file gambar lokal Anda. Jika tidak, kode tidak dapat dijalankan.
        String image = encodeFile("/path/to/your/image.png");

        MultiModalConversation conv = new MultiModalConversation();

        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        Collections.singletonMap("image", image),
                        Collections.singletonMap("text", "Hasilkan gambar yang sesuai dengan depth map, mengikuti deskripsi berikut: Sebuah sepeda merah yang rusak diparkir di jalan berlumpur, dengan hutan purba yang lebat di latar belakang.")
                )).build();
        // Model seri qwen-image-2.0, qwen-image-edit-max, dan qwen-image-edit-plus mendukung satu hingga enam gambar output. Contoh ini menghasilkan dua gambar.
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("watermark", false);
        parameters.put("negative_prompt", " ");
        parameters.put("n", 2);
        parameters.put("prompt_extend", true);
        parameters.put("size", "1536*1024");

        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .apiKey(apiKey)
                .model("qwen-image-edit-max")
                .messages(Collections.singletonList(userMessage))
                .parameters(parameters)
                .build();

        MultiModalConversationResult result = conv.call(param);
        // Untuk melihat respons lengkap, hapus komentar pada baris berikut.
        // System.out.println(JsonUtils.toJson(result));
        List<Map<String, Object>> contentList = result.getOutput().getChoices().get(0).getMessage().getContent();
        int imageIndex = 1;
        for (Map<String, Object> content : contentList) {
            if (content.containsKey("image")) {
                System.out.println("URL gambar output " + imageIndex + ": " + content.get("image"));
                imageIndex++;
            }
        }
    }

    /**
     * Mengencode file menjadi string Base64.
     * @param filePath Path ke file.
     * @return String Base64 dalam format: data:{mime_type};base64,{base64_data}.
     */
    public static String encodeFile(String filePath) {
        Path path = Paths.get(filePath);
        if (!Files.exists(path)) {
            throw new IllegalArgumentException("File tidak ada: " + filePath);
        }
        // Deteksi jenis MIME.
        String mimeType = null;
        try {
            mimeType = Files.probeContentType(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Tidak dapat mendeteksi jenis file: " + filePath);
        }
        if (mimeType == null || !mimeType.startsWith("image/")) {
            throw new IllegalArgumentException("Format gambar tidak didukung atau tidak dikenali.");
        }
        // Baca konten file dan encode-kan.
        byte[] fileBytes = null;
        try{
            fileBytes = Files.readAllBytes(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Tidak dapat membaca konten file: " + filePath);
        }

        String encodedString = Base64.getEncoder().encodeToString(fileBytes);
        return "data:" + mimeType + ";base64," + encodedString;
    }

    public static void main(String[] args) {
        try {
            call();
        } catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
            System.out.println(e.getMessage());
        }
    }
}
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class ImageDownloader {
    public static void downloadImage(String imageUrl, String savePath) {
        try {
            URL url = new URL(imageUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setConnectTimeout(5000);
            connection.setReadTimeout(300000);
            connection.setRequestMethod("GET");
            InputStream inputStream = connection.getInputStream();
            FileOutputStream outputStream = new FileOutputStream(savePath);
            byte[] buffer = new byte[8192];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            inputStream.close();
            outputStream.close();

            System.out.println("Gambar berhasil diunduh ke: " + savePath);
        } catch (Exception e) {
            System.err.println("Pengunduhan gambar gagal: " + e.getMessage());
        }
    }

    public static void main(String[] args) {
        String imageUrl = "http://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx?Expires=xxx";
        String savePath = "output.png";
        downloadImage(imageUrl, savePath);
    }
}

Contoh respons

URL gambar berlaku selama 24 jam. Unduh gambar segera.

{
    "requestId": "46281da9-9e02-941c-ac78-be88b8xxxxxx",
    "usage": {
        "image_count": 2,
        "width": 1024,
        "height": 1536
    },
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
                        },
                        {
                            "image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxx"
                        }
                    ]
                }
            }
        ]
    }
}

Kode error

Jika pemanggilan model gagal dan mengembalikan pesan error, lihat Kode error untuk resolusi.

Penagihan dan pembatasan laju

  • Untuk kuota gratis model dan laju penagihan, lihat Model List.
  • Lihat Qwen-Image untuk detail pembatasan laju model.
  • Penagihan: Anda dikenai biaya per image yang berhasil dihasilkan. Panggilan yang gagal tidak dikenai biaya dan tidak mengurangi kuota gratis pengguna baru Anda.

FAQ

T: Bahasa apa saja yang didukung oleh model Qwen Image Editing?

J: Model ini saat ini mendukung Bahasa Tionghoa Sederhana dan Bahasa Inggris. Anda dapat mencoba bahasa lain, tetapi kinerjanya tidak dijamin.

T: Bagaimana cara melihat metrik pemanggilan model?

J: Satu jam setelah pemanggilan model selesai, buka halaman Monitoring (Singapura) atau Monitoring (Tiongkok (Beijing)) untuk melihat metrik seperti jumlah pemanggilan dan laju keberhasilan. Untuk informasi lebih lanjut, lihat Billing dan manajemen biaya.

T: Bagaimana cara mendapatkan daftar putih nama domain untuk penyimpanan gambar?

J: Gambar yang dihasilkan oleh model disimpan di OSS. API mengembalikan URL publik temporary. Untuk mengonfigurasi daftar putih firewall untuk URL unduhan ini, perhatikan hal berikut: Penyimpanan dasar dapat berubah secara dinamis. Topik ini tidak menyediakan daftar putih nama domain OSS yang tetap guna mencegah masalah akses akibat informasi yang kedaluwarsa. Jika Anda memiliki persyaratan pengendalian keamanan, hubungi account manager Anda untuk mendapatkan daftar nama domain OSS terbaru.