Krótka odpowiedź: wyślij jeden obraz i otrzymaj naprawiony podkład (obraz z usuniętymi wyodrębnionymi elementami i wypełnionym tłem) plus nawet 16 przezroczystych warstw PNG, po jednej na element. Każda warstwa ma name i boundingBox, więc warstwy układają się z powrotem na swoich miejscach. SpicyAPI uruchamia to na Seedream 5.0 Flash za 0,026 $ za obraz wyjściowy w dowolnej rozdzielczości oraz na Seedream 5.0 Pro za 0,042 $ za obraz (1K, 1.5K) lub 0,084 $ (2K, auto). Zacznij od Flasha: jest tańszy i w naszych testach ukończył wszystkie kategorie z wejściami dla dorosłych. Pro jest droższy i odmawia obrazów intymnej sceny między dwiema dorosłymi osobami.
W 30 sekund
- Wynik: podkład pod indeksem 0, potem warstwy. Warstwy to zawsze przezroczyste PNG;
output_formatzmienia tylko podkład (JPEG lub PNG). - Limit i rozliczenie: najwyżej 17 obrazów na uruchomienie (podkład plus 16 warstw), a płacisz za zwrócone obrazy, w tym podkład. Gdy zadanie zostaje przyjęte, blokujemy cenę za 17 obrazów i zwracamy różnicę, gdy tylko poznamy rzeczywistą liczbę.
- Prompt opcjonalny. Jeśli go nie podasz, model wybierze główne elementy; jeśli napiszesz, rozdzieli to, co nazwałeś. Nie ma ustawienia liczby warstw.
- Nie jest natychmiastowe: uruchomienie trwa od około 45 do 100 sekund na obu modelach.
- Skopiuj pliki do własnej pamięci, gdy uruchomienie się zakończy.
Jak to wygląda
Wychodziliśmy z plakatu wygenerowanego przez Seedream 5.0 Flash.

Flash, bez promptu w ogóle
Wysłaliśmy plakat bez promptu i z resolution ustawionym na auto. Wróciło 8 obrazów: podkład plus siedem warstw, czyli bar, daleki samochód, czerwony neon, kobieta w czerwonym płaszczu, slogan, tytuł LATE SHIFT i bilet ADMIT ONE.

Podkład to deszczowa ulica, z której zniknęły bar, kobieta i cały tekst, a ulica została wypełniona. To, co było za usuniętym elementem, model domalowuje, więc wygląda to dobrze, ale nie są to pierwotne piksele.

Dwie warstwy z Flasha osobno (szachownica, którą zobaczyłbyś w edytorze, to tylko przezroczystość):


Pro, z nazwaniem elementów
Pro dostał ten sam plakat z promptem wymieniającym pięć elementów, w 1.5K:
Separate the LATE SHIFT title, the tagline, the woman in the red trench coat,
the diner building and the ADMIT ONE ticket stub into their own layersWróciło sześć obrazów: podkład i pięć warstw o nazwach Diner building, Tagline text, LATE SHIFT title, Woman in red trench coat oraz ADMIT ONE ticket stub. Ułożone według ramek odtwarzają oryginalny plakat.

Pro poradził sobie też z wcześniej zrobioną reklamą perfum. Nazwaliśmy cztery elementy (nagłówek NOIR ÉTÉ, flakon, złotą wstążkę i małą linijkę „eau de parfum”) i dostaliśmy pięć obrazów: pusty czarny marmurowy postument jako podkład plus cztery warstwy. To zdjęcie produktowe, które możesz przestawić na nowym tle bez generowania czegokolwiek od nowa.

Flash czy Pro?
| Flash | Pro | |
|---|---|---|
| Cena za obraz wyjściowy | 0,026 $ w każdej rozdzielczości | 0,042 $ (1K, 1.5K), 0,084 $ (2K i auto) |
Domyślna resolution | auto | 1.5k |
| Nazwy i ramki | name i boundingBox w każdej warstwie | name i boundingBox w każdej warstwie |
| Ten sam plakat, rozdzielenie automatyczne | 7 warstw plus podkład | 8 warstw plus podkład |
| Wejściowe obrazy dla dorosłych (NSFW, do intensywnych tematów) | Akceptowane | Akceptowane |
| Intymna scena między dwiema dorosłymi osobami | Akceptowana | Odrzucona, bez naliczenia |
| Prompt | Opcjonalny; co najmniej 3 znaki, jeśli zapisany | Opcjonalny |
Domyślnie wybieraj Flash: jest tańszy i ukończył wszystkie przetestowane tutaj kategorie z wejściami dla dorosłych. Wybierz Pro, gdy rozdzielenie w Flashu pomija potrzebny ci element, a twoje wejście nie jest intymną sceną między dwiema dorosłymi osobami (zakryta wersja tej samej sceny dzieli się normalnie). W Pro odrzucony obraz wraca jako nieudane zadanie z ogólnym błędem i bez naliczenia; nie ponawiaj tego samego obrazu, wyślij go do Flasha. Oba modele dają nazwy i ramki, więc oba pasują do tych samych zadań:
- edycja nagłówka plakatu i wstawienie go z powrotem;
- podmiana samego tła przy zachowaniu produktu lub postaci;
- zamiana wycięć w naklejki lub wielorazowe zasoby projektowe;
- zbudowanie sceny z paralaksą lub szkieletu animacji z jednej ilustracji.
Jak napisać prompt, który nazywa to, czego chcesz
Bez promptu model sam decyduje, co jest elementem. Z promptem rozdziela to, co wymienisz. Dwie rzeczy sprawiły, że wyniki stały się przewidywalne:
- Nazwij każdy element, który cię interesuje, krótką frazą nominalną: "the LATE SHIFT title", "the woman in the red trench coat". To, co pominiesz, zależy od modelu, więc nazwij to, co zamierzasz przesunąć. Jeśli poprosisz o mniej elementów, dostaniesz mniej warstw; limit to 16.
- Wskaż region przez
<bbox>. Współrzędne tox1 y1 x2 y2, znormalizowane do siatki od 0 do 1000 z początkiem w lewym górnym rogu, niezależnie od rozmiaru obrazu:
Separate the title text <bbox>179 58 809 197</bbox> and the parrot
<bbox>330 274 641 991</bbox> into independent layersTo rozstrzyga przypadek, gdy dwie rzeczy wyglądają podobnie albo na siebie zachodzą. Na obrazie 1536×2048 ramka od 100 do 900 w poziomie obejmuje piksele od 154 do 1382.
Ile to kosztuje
Płacisz za każdy zwrócony obraz, a podkład też się liczy. Typowe plakaty i reklamy zwracają od 3 do 11 obrazów: od 0,078 $ do 0,286 $ na Flashu, a uruchomienie Pro z 6 obrazami w 1.5K kosztuje 6 × 0,042 $ = 0,252 $. Poza tym nic nie jest naliczane za warstwę.
Kwota zablokowana przy akceptacji to cena za 17 obrazów: 0,442 $ na Flashu, 0,714 $ na Pro w 1K lub 1.5K i 1,428 $ na Pro w 2K lub auto. Po zakończeniu uruchomienia jest zwalniana do rzeczywistej liczby. W Pro ustaw resolution na 1k lub 1.5k, jeśli rozdzielenie ma działać; auto jest naliczane według stawki 2K, więc żądanie skopiowane z przykładu dla Flasha z auto kosztuje w Pro dwukrotnie więcej.
Najpierw wypróbuj w Playground
- Otwórz stronę rozbijania na warstwy we Flashu i zostań w zakładce Playground, w widoku Form. Zaloguj się kontem z saldem, aby uruchomić.
- Dodaj swój plakat lub reklamę w polu Input image (plik albo Asset URL).
- Zostaw Prompt puste, niech model wybierze główne elementy, albo nazwij te, które chcesz przesunąć, używając
<bbox>tam, gdzie dwie rzeczy wyglądają podobnie. - Dla Flasha zostaw Resolution na
auto, a potem uruchom model. Wynik otworzy się jako widok warstw, w którym możesz ukrywać warstwy, pobrać jedną warstwę lub wszystkie jako zip albo wyeksportować widoczny stos jako jeden PNG. Obraz wygenerowany w serwisie możesz wysłać wprost do rozbijania na warstwy. - Jeśli rozdzielenie coś pominie, uruchom ten sam obraz na stronie Pro; tam ustaw Resolution na
1klub1.5k, boautojest naliczane według stawki 2K.
Potem uruchom to z kodu
Zainstaluj Python SDK (pip install spicyapi), ustaw SPICY_API_KEY w środowisku serwera i uruchom:
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
task = client.create_task(
model="bytedance/seedream-5.0-flash/layer-decomposition",
input_data={
"image_url": "https://your-cdn.example/poster.png",
"prompt": "Separate the LATE SHIFT title, the tagline, the woman in the red trench coat, "
"the diner building and the ADMIT ONE ticket stub into their own layers",
"resolution": "auto",
"output_format": "png",
},
idempotency_key=str(uuid.uuid4()),
)
print("Resume task:", task["taskId"], flush=True)
final = client.wait_for_terminal(task["taskId"]) # a run takes about 45 to 100 seconds
if final["state"] != "succeeded":
raise RuntimeError(f"{task['taskId']} ended as {final['state']}: {final.get('errorCode')}")
assets = output_assets(final) # assets[0] is the base plate; copy the files to your own storage now
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")Dla Pro użyj bytedance/seedream-5.0-pro/layer-decomposition z "resolution": "1.5k". Trzymaj obraz źródłowy poniżej 10 MB. Tworzenie, oczekiwanie, pobieranie, ponowne próby i treść callbacka opisuje przewodnik po zadaniach oraz referencja Python SDK.
Albo niech to uruchomi Agent
Gdy rozdzielenie ma wykonać asystent, wszystkie trzy oficjalne narzędzia pokazują cenę i pytają o zgodę przed płatnym wywołaniem.
- CLI. Umieść ten sam obiekt
inputwinput.json, a potem:
``bash spicyapi tasks create --model bytedance/seedream-5.0-flash/layer-decomposition --input-file input.json --wait ``
Zobacz dokumentację CLI; npx @spicyapi/cli działa bez instalowania.
- Serwer MCP. Dodaj serwer MCP do swojego asystenta, a potem zapytaj: "Split this poster into layers with Seedream 5.0 Flash and name the title, the tagline and the woman." Wywołuje
spicyapi_task_create, które zatrzymuje się na potwierdzenie ceny, a następniespicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstaluje Agent Skill, który każe asystentowi programistycznemu odczytać aktualny schemat modelu zamiast zgadywać nazwy pól.
Złóż warstwy z powrotem
Warstwa PNG ma zwykle wyższą rozdzielczość niż ramka, którą zajmuje (na przykład ramka 671×139 z PNG 1233×256), więc przeskaluj każdą warstwę do jej ramki, a potem rysuj je od najniższego zIndex do najwyższego. Działa to zarówno na wyniku Flasha, jak i Pro.
Python z Pillow:
import io
import requests
from PIL import Image
def fetch(url):
return Image.open(io.BytesIO(requests.get(url, timeout=60).content)).convert("RGBA")
assets = output_assets(final) # from the finished task above
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")
canvas = fetch(assets[0]["url"]) # base plate, zIndex 0
for a in sorted(assets[1:], key=lambda a: a["layer"]["zIndex"]):
box = a["layer"].get("boundingBox")
if not box:
continue # no position: place this one by hand
x1, y1, x2, y2 = [round(v) for v in box]
layer = fetch(a["url"]).resize((x2 - x1, y2 - y1), Image.LANCZOS)
canvas.paste(layer, (x1, y1), layer) # alpha-aware paste
canvas.convert("RGB").save("recomposed.jpg", quality=95)To samo w przeglądarce przez canvas:
async function load(url) {
const img = new Image();
img.crossOrigin = "anonymous";
img.src = url;
await img.decode();
return img;
}
const assets = task.data.output.assets; // task: the finished task's JSON
const base = await load(assets[0].url);
const canvas = document.createElement("canvas");
canvas.width = base.naturalWidth;
canvas.height = base.naturalHeight;
const ctx = canvas.getContext("2d");
ctx.drawImage(base, 0, 0);
const layers = assets.slice(1).sort((a, b) => a.layer.zIndex - b.layer.zIndex);
for (const a of layers) {
const box = a.layer.boundingBox;
if (!box) continue; // no position: place this one by hand
const [x1, y1, x2, y2] = box;
ctx.drawImage(await load(a.url), x1, y1, x2 - x1, y2 - y1);
}Aby podmienić tytuł plakatu, pomiń tę warstwę w pętli, narysuj własny tekst w tę samą ramkę i zostaw resztę. Aby zmienić tylko tło, podmień assets[0] na własny obraz o tym samym rozmiarze.
Inne sposoby rozbijania obrazu na warstwy
Większość stron, które pojawiają się przy tym wyszukiwaniu, to narzędzia przeglądarkowe z rozliczeniem za kredyty i bez API. Główną otwartą alternatywą jest Qwen-Image-Layered (Apache 2.0, 20B parametrów), który możesz postawić sam na GPU albo wywołać przez fal za 0,05 $ za obraz wyjściowy (domyślne uruchomienie z 4 warstwami kosztuje około 0,20 $, jeśli każda warstwa jest naliczana). Tam ustawiasz liczbę warstw (domyślnie 4) i dostajesz przezroczyste obrazy w całej powierzchni płótna, bez nazw i pozycji, a kontrola bezpieczeństwa fal jest włączona domyślnie i zwraca czarne obrazy dla oznaczonych wejść. Wybierz je, gdy potrzebujesz stałej liczby warstw albo własnego hostingu. Wybierz rozbijanie na warstwy Seedream, gdy chcesz przyciętych warstw z nazwą i pozycją każdej, promptu nazywającego elementy oraz akceptowanych obrazów wejściowych dla dorosłych; przy 0,026 $ za obraz na Flashu jest też tańsze za obraz.
FAQ
Ile warstw dostanę?
Tyle, ile model znajdzie, maksymalnie 16 plus podkład. Nie możesz ustawić liczby. Nazywaj elementy, aby kontrolować ich liczbę, a jeśli jednego brakuje, nazwij go (albo podaj jego <bbox>) i uruchom ponownie; powtórne uruchomienie jest rozliczane jak nowe.
Czy mogę rozbić obraz, który nie powstał w SpicyAPI?
Tak, każdy pojedynczy obraz w granicach ze strony modelu. Aby uzyskać materiał na plakat, który dzieli się czysto, zacznij od Seedream 5.0 Flash tekst na obraz.
Czy wyniki są powtarzalne?
Nie. Nie ma parametru seed, więc wykonaj rozdzielenie raz, zachowaj pliki i edytuj je.
Dokąd iść dalej
Wypróbuj plakat, który już Ci się podoba, w rozbijaniu na warstwy we Flashu; jeśli jego rozdzielenie coś pominie, przepuść ten sam obraz przez Pro.







