API teks-ke-gambar memungkinkan Anda membuat citra baru berdasarkan deskripsi teks. Alibaba Cloud Model Studio menyediakan dua seri model utama:
Qwen-Image: Unggul dalam rendering teks kompleks berbahasa Tiongkok dan Inggris.
Seri Wan: Menghasilkan citra realistis dan efek visual berkualitas fotografi.
Coba secara online: Singapura | Beijing
Kinerja model
Qwen-Image
Teks kompleks
| Paragraf panjang
| Tata letak kompleks
|
Pembuatan poster
| Desain ilustrasi
| Fotografi realistis
|
Wan
Fotografi potret
| Fotografi realistis
| Gaya lukisan
|
Generasi teks
| Desain poster
| Generasi set citra
|
Model yang didukung
Pemilihan model
Rendering teks kompleks (misalnya untuk poster dan kaligrafi): Gunakan
qwen-image-maxatauwan2.6-t2i.Adegan realistis dan gaya fotografi (untuk skenario umum): Gunakan model Wan, seperti
wan2.6-t2iatauwan2.5-t2i-preview.Resolusi output citra kustom: Gunakan model Wan, seperti
wan2.2-t2i-flash. Model ini mendukung kombinasi lebar dan tinggi apa pun dalam rentang 512 hingga 1440 piksel.Qwen-Image hanya mendukung lima resolusi tetap: 1664×928 (16:9), 928×1664 (9:16), 1328×1328 (1:1), 1472×1104 (4:3), dan 1104×1472 (3:4).
Mulai
Prasyarat
Sebelum memulai, buat kunci API dan ekspor sebagai variabel lingkungan. Jika Anda menggunakan SDK DashScope, instal SDK.
Kode contoh
Metode pemanggilan: Qwen-Image mendukung panggilan sinkron. Model qwen-image-plus dan qwen-image juga mendukung panggilan asinkron. Wan hanya mendukung panggilan asinkron.
Panggilan asinkron: API untuk kedua model kompatibel. Anda cukup mengubah parameter
modeluntuk beralih di antara keduanya. Misalnya, untuk menggunakan model Wan, atur model ke "wan2.2-t2i-flash".Panggilan sinkron: Hanya Qwen-Image yang mendukung metode ini. Untuk mempelajari cara melakukan panggilan sinkron, lihat Referensi API Qwen-Image.
Contoh berikut menggunakan metode panggilan asinkron. Kode contoh menggunakan qwen-image-plus sebagai contoh, tetapi pendekatan yang sama berlaku untuk model Wan.
SDK mengenkapsulasi logika pemrosesan asinkron, sehingga tampak sebagai panggilan sinkron di tingkat antarmuka. Artinya, satu permintaan menunggu hasil akhir. Sebaliknya, contoh curl menggunakan dua panggilan API asinkron terpisah: satu untuk mengirimkan tugas dan satu lagi untuk menanyakan hasilnya.
Python
Contoh permintaan
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os
import dashscope
# URL berikut untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
prompt = "Poster bergambar tangan bergaya penyembuhan yang menampilkan tiga anak anjing bermain bola di atas rumput hijau subur, dihiasi elemen dekoratif seperti burung dan bintang. Judul utama “Come Play Ball!” ditampilkan mencolok di bagian atas dengan font kartun biru tebal. Di bawahnya, subjudul “Come [Show Off Your Skills]!” muncul dalam font hijau. Gelembung ucapan menambah daya tarik bermain dengan teks: “Hehe, watch me amaze my little friends next!” Di bagian bawah, teks tambahan berbunyi: “We get to play ball with our friends again!” Palet warna berpusat pada hijau dan biru segar, diaksen dengan nada pink dan kuning cerah untuk menonjolkan suasana ceria dan kekanak-kanakan."
# Kunci API untuk wilayah Singapura dan Tiongkok (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 Model Studio Anda: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
print('----panggilan sinkron, harap tunggu sebentar----')
rsp = ImageSynthesis.call(api_key=api_key,
model="qwen-image-plus", # Saat ini, hanya model qwen-image-plus dan qwen-image yang mendukung panggilan API asinkron.
prompt=prompt,
negative_prompt=" ",
n=1,
size='1664*928',
prompt_extend=True,
watermark=False)
print(f'respons: {rsp}')
if rsp.status_code == HTTPStatus.OK:
# Simpan citra ke direktori saat ini.
for result in rsp.output.results:
file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
with open('./%s' % file_name, 'wb+') as f:
f.write(requests.get(result.url).content)
else:
print(f'panggilan_sinkron Gagal, status_code: {rsp.status_code}, kode: {rsp.code}, pesan: {rsp.message}')
Contoh respons
URL berlaku selama 24 jam. Unduh citra segera.
{
"status_code": 200,
"request_id": "a47b1a65-7041-4565-9068-xxxxxx",
"code": null,
"message": "",
"output": {
"task_id": "91093132-475e-43cf-b94e-xxxxxx",
"task_status": "SUCCEEDED",
"results": [
{
"url": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxxxxx",
"orig_prompt": "Poster bergambar tangan bergaya penyembuhan yang menampilkan tiga anak anjing bermain bola di atas rumput hijau subur, dihiasi elemen dekoratif seperti burung dan bintang. Judul utama “Come Play Ball!” ditampilkan mencolok di bagian atas dengan font kartun biru tebal. Di bawahnya, subjudul “Come [Show Off Your Skills]!” muncul dalam font hijau. Gelembung ucapan menambah daya tarik bermain dengan teks: “Hehe, watch me amaze my little friends next!” Di bagian bawah, teks tambahan berbunyi: “We get to play ball with our friends again!” Palet warna berpusat pada hijau dan biru segar, diaksen dengan nada pink dan kuning cerah untuk menonjolkan suasana ceria dan kekanak-kanakan.",
"actual_prompt": "Desain poster bergambar tangan bergaya masa kecil: Tiga anak anjing bermain dengan riang berinteraksi dengan bola berwarna-warni di atas hamparan rumput hijau subur. Elemen dekoratif halus termasuk burung yang beterbangan dan bintang berkelap-kelip tersebar di seluruh area. Di tengah atas, judul tebal bergaya kartun biru “Come Play Ball!” menonjol mencolok. Tepat di bawahnya, subjudul “Come [Show Off Your Skills]!” ditulis dengan huruf hijau ceria. Gelembung ucapan whimsical di dekat salah satu anak anjing berisi teks bermain: “Hehe, watch me amaze my little friends next!” Di tepi bawah, teks tambahan yang lebih kecil berbunyi: “We get to play ball with our friends again!” Palet warna berpusat pada hijau segar dan biru langit, diaksen dengan sentuhan pink cerah dan kuning cerah, meningkatkan suasana ceria dan kekanak-kanakan. Gaya mengevokasi ilustrasi tinta tangan nostalgia dengan tekstur lembut, garis halus, dan komposisi seperti buku cerita whimsical."
}
],
"submit_time": "2025-09-09 13:39:20.659",
"scheduled_time": "2025-09-09 13:39:20.717",
"end_time": "2025-09-09 13:39:45.233"
},
"usage": {
"image_count": 1
}
}Java
Contoh permintaan
// Copyright (c) Alibaba, Inc. and its affiliates.
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisListResult;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.task.AsyncTaskListParam;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;
import java.util.Map;
public class Text2Image {
static {
// URL berikut untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// Kunci API untuk wilayah Singapura dan Tiongkok (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 Model Studio Anda: static String apiKey = "sk-xxx"
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void basicCall() throws ApiException, NoApiKeyException {
String prompt = "Poster bergambar tangan bergaya penyembuhan yang menampilkan tiga anak anjing bermain bola di atas rumput hijau subur, dihiasi elemen dekoratif seperti burung dan bintang. Judul utama “Come Play Ball!” ditampilkan mencolok di bagian atas dengan font kartun biru tebal. Di bawahnya, subjudul “Come [Show Off Your Skills]!” muncul dalam font hijau. Gelembung ucapan menambah daya tarik bermain dengan teks: “Hehe, watch me amaze my little friends next!” Di bagian bawah, teks tambahan berbunyi: “We get to play ball with our friends again!” Palet warna berpusat pada hijau dan biru segar, diaksen dengan nada pink dan kuning cerah untuk menonjolkan suasana ceria dan kekanak-kanakan.";
Map<String, Object> parameters = new HashMap<>();
parameters.put("prompt_extend", true);
parameters.put("watermark", false);
parameters.put("negative_prompt", " ");
ImageSynthesisParam param =
ImageSynthesisParam.builder()
.apiKey(apiKey)
// Saat ini, hanya model qwen-image-plus dan qwen-image yang mendukung panggilan API asinkron.
.model("qwen-image-plus")
.prompt(prompt)
.n(1)
.size("1664*928")
.parameters(parameters)
.build();
ImageSynthesis imageSynthesis = new ImageSynthesis();
ImageSynthesisResult result = null;
try {
System.out.println("---panggilan sinkron, harap tunggu sebentar----");
result = imageSynthesis.call(param);
} catch (ApiException | NoApiKeyException e){
throw new RuntimeException(e.getMessage());
}
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args){
try{
basicCall();
}catch(ApiException|NoApiKeyException e){
System.out.println(e.getMessage());
}
}
}
Contoh respons
URL berlaku selama 24 jam. Unduh citra segera.
{
"request_id": "9f3044ba-528f-4606-8830-xxxxxx",
"output": {
"task_id": "fecf4c7f-3508-45f4-8454-xxxxxx",
"task_status": "SUCCEEDED",
"results": [
{
"orig_prompt": "Poster bergambar tangan bergaya penyembuhan yang menampilkan tiga anak anjing bermain bola di atas rumput hijau subur, dihiasi elemen dekoratif seperti burung dan bintang. Judul utama “Come Play Ball!” ditampilkan mencolok di bagian atas dengan font kartun biru tebal. Di bawahnya, subjudul “Come [Show Off Your Skills]!” muncul dalam font hijau. Gelembung ucapan menambah daya tarik bermain dengan teks: “Hehe, watch me amaze my little friends next!” Di bagian bawah, teks tambahan berbunyi: “We get to play ball with our friends again!” Palet warna berpusat pada hijau dan biru segar, diaksen dengan nada pink dan kuning cerah untuk menonjolkan suasana ceria dan kekanak-kanakan.",
"actual_prompt": "Desain poster bergambar tangan bergaya masa kecil: Tiga anak anjing bermain dengan riang berinteraksi dengan bola berwarna-warni di atas hamparan rumput hijau subur. Elemen dekoratif halus termasuk burung yang beterbangan dan bintang berkelap-kelip tersebar di seluruh area. Di tengah atas, judul tebal bergaya kartun biru “Come Play Ball!” menonjol mencolok. Tepat di bawahnya, subjudul “Come [Show Off Your Skills]!” ditulis dengan huruf hijau ceria. Gelembung ucapan whimsical di dekat salah satu anak anjing berisi teks bermain: “Hehe, watch me amaze my little friends next!” Di tepi bawah, teks tambahan yang lebih kecil berbunyi: “We get to play ball with our friends again!” Palet warna berpusat pada hijau segar dan biru langit, diaksen dengan sentuhan pink cerah dan kuning cerah, meningkatkan suasana ceria dan kekanak-kanakan. Gaya mengevokasi ilustrasi tinta tangan nostalgia dengan tekstur lembut, garis halus, dan komposisi seperti buku cerita whimsical.",
"url": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxxx"
}
]
},
"usage": {
"image_count": 1
}
}curl
Untuk panggilan asinkron, atur parameter header
X-DashScope-Asynckeenable.task_iduntuk tugas asinkron berlaku selama 24 jam. Setelah kedaluwarsa, status tugas berubah menjadiUNKNOWN.
Langkah 1: Kirim permintaan pembuatan tugas
Permintaan ini mengembalikan ID tugas (task_id).
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis \
-H 'X-DashScope-Async: enable' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen-image-plus",
"input": {
"prompt": "Poster bergambar tangan bergaya penyembuhan yang menampilkan tiga anak anjing bermain bola di atas rumput hijau subur, dihiasi elemen dekoratif seperti burung dan bintang. Judul utama “Come Play Ball!” ditampilkan mencolok di bagian atas dengan font kartun biru tebal. Di bawahnya, subjudul “Come [Show Off Your Skills]!” muncul dalam font hijau. Gelembung ucapan menambah daya tarik bermain dengan teks: “Hehe, watch me amaze my little friends next!” Di bagian bawah, teks tambahan berbunyi: “We get to play ball with our friends again!” Palet warna berpusat pada hijau dan biru segar, diaksen dengan nada pink dan kuning cerah untuk menonjolkan suasana ceria dan kekanak-kanakan."
},
"parameters": {
"negative_prompt":" ",
"size": "1664*928",
"n": 1,
"prompt_extend": true,
"watermark": false
}
}' Langkah 2: Tanyakan hasil berdasarkan ID tugas
Gunakan task_id dari langkah sebelumnya untuk memeriksa status tugas melalui API hingga task_status menjadi SUCCEEDED atau FAILED.
Ganti 86ecf553-d340-4e21-xxxxxxxxx dengan ID tugas aktual.
Kunci API bersifat spesifik wilayah. Dapatkan kunci API.
Untuk model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"Kemampuan utama
1. Mengikuti instruksi (prompt)
Parameter: input.prompt (wajib), input.negative_prompt (opsional).
prompt (positive prompt): Menggambarkan konten, subjek, adegan, gaya, pencahayaan, dan komposisi yang ingin Anda lihat dalam citra. Ini adalah parameter inti untuk mengontrol generasi teks-ke-gambar.
negative_prompt: Menggambarkan konten yang tidak ingin Anda lihat dalam citra, seperti "blurry" atau "extra fingers". Ini hanya digunakan untuk membantu mengoptimalkan kualitas generasi.
Kiat penulisan: Prompt terstruktur biasanya menghasilkan hasil lebih baik. Untuk kiat penulisan, lihat Panduan prompt teks-ke-gambar.
2. Aktifkan penulisan ulang prompt
Parameter: parameters.prompt_extend (bool, default true).
Fitur ini secara otomatis memperluas dan mengoptimalkan prompt pendek untuk meningkatkan kualitas citra. Mengaktifkan fitur ini menambahkan latensi 3 hingga 5 detik karena model besar digunakan untuk menulis ulang prompt.
Praktik terbaik:
Aktifkan saat prompt input Anda sederhana atau luas. Fitur ini dapat secara signifikan meningkatkan kualitas citra.
Nonaktifkan jika Anda ingin mengontrol detail halus, sudah memberikan deskripsi terperinci, atau sensitif terhadap latensi respons API. Untuk menonaktifkannya, atur eksplisit parameter
prompt_extendkefalse.
3. Atur resolusi output citra
Parameter: parameters.size (string), dalam format "width*height".
Qwen-Image: Hanya mendukung lima resolusi tetap berikut:
1664×928 (default): 16:9.
1472×1104: 4:3.
1328×1328: 1:1.
1104×1472: 3:4.
928×1664: 9:16.
Model Wan V2 (v2.0 dan seterusnya): Mendukung resolusi dengan lebar dan tinggi dari 512 hingga 1440 piksel, asalkan jumlah total piksel tidak melebihi 1440×1440. Resolusi umum:
1024×1024 (default): 1:1.
1440×810: 16:9.
810×1440: 9:16.
1440×1080: 4:3.
1080×1440: 3:4.
Tayang
Strategi toleransi kesalahan
Atasi pembatasan laju: Jika API mengembalikan kode kesalahan
Throttlingatau status HTTP 429, pembatasan laju telah dipicu, lihat Batas laju.Polling tugas asinkron: Saat memeriksa hasil tugas asinkron, gunakan strategi polling yang wajar, seperti polling setiap 3 detik selama 30 detik pertama lalu tingkatkan intervalnya. Ini membantu menghindari pemicuan pembatasan laju akibat permintaan terlalu sering. Tetapkan timeout akhir untuk tugas, misalnya 2 menit, dan anggap tugas gagal jika melebihi waktu tersebut.
Pencegahan risiko
Persistensi hasil: URL citra yang dikembalikan API berlaku selama 24 jam. Sistem produksi Anda harus segera mengunduh citra setelah Anda mendapatkan URL dan memindahkannya ke layanan penyimpanan persisten Anda sendiri, seperti Alibaba Cloud Object Storage Service (OSS).
Moderasi Konten: Semua input
promptdannegative_promptmenjalani moderasi konten. Jika input tidak sesuai, permintaan diblokir dan dikembalikan kesalahanDataInspectionFailed.Risiko hak cipta dan kepatuhan konten yang dihasilkan: Pastikan konten prompt Anda mematuhi peraturan perundang-undangan terkait. Menghasilkan konten yang mencakup merek dagang, potret selebriti, atau gambar IP berhak cipta dapat menimbulkan risiko pelanggaran. Anda bertanggung jawab untuk menilai dan menanggung segala kewajiban yang timbul.
Referensi API
Penagihan dan pembatasan laju
Untuk informasi tentang kuota gratis dan harga satuan model, lihat Generasi citra.
Aturan penagihan
Item yang ditagih: Anda ditagih berdasarkan jumlah citra yang berhasil dihasilkan dengan metode penagihan bayar sesuai pemakaian.
Rumus penagihan: Biaya = Harga satuan × Jumlah citra.
Urutan konsumsi: Kuota gratis dikonsumsi terlebih dahulu. Setelah kuota gratis Anda habis, metode penagihan bayar sesuai pemakaian digunakan secara default.
Anda dapat mengaktifkan opsi "Hanya kuota gratis" untuk mencegah biaya setelah kuota gratis Anda habis. Untuk informasi lebih lanjut, lihat Kuota gratis untuk pengguna baru.
Tidak dikenai biaya untuk kegagalan: Panggilan model yang gagal atau kesalahan pemrosesan tidak dikenai biaya atau menghabiskan kuota gratis.
Kuota gratis
Untuk informasi lebih lanjut tentang cara mengklaim, menanyakan, dan menggunakan kuota gratis, lihat Kuota gratis untuk pengguna baru.
Menanyakan penggunaan
Sekitar satu jam setelah panggilan model selesai, Anda dapat membuka halaman Observasi Model (Singapura) untuk melihat metrik seperti penggunaan, jumlah panggilan, dan tingkat keberhasilan.
Jika Anda menggunakan model di wilayah Tiongkok (Beijing), buka halaman Observasi Model untuk wilayah Tiongkok (Beijing).
Pembatasan laju
Untuk aturan pembatasan laju dan FAQ, lihat Batas laju.
Kode kesalahan
Jika panggilan gagal, lihat Pesan kesalahan untuk troubleshooting.
FAQ
T: Berapa lama URL citra berlaku? Bagaimana cara menyimpan citra saya secara permanen?
J: URL citra berlaku selama 24 jam. Anda harus segera mengunduh citra setelah mendapatkan URL dan menyimpannya ke penyimpanan persisten Anda sendiri, seperti server lokal atau Object Storage Service (OSS).
T: Panggilan API mengembalikan kesalahan DataInspectionFailed. Apa yang harus saya lakukan?
J: Kesalahan ini menunjukkan bahwa teks input memicu moderasi konten. Periksa dan modifikasi teks dalam prompt atau negative_prompt untuk menghapus konten yang berpotensi tidak sesuai, lalu coba ulang permintaan.
T: Haruskah saya mengaktifkan atau menonaktifkan parameter prompt_extend?
J: Biarkan diaktifkan (default) saat prompt Anda sederhana atau Anda ingin model lebih kreatif. Atur eksplisit ke false saat prompt Anda sudah sangat detail dan profesional, atau saat Anda memiliki persyaratan ketat terhadap latensi respons API.
T: Bagaimana cara meningkatkan kualitas teks yang dihasilkan dalam citra?
J: Jika bisnis Anda sangat bergantung pada generasi teks yang jelas dan akurat dalam citra, gunakan model qwen-image-plus. Model ini secara khusus dilatih untuk skenario tersebut.











