Qwen Image 2 od Alibaby zasłużył na uwagę tym, jak porządnie rozkłada tekst na grafice. Slajd z tytułem i kilkoma punktami, prosta infografika albo komiks z dymkami wychodzą z niego czytelnie. Ten sam model poprawia też gotowe zdjęcie lub grafikę, więc przyda się osobom, które co tydzień robią materiały do social mediów.
Co z nim zrobisz
- Slajd do prezentacji z nagłówkiem i trzema krótkimi punktami.
- Infografikę na LinkedIn z liczbą, podpisem i prostą ikoną.
- Kadr komiksu z dymkiem do posta na Instagramie.
- Poprawkę gotowej grafiki: nowy napis, inny kolor tła, zmieniony detal.
Ustawienia w praktyce
- Prompt: do 800 znaków. Zacznij od układu, potem wpisz treść napisów, na końcu styl.
- Napisy dawaj w cudzysłowie i ogranicz się do kilku krótkich linijek.
- Generowanie z tekstu: 5 proporcji (1:1, 3:4, 4:3, 9:16, 16:9), domyślnie 16:9.
- Edycja: dodaj jedno zdjęcie w
image_url- sama jego obecność przełącza tryb. Dopiero wtedy działają też formaty 2:3, 3:2 i 21:9. seedpozwala powtórzyć wynik przy drobnych zmianach promptu. Każde zapytanie daje jeden obraz.
Prompt na start
Prosty slajd 16:9, białe tło, granatowy nagłówek "3 błędy w kampanii", pod nim trzy punkty: "Zły budżet", "Brak testów", "Słaby CTA", mała ikona tarczy obok każdego punktu, minimalistyczny stylZmień nagłówek i punkty na swoje, ale trzymaj się kilku krótkich haseł, żeby zmieścić się w 800 znakach.
Pytania
Ile kosztuje grafika z Qwen Image 2?
0,451 zł za obraz, z VAT. Za generację zakończoną błędem płacisz 0 zł.
Mój prompt jest za długi. Co wybrać?
Gdy chcesz opisać całą stronę z wieloma blokami tekstu, przejdź na Qwen Image 3.0 albo Qwen Image 3.0 Pro, które przyjmują znacznie dłuższe opisy.
Dlaczego proporcje 21:9 dają błąd?
Formaty 2:3, 3:2 i 21:9 są dostępne tylko w trybie edycji, czyli razem ze zdjęciem w image_url. Przy generowaniu od zera wybierz jeden z pięciu podstawowych. Szczegóły pól są w dokumentacji.
Qwen Image 2 w twoim kodzie
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-image-2",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "16:9"
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "qwen-image-2",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "16:9"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "qwen-image-2",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "16:9"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Pola wejściowe
| Parametr | Typ | Dozwolone | Domyślnie |
|---|---|---|---|
prompt * | string | ≤ 800 znaków | |
aspect_ratio | string | 1:1 3:4 4:3 9:16 16:9 2:3 3:2 21:9 | 16:9 |
image_url | string | ||
seed | integer |
Tę listę w JSON-ie dostaniesz z GET /v1/models/qwen-image-2.























