Kurz gesagt: Senden Sie ein Bild und erhalten Sie ein repariertes Basisbild (das Bild mit den herausgelösten Elementen entfernt und dem gefüllten Hintergrund) plus bis zu 16 transparente PNG-Ebenen, eine pro Element. Jede Ebene hat einen name und eine boundingBox, sodass sich die Ebenen wieder an die richtige Stelle stapeln lassen. SpicyAPI führt das auf Seedream 5.0 Flash für $0.026 pro Ausgabebild in jeder Auflösung aus und auf Seedream 5.0 Pro für $0.042 pro Bild (1K, 1.5K) bzw. $0.084 (2K, auto). Beginnen Sie mit Flash: Er kostet weniger und hat in unseren Tests die Kategorien mit Erwachseneingaben abgeschlossen. Pro kostet mehr und lehnt Bilder einer intimen Szene zwischen zwei Erwachsenen ab.
In 30 Sekunden
- Ausgabe: das Basisbild an Index 0, dann die Ebenen. Ebenen sind immer transparentes PNG;
output_formatändert nur das Basisbild (JPEG oder PNG). - Grenze und Abrechnung: höchstens 17 Bilder pro Lauf (Basisbild plus 16 Ebenen), und Sie zahlen für die zurückgegebenen Bilder, das Basisbild eingerechnet. Wenn der Task angenommen wird, halten wir den Preis für 17 Bilder zurück und erstatten die Differenz, sobald die echte Zahl feststeht.
- Prompt optional. Lassen Sie ihn weg, und das Modell wählt die Hauptelemente; schreiben Sie einen, und es trennt, was Sie benennen. Es gibt keine Einstellung für die Anzahl der Ebenen.
- Nicht sofort: ein Lauf dauert auf beiden Modellen etwa 45 bis 100 Sekunden.
- Kopieren Sie die Dateien in Ihren eigenen Speicher, wenn der Lauf endet.
So sieht es aus
Wir haben mit einem Poster begonnen, das mit Seedream 5.0 Flash erzeugt wurde.

Flash, ganz ohne Prompt
Wir haben das Poster ohne Prompt und mit resolution auf auto gesendet. Es kamen 8 Bilder zurück: das Basisbild plus sieben Ebenen, nämlich das Diner, ein entferntes Auto, das rote Neonschild, die Frau im roten Trenchcoat, den Slogan, den LATE-SHIFT-Titel und den ADMIT-ONE-Kartenausschnitt.

Das Basisbild ist eine regnerische Straße, auf der das Diner, die Frau und alle Schriftzüge entfernt und die Straße gefüllt wurde. Was hinter einem entfernten Element lag, malt das Modell hinein, es sieht also richtig aus, ist aber nicht mehr die ursprüngliche Pixelstruktur.

Zwei der Flash-Ebenen für sich genommen (das Schachbrett, das Sie in einem Editor sehen würden, ist nur Transparenz):


Pro, benennt die Elemente
Pro bekam dasselbe Poster mit einem Prompt, der fünf Elemente benennt, in 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 layersSechs Bilder kamen zurück: das Basisbild und fünf Ebenen mit den Namen Diner building, Tagline text, LATE SHIFT title, Woman in red trench coat und ADMIT ONE ticket stub. Nach ihren Boxen gestapelt ergeben sie das Originalposter wieder.

Pro hat auch die Parfumwerbung geschafft, die wir früher erstellt haben. Wir haben vier Elemente benannt (die NOIR-ÉTÉ-Überschrift, die Flasche, das goldene Band und die kleine Zeile "eau de parfum") und fünf Bilder erhalten: ein leerer schwarzer Marmorsockel als Basisbild plus die vier Ebenen. Das ist ein Produktfoto, das Sie auf einem neuen Hintergrund neu inszenieren können, ohne etwas neu zu generieren.

Flash oder Pro?
| Flash | Pro | |
|---|---|---|
| Preis pro Ausgabebild | $0.026 in jeder Auflösung | $0.042 (1K, 1.5K), $0.084 (2K und auto) |
Standard-resolution | auto | 1.5k |
| Namen und Boxen | name und boundingBox bei jeder Ebene | name und boundingBox bei jeder Ebene |
| Gleiches Poster, automatisches Zerlegen | 7 Ebenen plus Basisbild | 8 Ebenen plus Basisbild |
| Erwachsenenorientierte Eingabebilder (NSFW, bis zu intensive Themen) | Akzeptiert | Akzeptiert |
| Eine intime Szene zwischen zwei Erwachsenen | Akzeptiert | Abgelehnt, nicht berechnet |
| Prompt | Optional; mindestens 3 Zeichen, wenn geschrieben | Optional |
Wählen Sie standardmäßig Flash: Er ist günstiger und hat alle hier getesteten Kategorien mit Erwachseneingaben abgeschlossen. Wählen Sie Pro, wenn Flash beim Zerlegen ein Element verfehlt, das Sie brauchen, und Ihre Eingabe keine intime Szene zwischen zwei Erwachsenen ist (eine bekleidete Version derselben Szene zerlegt sich normal). Bei Pro kommt ein abgelehntes Bild als fehlgeschlagener Task mit einem generischen Fehler und ohne Berechnung zurück; versuchen Sie dasselbe Bild nicht erneut, sondern senden Sie es an Flash. Beide liefern Namen und Boxen, passen also für dieselben Aufgaben:
- die Überschrift eines Plakats bearbeiten und wieder einsetzen;
- nur den Hintergrund austauschen und ein Produkt oder eine Person behalten;
- Ausschnitte in Sticker oder wiederverwendbare Design-Assets verwandeln;
- aus einer Illustration eine Parallax-Szene oder ein Animations-Rig bauen.
Einen Prompt schreiben, der benennt, was Sie wollen
Ohne Prompt entscheidet das Modell, was als Element gilt. Mit Prompt trennt es, was Sie aufzählen. Zwei Gewohnheiten machten die Ergebnisse planbar:
- Benennen Sie jedes Element, das Ihnen wichtig ist, mit einer kurzen Nominalphrase: "the LATE SHIFT title", "the woman in the red trench coat". Alles, was Sie weglassen, liegt beim Modell, also benennen Sie, was Sie verschieben wollen. Wenn Sie weniger Elemente anfordern, bekommen Sie weniger Ebenen; die Grenze ist 16.
- Deuten Sie mit
<bbox>auf eine Region. Die Koordinaten sindx1 y1 x2 y2, normiert auf ein Raster von 0 bis 1000 mit dem Ursprung in der linken oberen Ecke, unabhängig von der Bildgröße:
Separate the title text <bbox>179 58 809 197</bbox> and the parrot
<bbox>330 274 641 991</bbox> into independent layersDamit ist der Fall geklärt, in dem sich zwei Dinge ähnlich sehen oder überlappen. Auf einem 1536×2048-Bild deckt eine Box von 100 bis 900 horizontal die Pixel 154 bis 1382 ab.
Was es kostet
Sie zahlen pro zurückgegebenem Bild, und das Basisbild zählt mit. Typische Poster und Anzeigen liefern 3 bis 11 Bilder: $0.078 bis $0.286 bei Flash, und ein Pro-Lauf mit 6 Bildern in 1.5K kostet 6 × $0.042 = $0.252. Darüber hinaus wird nichts pro Ebene berechnet.
Der bei Annahme zurückgehaltene Betrag ist der Preis für 17 Bilder: $0.442 bei Flash, $0.714 bei Pro in 1K oder 1.5K und $1.428 bei Pro in 2K oder auto. Er wird bis zur echten Zahl freigegeben, wenn der Lauf endet. Setzen Sie bei Pro resolution auf 1k oder 1.5k für ein funktionierendes Zerlegen; auto wird zum 2K-Tarif berechnet, eine aus einem Flash-Beispiel mit auto kopierte Anfrage kostet auf Pro also doppelt so viel.
Erst im Playground ausprobieren
- Öffnen Sie die Flash-Layer-Zerlegung und bleiben Sie im Tab Playground in der Ansicht Form. Melden Sie sich mit einem Konto mit Guthaben an, um zu starten.
- Legen Sie Ihr Poster oder Ihre Anzeige unter Input image (eine Datei oder eine Asset URL).
- Lassen Sie Prompt leer, damit das Modell die Hauptelemente wählt, oder benennen Sie die Elemente, die Sie verschieben wollen, und setzen Sie
<bbox>dort ein, wo sich zwei Dinge ähnlich sehen. - Lassen Sie Resolution für Flash auf
autound starten Sie dann das Modell. Das Ergebnis öffnet sich als Ebenenansicht, in der Sie Ebenen ausblenden, eine Ebene oder alle als zip herunterladen oder den sichtbaren Stapel als ein PNG exportieren können. Ein auf der Website erzeugtes Bild lässt sich direkt in die Layer-Zerlegung schicken. - Wenn das Zerlegen etwas verfehlt, führen Sie dasselbe Bild auf der Pro-Seite aus; setzen Sie dort Resolution auf
1koder1.5k, weilautozum 2K-Tarif berechnet wird.
Dann aus dem Code ausführen
Installieren Sie das Python SDK (pip install spicyapi), setzen Sie SPICY_API_KEY in Ihrer Serverumgebung und führen Sie aus:
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")Für Pro verwenden Sie bytedance/seedream-5.0-pro/layer-decomposition mit "resolution": "1.5k". Halten Sie das Quellbild unter 10 MB. Anlegen, Warten, Downloads, Wiederholungen und der Callback-Body stehen im tasks-Leitfaden und in der Python-SDK-Referenz.
Oder einen Agenten laufen lassen
Wenn ein Assistent das Zerlegen übernehmen soll, zeigen alle drei offiziellen Tools den Preis und fragen vor einem kostenpflichtigen Aufruf nach der Bestätigung.
- CLI. Legen Sie dasselbe
input-Objekt ininput.jsonund führen Sie dann aus:
``bash spicyapi tasks create --model bytedance/seedream-5.0-flash/layer-decomposition --input-file input.json --wait ``
Siehe CLI-Doku; npx @spicyapi/cli funktioniert ohne Installation.
- MCP-Server. Fügen Sie Ihrem Assistenten den MCP-Server hinzu und fragen Sie dann: "Split this poster into layers with Seedream 5.0 Flash and name the title, the tagline and the woman." Er ruft
spicyapi_task_createauf, das für Ihre Preisbestätigung anhält, dannspicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstalliert den Agent Skill, der einen Coding-Assistenten das aktuelle Modell-Schema lesen lässt, statt Felder zu raten.
Die Ebenen wieder zusammensetzen
Eine Ebenen-PNG hat meist eine höhere Auflösung als die Box, die sie belegt (etwa eine 671×139-Box mit einer 1233×256-PNG), skalieren Sie also jede Ebene in ihre Box hinein und zeichnen Sie sie dann vom niedrigsten zIndex zum höchsten. Das funktioniert bei der Ausgabe von Flash und Pro gleichermaßen.
Python mit 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)Dasselbe im Browser mit 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);
}Um den Titel des Plakats auszutauschen, lassen Sie diese Ebene in der Schleife weg, zeichnen Sie Ihren eigenen Text in dieselbe Box und behalten Sie den Rest. Um nur den Hintergrund zu ändern, ersetzen Sie assets[0] durch ein eigenes Bild in derselben Größe.
Andere Wege, ein Bild in Ebenen zu zerlegen
Die meisten Seiten, die für diese Suche ranken, sind Browser-Tools mit Credit-Preisen und ohne API. Die wichtigste offene Alternative ist Qwen-Image-Layered (Apache 2.0, 20B Parameter), die Sie auf einer GPU selbst hosten oder über fal für $0.05 pro Ausgabebild aufrufen können (ein Standardlauf mit 4 Ebenen kostet etwa $0.20, wenn jede Ebene einzeln berechnet wird). Dort setzen Sie die Anzahl der Ebenen (standardmäßig 4) und bekommen Bilder in voller Canvas-Größe, transparent, ohne Namen oder Positionen, und der Safety Checker von fal ist standardmäßig aktiv und liefert bei markierten Eingaben schwarze Bilder. Wählen Sie sie, wenn Sie eine feste Ebenenzahl oder Ihr eigenes Hosting brauchen. Wählen Sie die Layer-Zerlegung von Seedream, wenn Sie zugeschnittene Ebenen mit je einem Namen und einer Position, einen Prompt, der die Elemente benennt, und akzeptierte Erwachseneingaben möchten; bei $0.026 pro Bild auf Flash ist sie zudem pro Bild günstiger.
FAQ
Wie viele Ebenen bekomme ich?
So viele, wie das Modell findet, bis zu 16 plus das Basisbild. Eine Zahl können Sie nicht setzen. Benennen Sie die Elemente, um die Anzahl zu steuern, und wenn eines fehlt, benennen Sie es (oder geben Sie sein <bbox> an) und führen Sie erneut aus; ein Wiederholen wird wie ein neuer Lauf berechnet.
Kann ich ein Bild zerlegen, das nicht von SpicyAPI stammt?
Ja, jedes einzelne Bild innerhalb der Grenzen auf der Modellseite. Um Poster-Material zu erzeugen, das sauber zerfällt, beginnen Sie mit Seedream 5.0 Flash Text-zu-Bild.
Sind die Ergebnisse reproduzierbar?
Nein. Es gibt keinen Seed, führen Sie das Zerlegen also einmal aus, behalten Sie die Dateien und bearbeiten Sie diese.
Wie es weitergeht
Probieren Sie ein Poster, das Ihnen schon gefällt, mit Flash Layer-Zerlegung aus; wenn das Zerlegen etwas verfehlt, schicken Sie dasselbe Bild durch Pro.







