FLUX 3 i ramki JSON: 8 układów graficznych z promptami
FLUX 3 Image układa grafikę z ramek podanych w JSON. Sprawdziłem to na ośmiu projektach i nałożyłem ramki na wyniki: w siedmiu wszystko trafiło na miejsce, ale litery i mapy wciąż zawodzą.

👁 118 przeczytań
- W teście 8 układów graficznych FLUX 3 Image poprawnie umieścił elementy w zadanych ramkach JSON w 7 przypadkach na 8.
- Format ramki to cztery liczby [y_min, x_min, y_max, x_max] na siatce 0-1000, gdzie współrzędne pionowe podaje się przed poziomymi.
- Koszt wygenerowania zestawu 8 obrazów 2K przez fal.ai wyniósł około 0,80 USD, czyli około 0,10 USD za obraz.
FLUX 3 Image przyjmuje zamiast zwykłego opisu polecenie w JSON, w którym każdy element dostaje własną ramkę na płótnie. Sprawdziłem to na ośmiu układach, które grafik robi na co dzień: okładce, komiksie, plakacie, karcie przepisu, landing page’u, infografice, flat layu i storyboardzie. W siedmiu z ośmiu elementy trafiły do swoich ramek.
Ramki zastępują opisy typu „w lewym górnym rogu”, które modele i tak traktują luźno. Niżej tłumaczę format, a przy każdym obrazie nakładam zadane ramki na wynik, żebyś sam ocenił precyzję. Spoiler: ramki działają lepiej niż litery.
Jak działa prompt z ramkami
Cały JSON wklejasz w zwykłe pole prompt. Ma dwie części:
- caption - opis całości: temat, styl, paleta, nastrój.
- elements - lista obiektów. Każdy ma
id(dowolna nazwa),bbox(ramka) idesc(co ma się w niej znaleźć). - bbox to cztery liczby
[y_min, x_min, y_max, x_max]na siatce od 0 do 1000, niezależnie od proporcji obrazu. Najpierw pion, potem poziom, czyli odwrotnie niż w większości programów graficznych. - Przeliczenie: element od 20 do 60 procent wysokości i od 10 do 50 procent szerokości to
[200, 100, 600, 500]. - Tekst do wyrenderowania wpisujesz w
descw cudzysłowie, poprzedzonym ukośnikiem wstecznym, bo to cudzysłów wewnątrz JSON.
Na podglądach poniżej białe przerywane prostokąty z etykietą id pokazują ramki, które zadałem.
Jak to zrobiłem
- Model FLUX 3 Image przez endpoint
blackforestlabs/flux-3/text-to-imagew fal.ai, 1 października 2026. - Rozdzielczość
2k, proporcje dopasowane do formatu (3:4 okładka, 2:3 plakat, 16:9 landing i storyboard), zapis do PNG. - Rozszerzanie promptu wyłączone, jedno generowanie na prompt, bez wybierania najlepszych wersji.
- Opisy po angielsku, bo FLUX rozumie polski, ale angielski daje bardziej powtarzalne wyniki. Polskie napisy podawałem w cudzysłowie.
- Zgodność z ramkami mierzyłem, nakładając ramki na oryginał w pełnej rozdzielczości.
- Czas: od 74 do 125 sekund na obraz. Koszt według cennika fal.ai za megapiksel (0,024 USD/Mpx w promocji): około 0,10 USD za obraz 2K, czyli około 0,80 USD za zestaw.
1. Okładka magazynu KOD
mastheadportraitheadlinebadge{
"caption": "Cover of a Polish technology magazine, clean modern design, photo of a woman wearing AR glasses",
"elements": [
{
"id": "masthead",
"bbox": [30, 60, 170, 940],
"desc": "large magazine title text \"KOD\" in bold red letters"
},
{
"id": "portrait",
"bbox": [180, 150, 1000, 850],
"desc": "portrait of a woman wearing AR glasses looking at the camera"
},
{
"id": "headline",
"bbox": [700, 50, 860, 520],
"desc": "white headline text \"AI W TWOIM DOMU\""
},
{
"id": "badge",
"bbox": [200, 700, 330, 950],
"desc": "yellow circular badge with text \"10/2026\""
}
]
}- masthead - tak, „KOD” wypełnia ramkę od krawędzi do krawędzi.
- portrait - tak, ramiona wychodzą poza boki, co przy portrecie jest naturalne.
- headline - tak, drugi wiersz kończy się dokładnie na prawej krawędzi.
- badge - tak, koło dosunięte do prawej strony ramki.
Wszystkie trzy napisy są poprawne: „KOD”, „AI W TWOIM DOMU” i „10/2026”. Ramki plakietki i portretu się nakładają, a model rozwiązał to sensownie: plakietka leży na tle obok głowy i nie zasłania twarzy. Okulary AR to zwykłe okulary z dwoma modułami kamer, więc „AR” jest zaznaczone symbolicznie. Makieta okładki gotowa w jednym podejściu.
2. Komiks o robocie piekarzu
p1p2p3p4{
"caption": "Four-panel comic page in a clean ligne claire style about a robot learning to bake bread in a Polish bakery",
"elements": [
{
"id": "p1",
"bbox": [20, 20, 480, 480],
"desc": "panel 1: robot reading a recipe book"
},
{
"id": "p2",
"bbox": [20, 520, 480, 980],
"desc": "panel 2: robot covered in flour"
},
{
"id": "p3",
"bbox": [520, 20, 980, 480],
"desc": "panel 3: smoke coming out of the oven, robot shocked"
},
{
"id": "p4",
"bbox": [520, 520, 980, 980],
"desc": "panel 4: robot proudly holding a perfect loaf, speech bubble \"UDAŁO SIĘ!\""
}
]
}- p1 - tak, robot czyta książkę z przepisami.
- p2 - tak, robot w chmurze mąki.
- p3 - tak, dym z pieca i przerażony robot.
- p4 - tak, bochenek i dymek z napisem.
Cztery panele są dokładnie tam, gdzie je ustawiłem, z równymi odstępami. Historia ma ciągłość: ten sam robot, ta sama piekarnia, te same kafle. Dymek „UDAŁO SIĘ!” ma poprawne Ł i Ę. Styl to raczej kreskówka z kreskowaniem niż czysta ligne claire, a w dwóch pierwszych panelach leży wielki widelec bez sensu. Do ligne claire dopisz w caption flat colors, uniform line weight, no hatching.
3. Plakat koncertu jazzowego
saxophonetitledatemoon{
"caption": "Jazz concert poster, mid-century modern style, deep blue and mustard",
"elements": [
{
"id": "saxophone",
"bbox": [120, 200, 700, 800],
"desc": "stylized saxophone illustration"
},
{
"id": "title",
"bbox": [730, 80, 860, 920],
"desc": "text \"JAZZ NA STARÓWCE\" in bold geometric letters"
},
{
"id": "date",
"bbox": [880, 80, 960, 500],
"desc": "text \"14.11 · Gdańsk\""
},
{
"id": "moon",
"bbox": [40, 680, 220, 900],
"desc": "a mustard yellow moon"
}
]
}- saxophone - tak, czara wychodzi kilka procent pod dolną krawędź.
- title - tak, napis wypełnia ramkę na całą szerokość.
- date - tak, ale z błędem w nazwie miasta.
- moon - tak, choć księżyc jest wysunięty w lewo, za szyjkę saksofonu.
Kompozycja jest dokładna, a granat z musztardą [zdanie urwane - brak orzeczenia/dokończenia] to czysty mid-century. Tytuł „JAZZ NA STARÓWCE” ma poprawne Ó. Błąd siedzi w dacie: zamiast „Gdańsk” model napisał „Gdánsk”, z akcentem nad a i bez ń. To najbardziej podstępny typ pomyłki, bo na pierwszy rzut oka wygląda poprawnie. Przed drukiem czytaj każdy napis litera po literze.
4. Karta przepisu na pierogi ruskie
phototitleingredientstime{
"caption": "Recipe card for Polish pierogi, editorial food design on cream paper",
"elements": [
{
"id": "photo",
"bbox": [40, 40, 520, 960],
"desc": "top-down photo of a plate of pierogi with fried onion"
},
{
"id": "title",
"bbox": [560, 40, 660, 960],
"desc": "title text \"PIEROGI RUSKIE\""
},
{
"id": "ingredients",
"bbox": [680, 40, 960, 460],
"desc": "small list of ingredients with icons"
},
{
"id": "time",
"bbox": [700, 560, 820, 960],
"desc": "clock icon with text \"90 min\""
}
]
}- photo - tak, zdjęcie schodzi o około 2 procent poniżej ramki.
- title - tak.
- ingredients - tak, lista z ikonami mieści się w całości.
- time - tak, zegar i „90 min” wyśrodkowane w ramce.
„PIEROGI RUSKIE” i „90 min” są poprawne, a lista ma sensowne ilości: 300 g mąki, 500 g ziemniaków, 250 g twarogu. Lista wyszła po angielsku, bo opis elementu był po angielsku; po polsku zostało tylko słowo „twaróg”. Jeśli chcesz polskiej listy, wpisz składniki w desc w cudzysłowie. Część ikon nie pasuje (sól jako pudełko, masło jako kropla), a farsz prześwituje ciemnozielono jak szpinak, a nie jak ziemniaki z twarogiem.
5. Landing page aplikacji budżetowej
headlinebuttonphonelogos{
"caption": "Website hero section mockup for a Polish budgeting app, clean UI design, light theme",
"elements": [
{
"id": "headline",
"bbox": [200, 60, 420, 520],
"desc": "headline text \"Twoje pieniądze pod kontrolą\""
},
{
"id": "button",
"bbox": [500, 60, 590, 300],
"desc": "green button with text \"Pobierz za darmo\""
},
{
"id": "phone",
"bbox": [80, 600, 980, 900],
"desc": "smartphone showing a colorful spending chart"
},
{
"id": "logos",
"bbox": [820, 60, 900, 520],
"desc": "row of grey rating stars and text \"4,8 w Google Play\""
}
]
}- headline - tak.
- button - tak, przycisk wypełnia ramkę.
- phone - tak.
- logos - tak, gwiazdki i ocena w jednym wierszu.
Przycisk „Pobierz za darmo” i „4,8 w Google Play” są poprawne, a rozmieszczenie wygląda jak z prawdziwego projektu. Nagłówek ma jednak literówkę: „piendędze” zamiast „pieniądze”. Ekran telefonu to sieczka („Acccount”, „Etŕsjenizyopy oxz”). Na makietę dla klienta trzeba poprawić nagłówek edycją, a ekran aplikacji podmienić prawdziwym zrzutem.
6. Infografika: wybrzeże w 5 dni
Nie przepłacaj za te subskrypcje
Prowadzę sklep z rocznymi dostępami do narzędzi AI - te same konta, o których piszę wyżej, tylko taniej niż w cenniku producenta.
titlemapicons{
"caption": "Illustrated travel infographic of the Polish Baltic coast, flat vector style",
"elements": [
{
"id": "title",
"bbox": [30, 60, 140, 940],
"desc": "title text \"WYBRZEŻE W 5 DNI\""
},
{
"id": "map",
"bbox": [170, 60, 600, 940],
"desc": "simplified map of the coast from Świnoujście to Hel with a dotted route"
},
{
"id": "icons",
"bbox": [630, 60, 960, 940],
"desc": "five small illustrated stops: lighthouse, pier, crane, dunes, seal, each with a day number 1-5"
}
]
}- title - tak, napis wychodzi o kilka procent poza prawą krawędź.
- map - tak.
- icons - tak, ale skrajne karty wystają o kilka procent z obu stron.
„WYBRZEŻE W 5 DNI” ma poprawne Ż, a pięć kart z latarnią, molo, żurawiem, wydmami i fokiem jest ponumerowanych od 1 do 5. Żuraw przypomina nawet ten gdański. Mapa to jednak katastrofa: „Gorniroim Island” zamiast Bornholmu, „Slowiriski National Park”, nieistniejąca „Krakowa”, „Kolobrzag” i „Hela Penilisula”, a numeracja na trasie skacze 1, 2, 3, 4, 5, 6, 1, 3, 9, 10. Do infografik z mapą podawaj mniej nazw, każdą jako osobny element z własną ramką i tekstem w cudzysłowie.
7. Flat lay: zestaw podróżnika
camerapassportmapcoffeesunglasses{
"caption": "Top-down flat lay on a white marble table, photographer's travel kit",
"elements": [
{
"id": "camera",
"bbox": [100, 100, 450, 500],
"desc": "a vintage film camera"
},
{
"id": "passport",
"bbox": [120, 600, 400, 900],
"desc": "a passport with a boarding pass"
},
{
"id": "map",
"bbox": [500, 80, 900, 600],
"desc": "a folded paper map of Kraków"
},
{
"id": "coffee",
"bbox": [650, 650, 900, 900],
"desc": "a cup of black coffee"
},
{
"id": "sunglasses",
"bbox": [520, 620, 640, 900],
"desc": "sunglasses"
}
]
}- camera - tak.
- passport - tak, karta pokładowa wystaje lekko w dół.
- map - tak.
- coffee - tak, ślad po kubku leży już poza ramką.
- sunglasses - tak.
Model dodał od siebie trafne szczegóły: na karcie pokładowej jest kod lotniska „KRK”, a mapa ma podpisy „KRAKÓW”, „STARE MIASTO” i „WISŁA”. Geografia jest jednak błędna: Wawel leży na mapie na południe od Wisły, a w rzeczywistości stoi na jej lewym brzegu, tuż przy Starym Mieście. Paszport ma dwugłowego orła przypominającego godło Rosji, a aparat zmyśloną markę „Krizow”. Dopisz burgundy Polish passport with a single-headed eagle.
8. Storyboard: pościg w zajezdni
f1f2f3notes{
"caption": "Film storyboard sheet with three frames drawn in pencil and marker, scene of a chase through a Warsaw tram depot",
"elements": [
{
"id": "f1",
"bbox": [100, 30, 600, 320],
"desc": "frame 1: wide shot of a man running between trams"
},
{
"id": "f2",
"bbox": [100, 350, 600, 650],
"desc": "frame 2: close-up of his feet jumping over rails"
},
{
"id": "f3",
"bbox": [100, 680, 600, 970],
"desc": "frame 3: tram lights blinding the camera"
},
{
"id": "notes",
"bbox": [660, 30, 950, 970],
"desc": "handwritten Polish notes under the frames: \"UJĘCIE 1\", \"UJĘCIE 2\", \"UJĘCIE 3\""
}
]
}- f1, f2, f3 - nie, zamiast trzech kadrów obok siebie są trzy poziome pasy jeden pod drugim.
- notes - nie, notatki trafiły do kolumny po prawej zamiast do pasa na dole.
Treść kadrów się zgadza: biegnący mężczyzna, stopy nad szynami, oślepiające światła tramwaju. Podpisy „UJĘCIE 1”, „UJĘCIE 2” i „UJĘCIE 3” mają poprawne Ę, ale stoją pod kadrami, a właściwe notatki to pseudopolska sieczka. Podejrzewam, że wzorzec „storyboard sheet” był silniejszy niż ramki. W takiej sytuacji dopisz w caption three frames side by side in one row, notes in a strip below albo usuń słowo, które kojarzy się z gotowym układem.
Podsumowanie: ramki i napisy
| Przykład | Ocena 1-5 | Elementy w ramkach | Uwagi |
|---|---|---|---|
| Okładka magazynu KOD | 5 | 4 z 4 | wszystko w ramkach, napisy bez błędu |
| Komiks o robocie piekarzu | 5 | 4 z 4 | panele co do ramki, dymek poprawny |
| Plakat koncertu jazzowego | 4 | 4 z 4 | „Gdánsk” zamiast „Gdańsk” |
| Karta przepisu na pierogi ruskie | 4,5 | 4 z 4 | lista po angielsku, ciemny farsz |
| Landing page aplikacji budżetowej | 3,5 | 4 z 4 | „piendędze” w nagłówku |
| Infografika: wybrzeże w 5 dni | 3 | 3 z 3 | mapa pełna zmyślonych nazw |
| Flat lay: zestaw podróżnika | 4,5 | 5 z 5 | Wawel po złej stronie Wisły |
| Storyboard: pościg w zajezdni | 2 | 0 z 4 | układ zignorowany |
Średnia 3,9. Zgodność z ramkami jest bardzo wysoka: w siedmiu układach na osiem wszystkie elementy trafiły na swoje miejsce, z odchyleniem zwykle od 2 do 5 procent. Oceny obniżają napisy („piendędze”, „Gdánsk”), zmyślone nazwy na mapie i jeden storyboard, w którym model postawił na własny układ.
Najczęstsze błędy
- Ramki trzymają, litery nie zawsze. Literówka w nagłówku landingu i „Gdánsk” na plakacie.
- Tekst niepodany dosłownie to sieczka. Ekran aplikacji, notatki pod storyboardem i nazwy na mapie.
- Lekkie wychodzenie poza ramkę. Zdjęcie, saksofon, tytuł i karty infografiki przekraczały granice o kilka procent.
- Silny wzorzec gatunku wygrywa. „Storyboard sheet” dał klasyczny układ z kadrami jeden pod drugim.
- Język desc decyduje o języku tekstu. Lista składników opisana po angielsku wyszła po angielsku.
- Geografia na mapach. Wawel po złej stronie Wisły, zmyślone miejscowości na wybrzeżu.
Inne galerie i testy FLUX 3
- Tapety 4K z FLUX 3: 12 tapet na komputer i telefon
- Wizualizacje wnętrz: 10 aranżacji z promptami
- Reklamy i packshoty: 10 grafik produktowych
- Test 4K pod lupą: FLUX 3 kontra sześć modeli
- Test ramek: jak dokładnie FLUX 3 trzyma kompozycję
- Pięć zmian jednym poleceniem: edycja w FLUX 3
- FLUX 3 Image - premiera, ceny i pierwsze wrażenia
FAQ
Czy ramki w FLUX 3 mogą na siebie nachodzić?
Mogą. Na okładce ramka plakietki zachodziła na ramkę portretu, a model położył plakietkę na tle obok głowy, nie na twarzy.
Dlaczego współrzędne zaczynają się od y, a nie od x?
Taki format przyjął Black Forest Labs: [y_min, x_min, y_max, x_max]. Najczęstszy błąd przy pierwszych próbach to zamiana kolejności, która obraca układ.
Czy siatka 0-1000 zależy od proporcji obrazu?
Nie. W obu osiach zawsze jest od 0 do 1000, więc ramka [0, 0, 500, 500] to lewa górna ćwiartka zarówno w kwadracie, jak i w formacie 16:9.
Czy mogę pisać desc i caption po polsku?
Tak, FLUX 3 rozumie polski. Ja piszę po angielsku dla powtarzalności, ale napisy, które mają się pojawić na obrazie, zawsze podaję po polsku w cudzysłowie.
Google · Twoje źródłaPromptowy wyżej w Twoim Google - jednym kliknięciemDodaj do preferowanych źródeł →Źródła
Cały tydzień w AI, w jednym mailu
Wybrane premiery, narzędzia i analizy. Raz w tygodniu, prosto do skrzynki.
Zapisz się za darmo →Najczęstsze pytania
Jak wygląda format promptu z ramkami JSON w FLUX 3 Image?
Prompt składa się z dwóch części: caption, czyli opisu całości, oraz elements, czyli listy obiektów z polem id, bbox i desc. Pole bbox przyjmuje cztery liczby [y_min, x_min, y_max, x_max] na siatce od 0 do 1000, niezależnie od proporcji obrazu.
Czy FLUX 3 Image poprawnie renderuje polskie znaki w napisach?
W większości przypadków tak - napisy takie jak "KOD", "UDAŁO SIĘ!", "JAZZ NA STARÓWCE" czy "PIEROGI RUSKIE" wyszły poprawnie. Zdarzają się jednak błędy, jak "Gdánsk" zamiast "Gdańsk" czy "piendędze" zamiast "pieniądze", dlatego każdy napis trzeba sprawdzić litera po literze.
Ile czasu zajmuje generowanie jednego obrazu 2K w FLUX 3 Image przez fal.ai?
Czas generowania wynosił od 74 do 125 sekund na obraz. Testy przeprowadzono 1 października 2026 przez endpoint blackforestlabs/flux-3/text-to-image w fal.ai.
Czy ramki JSON w FLUX 3 działają lepiej niż opisy słowne pozycji elementów?
Według przeprowadzonego testu tak - ramki działają lepiej niż opisy typu "w lewym górnym rogu", które modele traktują luźno. W 7 na 8 testowanych układów elementy trafiły dokładnie do zadanych ramek.
