Aby z jednego zdjęcia produktu uzyskać trzy formaty reklamowe, zostawcie prawdziwy produkt jako wycięty element i wygenerujcie tylko otoczenie. Zróbcie osobne tło dla każdego formatu, połóżcie na wierzchu oryginalną torbę i wpiszcie nagłówek w edytorze. Model, który przerysowuje torbę, może wygiąć literę na etykiecie; kompozycja zachowuje sfotografowane piksele. Na podstawie naszych sprawdzeń z października 2026 r. katalogu na żywo i cenników wygenerowanie całego zestawu kosztuje około 0,21 $.
Przykładem jest kremowa torba kawy z grafitową etykietą, miedzianą złożoną zakładką i napisem „RIVER NOTES / WHOLE BEAN / 250 g”, dostarczona w 1:1 (1080 × 1080), 4:5 (1440 × 1800) i 9:16 (1080 × 1920).
Wybierzcie drogę według tego, co ma zostać dokładne
| Co ma pozostać dokładne | Droga | Koszt wszystkich trzech formatów |
|---|---|---|
| Etykieta, kształt i każdy wydrukowany wyraz | Wygenerujcie tła w GPT Image 2 i złóżcie oryginalną torbę | 0,2021 $, plus 0,0048 $ za wycięcie |
| To samo, a światło i cień mają podążać za torbą | Połóżcie torbę na płótnie, pozwólcie GPT Image 2 Edit malować wokół niej przez maskę, a potem połóżcie oryginał z powrotem na wierzchu | 0,2316 $, plus 0,0048 $ za wycięcie (po jednym obrazie źródłowym na format) |
| Torbę można oświetlić na nowo lub przerysować | Nano Banana Pro Edit ze zdjęciem na wejściu | 0,2004 $ (0,0668 $ za obraz; maksymalnie 0,3242 $ przy przejściu na trasę oficjalną) |
Wszystkie liczby dotyczą 2K, jakości średniej, jednego wyniku na format, bez powtórek. Do najprostszego wariantu użyjcie 2K: kwadrat 1K renderuje się w 1024 px, czyli poniżej płótna 1080. 1K kosztuje mniej więcej połowę (0,101 $ za zestaw), ale wtedy każdy plik wymaga powiększenia do 2K (0,012 $ za sztukę) i właśnie ten dodatkowy krok jest źródłem miękkości. Nano Banana Pro w 1K i 2K kosztuje tyle samo.
Jeśli potrzebujecie tylko nowego formatu i akceptujecie przerysowane krawędzie, przewodnik po outpainting opisuje drogę w jednym wywołaniu za 0,024 $ na obraz; jej wynik kończy się na 1536 px wzdłuż dłuższego boku, więc formaty 4:5 i 9:16 wymagałyby powiększenia.
Ustawcie trzy płótna
| Płótno | Torba | Miejsce na tekst | Dlaczego |
|---|---|---|---|
| 1080 × 1080 | Wyśrodkowana przy x=760, podstawa przy y=940, wysokość około 640 px | Lewa kolumna x=80–480, nagłówek przy y=250 | Zalecane przez Meta minimum dla 1:1 to 1080 × 1080 |
| 1440 × 1800 | Wyśrodkowana przy x=720, podstawa przy y=1600, wysokość około 930 px | Górny pas y=140–500 | Minimum Meta dla 4:5 w Facebook Feed to 1440 × 1800 (Instagram Feed podaje 1080 szerokości); 1080 × 1350 jest poniżej |
| 1080 × 1920 | Wyśrodkowana przy x=540, podstawa przy y=1230, wysokość około 680 px | Nagłówek y=300–470 | Utrzymuje torbę i tekst między y≈270 a y≈1250 |
W przypadku reklam 1:1 i 4:5 w Instagram Feed Meta prosi o pozostawienie dolnej i bocznych krawędzi wolnych od kluczowych elementów; około 100 px to bezpieczny margines. Dla 9:16 Meta prosi o pozostawienie wolnych góry, dołu i boków, a jej nałożenie strefy bezpiecznej w Ads Manager rysuje dokładną ramkę. Przewodniki, które to mierzą, podają marginesy na około 14 % u góry, 35 % u dołu i 6 % po bokach, czyli mniej więcej 270, 670 i 65 px przy 1080 × 1920. Dlatego torba w formacie story stoi wyżej, niż byście ją postawili na początku. Inne platformy stosują inne nałożenia, więc przed eksportem sprawdźcie podgląd każdego miejsca docelowego.
Kwadrat rozdziela tekst od produktu po lewej i prawej, pion formatu 4:5 układa tekst nad produktem, a format 9:16 trzyma wszystko w środkowym pasie. Skalujcie torbę równomiernie; rozciągnięcie jej do krawędzi płótna zmienia proporcje opakowania. Zachowajcie kąt ujęcia ze zdjęcia we wszystkich trzech wariantach: ujęcie od przodu nie pokaże tylnej ścianki ani szwu bocznego, a wygenerowany bok byłby makietą, a nie waszym opakowaniem.

Ilustracja trzech proporcji wygenerowana przez AI z torbą kawy w każdej; rzeczywiste layouty wynikają z tabeli współrzędnych powyżej.
Wypróbujcie w Playground
Wykonajcie te kroki w Playground; kod i droga z Agentem są niżej.
- Otwórzcie Background Remover, zostańcie w zakładce Playground w widoku Form (aby uruchomić, zalogujcie się kontem z zasilonym saldem), dodajcie zdjęcie torby w Input image i uruchomcie. Zapiszcie przezroczysty PNG.
- Otwórzcie GPT Image 2 text to image z już wpisanym promptem 1:1. Ustawcie Aspect ratio na
1:1, Resolution na2k, Quality namedium(loww trakcie ustawiania), a Output format napng, sprawdźcie szacowany koszt i uruchomcie. - Powtórzcie dla
4:5i9:16, podmieniając zdania o rozmieszczeniu na te z promptów poniżej, a potem złóżcie oryginalną torbę w edytorze.
Wytnijcie torbę tylko raz
Wyślijcie najlepsze zdjęcie, na którym widać całą torbę i da się odczytać etykietę, do Background Remover: jeden adres URL obrazu na wejściu, przezroczysty PNG w oryginalnym rozmiarze na wyjściu, 0,0048 $. Przewodnik po usuwaniu tła opisuje kontrole krawędzi. Zerknijcie na krawędź przy 200 % na ciemnym i jasnym tle i zachowajcie miedzianą fałdę oraz drobne cienie w zagłębieniach, zamiast spłaszczać torbę do prostokąta.
Trzymajcie plik oryginalny oddzielnie od wycięcia. Jeśli źródło ma twardy cień kontaktowy, zmiękczcie go lub usuńcie, zanim umieścicie torbę na nowej powierzchni; inaczej kompozycja pokaże dwa sprzeczne cienie. Jeśli zdjęcie jest za małe do zaplanowanego rozmiaru torby, zmniejszcie torbę w layoucie albo zdobądźcie większe zdjęcie. Ostrzejsza wygenerowana etykieta to nie etykieta drukowana.
Wygenerujcie tła
Otwórzcie GPT Image 2 text to image z ustawieniami z powyższych kroków w Playground i dobierzcie proporcje do każdego formatu. Wpiszcie w każdy prompt kierunek światła z waszego zdjęcia; przykładowa torba jest oświetlona z góry po lewej, tak jak w promptach poniżej. Dla 1:1 użyjcie:
Photographic still-life advertising background, empty warm stone tabletop in the lower third, softly lit charcoal wall, gentle window light from upper left, subtle warm copper accents far in the background. Leave the right half of the tabletop clear for a coffee bag to be composited later. Leave the left half of the wall quiet and low-detail for editable copy. No product, no lettering, no logo, no cup in the reserved product area.
Dla 4:5 zastąpcie zdania o rozmieszczeniu tymi:
Leave the lower centre clear for a coffee bag to be composited later; keep the upper third as a simple charcoal wall for editable copy.
Dla 9:16 użyjcie:
Vertical photographic background with a broad clear tabletop below the centre. Reserve the central lower-middle area for a coffee bag, with quiet charcoal wall above and uncluttered space below. No lettering, no product, no foreground props.
Nie umieszczajcie torby w tle, żeby żadne syntetyczne opakowanie nie konkurowało z oryginałem. Ziarna kawy można dodać później jako osobny element, z dala od etykiety i od krawędzi styku torby. Żeby oszczędzać podczas dostrajania promptu, uruchomcie go najpierw z Quality na low (około 0,024 $ za wszystkie trzy w 2K) i przejdźcie na medium, gdy puste strefy wylądują tam, gdzie ich potrzebuje layout. Porównajcie otrzymany rozmiar w pikselach z płótnem; jeśli jest za mały, powiększcie go poziomem 2K w Image Upscaler (0,012 $, zob. przewodnik po powiększaniu), zamiast rozciągać w edytorze.
Złóżcie torbę i ustawcie typografię
Umieśćcie wycięcie we współrzędnych podanych wyżej. Dodajcie miękki cień kontaktowy tuż pod podstawą (rozmytą ciemną elipsę w trybie multiply na około 30–40 %) i słabszy, szerszy cień odchodzący od światła. Jeśli torba jest oświetlona z prawej, a tło z lewej, wygenerujcie tło ponownie ze światłem z prawej, zamiast malować sprzeczne refleksy na drukowanym opakowaniu. Blada obwódka wokół torby to problem krawędzi wycięcia: pomniejszcie zaznaczenie o piksel lub dwa, zamiast cokolwiek generować od nowa.
Wpiszcie nagłówek i wezwanie do działania w edytorze. Zostawcie fakty o produkcie typu „250 g” dokładnie tak, jak je podano, i nie dokładajcie twierdzeń bez potwierdzenia.
Ten sam krok w Pillow, dla płótna 1080 × 1080 (torba jest ustawiana za podstawą, jak w tabeli):
from PIL import Image, ImageFilter
bg = Image.open("bg-1x1.png").convert("RGBA").resize((1080, 1080))
bag = Image.open("bag-cutout.png").convert("RGBA")
h = 640
bag = bag.resize((round(bag.width * h / bag.height), h), Image.LANCZOS)
x, base_y = 760 - bag.width // 2, 940
shadow = Image.new("L", bg.size, 0)
shadow.paste(90, (x + 20, base_y - 12, x + bag.width - 20, base_y + 12))
shadow = shadow.filter(ImageFilter.GaussianBlur(14))
dark = Image.new("RGBA", bg.size, (20, 12, 8, 255))
bg = Image.composite(dark, bg, shadow)
bg.alpha_composite(bag, (x, base_y - h))
bg.convert("RGB").save("ad-1x1.png")Zapiszcie wzorcowy plik warstwowy z osobnymi warstwami tła, produktu, cienia i tekstu i eksportujcie z niego każdy format. Nowa cena lub nowy nagłówek nie będą już kosztować nowej generacji i nie zmienią etykiety.
Niech model namaluje wokół torby
Jeśli kompozycja wygląda na doklejoną, pozwólcie GPT Image 2 Edit namalować otoczenie. Przezroczyste obszary maski wskazują, gdzie edytować, ale nie gwarantują niezmienności pikseli poza nimi; nałożenie oryginalnego produktu w kroku 4 zachowuje sfotografowaną etykietę w całości.
- Umieśćcie wycięcie na płaskim, neutralnym płótnie o tych samych proporcjach co wynik i wyeksportujcie je jako obraz źródłowy. W 2K model zwraca 2048 px wzdłuż dłuższego boku kwadratu, więc zbudujcie płótno w tym rozmiarze (dla 1:1: 2048 × 2048, a torba przeskalowana o ten sam współczynnik co w tabeli płócien), albo zmniejszcie wynik do rozmiaru płótna przed ostatnim nałożeniem.
- Wyeksportujcie samą warstwę produktu: torba nieprzezroczysta, wszystko inne przezroczyste, w tym samym rozmiarze w pikselach co źródło.
- Otwórzcie GPT Image 2 Edit w Playground. Dodajcie płótno w Images, otwórzcie Advanced parameters i dodajcie warstwę produktu w Mask (przezroczyste piksele są malowane od nowa, nieprzezroczyste zachowane). Ustawcie Aspect ratio zgodnie z płótnem, Resolution na
2ki Input Fidelity nahigh, a potem użyjcie promptu w rodzaju: „Paint a warm stone tabletop and charcoal wall around the existing coffee bag. Keep the bag unchanged. Soft window light from the left with a natural contact shadow under the bag. Leave the upper third as quiet wall for copy.” - Połóżcie oryginalne wycięcie na wyniku, na tych samych pikselach, wokół których model malował, zanim dodacie tekst, żeby etykieta pozostała sfotografowana, cokolwiek stanie się na krawędzi.
Model widzi torbę, gdy maluje, więc światło i cień mogą za nią podążać. Obraz źródłowy dodaje 0,0098 $ na żądanie: 0,0959 $ (1:1), 0,0778 $ (4:5) i 0,0579 $ (9:16) w 2K medium.
Kiedy sama torba może się zmienić
Wybierzcie Nano Banana Pro Edit, gdy chcecie zobaczyć torbę na nowo oświetloną w nowej scenie i możecie sprawdzić zmiany w jej fałdach, etykiecie i sylwetce. Dodajcie zdjęcie produktu w Images, ustawcie Resolution na 2k, wybierzcie Aspect ratio i użyjcie:
Place the coffee bag from the supplied photograph on a warm stone tabletop against a charcoal wall. Preserve its cream package, copper folded top, charcoal label and overall proportions. Soft window light from the left. Leave clear space above for copy. Do not add claims, extra logos or extra products.
Jeśli dołączycie zatwierdzony plik etykiety jako drugi obraz, wskażcie, który obraz jest torbą, a który etykietą. Poproszenie o zachowanie nie jest jego gwarancją. Jeśli „250 g” zmieni się w inną ilość, w finalnej kompozycji podmieńcie etykietę na zatwierdzony plik albo wróćcie do drogi z samym tłem.
Wywołajcie to z kodu
To samo wywołanie tła dla formatu 9:16 (zainstalujcie przez pip install spicyapi i ustawcie SPICY_API_KEY); potem krok z Pillow wyżej umieszcza torbę. Około 0,048 $ za obraz.
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
task = client.create_task(
model="openai/gpt-image-2/text-to-image",
input_data={
"prompt": "Vertical photographic background with a broad clear tabletop below the centre. Reserve the central lower-middle area for a coffee bag, with quiet charcoal wall above and uncluttered space below. No lettering, no product, no foreground props.",
"aspect_ratio": "9:16",
"resolution": "2k",
"quality": "medium",
"output_format": "png",
},
idempotency_key=str(uuid.uuid4()), # new key per new request; reuse only to retry the same one
)
print("Resume task:", task["taskId"], flush=True)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"Task {task['taskId']} ended as {final['state']}")
assets = output_assets(final)
if not assets or any(a.get("pending") or a.get("unavailable") or not a.get("url") for a in assets):
raise RuntimeError(f"Task {task['taskId']} has no ready output; check this task before a new run")
print(assets[0]["url"])Resztę opisuje dokumentacja SDK Python.
Albo niech to zrobi Agent
Zapiszcie pola input jako input.json, a potem uruchomcie npx @spicyapi/cli tasks create --model openai/gpt-image-2/text-to-image --input-file input.json --wait (CLI). Przy serwerze MCP wasz asystent wywołuje spicyapi_task_create, który pokazuje cenę do potwierdzenia, a następnie spicyapi_task_wait. Możecie też zainstalować Agent Skill poleceniem npx skills add spicyapi-ai/spicy-skill.
Naprawcie typowe problemy
| Problem | Poprawka |
|---|---|
| Etykieta wygląda miękko w docelowym rozmiarze | Zmniejszcie torbę albo użyjcie zdjęcia o wyższej rozdzielczości; zachowajcie oryginalne piksele etykiety. |
| Torba wydaje się unosić | Przenieście cień kontaktowy na rzeczywistą podstawę i zamknijcie każdą szczelinę. |
| Światło produktu i tła nie zgadzają się | Wpiszcie kierunek światła ze zdjęcia do promptu tła albo użyjcie edycji z maską. |
| Tekst nachodzi na miedzianą fałdę | Przenieście tekst do zarezerwowanej strefy; nie ściskajcie torby. |
| Wersja pionowa traci podstawę albo trafia w pas interfejsu | Odbudujcie ją z warstw we współrzędnych 9:16; nie kadrujcie kwadratu. |
| Wygenerowana scena zmienia tekst opakowania | Wróćcie do kompozycji z samym tłem albo przywróćcie etykietę z zatwierdzonego pliku. |
Przed oddaniem porównajcie etykietę każdego wyeksportowanego pliku w pełnym powiększeniu ze zdjęciem źródłowym.
W większości zadań generujcie wyłącznie tła i składajcie oryginalną torbę. Przechodźcie na edycję z maską, gdy kompozycja wygląda na doklejoną.








