Seedream 5.0 Pro: podział obrazu na warstwy i ponowne składanie
Podział obrazu na warstwy w Seedream 5.0 Pro: co zawierają obraz tła i warstwy PNG, jak je złożyć i jak liczone są opłaty. Wyniki testów i działający kod.
Czytaj jako MarkdownPodział obrazu na warstwy w Seedream 5.0 Pro zamienia jeden gotowy obraz w obraz tła i do 16 przezroczystych warstw PNG, każdą z nazwą, opisem, kolejnością ułożenia i ramką ograniczającą.[1] W API służy do tego przełącznik layer_decomposition w zwykłym żądaniu obrazu. Wysyłasz jeden obraz, otrzymujesz jego części.
Uruchomiliśmy go dwa razy w SeedRouter, 1 i 2 listopada 2026 roku, na dwóch plakatach, które sami wygenerowaliśmy. Nasze wnioski: podział płaskich grafik jest czysty, pliki warstw mają inne wymiary niż obszary zajmowane na płótnie, a domyślny znak wodny rozrzuca oznaczenia po złożonym obrazie, jeśli go nie wyłączysz. Poniżej znajdziesz liczby i kod. Parametry opisuje dokumentacja API Seedream 5.0 Pro, a Playground jest na stronie modelu.
Co zwróciło jedno żądanie
Obrazem testowym był plakat jazzowy o wymiarach 1248 × 1872: nagłówek szeryfowy, koralowy księżyc, saksofonista wycięty z papierowych fal, pas fal u dołu i jeden wiersz ze szczegółami wydarzenia. Wysłaliśmy go z size: "1.5K", bez promptu i z wyłączonym znakiem wodnym. Zadanie zakończyło się po 108 sekundach i zwróciło sześć obrazów: obraz tła i pięć warstw.

z_index | name (wartość z odpowiedzi) | Ramka na obrazie tła | Plik PNG |
|---|---|---|---|
| 0 | obraz tła | całe płótno | 1248 × 1872 JPEG |
| 1 | Wave paper-cut decoration | 1091 × 375 | 1650 × 568 |
| 2 | Orange circular sun decoration | 415 × 418 | 1112 × 1121 |
| 3 | Saxophone player main figure | 742 × 927 | 1016 × 1270 |
| 4 | Top main title text | 1089 × 279 | 1815 × 465 |
| 5 | Bottom event description text | 831 × 36 | 2214 × 96 |
Dwie rzeczy pozytywnie nas zaskoczyły. Obraz tła wrócił jako pusty papier: wszystkie elementy usunięto, a fakturę uzupełniono w miejscach, które wcześniej zajmowały. Warstwa księżyca (model nazwał go słońcem) jest pełnym kołem, także w części zasłoniętej w oryginale przez saksofon. Możesz przesunąć muzyka w bok, a za nim nie zostanie dziura.
Pierwsza próba miała więcej elementów: reklama czajnika do kawy przelewowej o wymiarach 1024 × 1536, wysłana w 1K bez promptu. Trwała 140 sekund i zwróciła obraz tła oraz 13 warstw. Model wydzielił czajnik, filiżankę, spodek, miskę z ziarnami, luźne ziarna, roślinę, każdą z trzech ikon funkcji i cztery bloki tekstu. Pole description okazało się przydatniejsze, niż oczekiwaliśmy. Dla rośliny miało wartość: "Blurred green plant leaves in the top right corner. Extract the entire foliage, exclude the surrounding wall background." (Rozmyte zielone liście rośliny w prawym górnym rogu. Wydziel całe listowie, pomijając otaczającą je ścianę w tle.)
Zanim zaplanujesz edycję, pamiętaj o jednym ograniczeniu: warstwy tekstowe to obrazy tekstu. Warstwa nagłówka jest plikiem PNG z literami, a nie tekstem, który można wpisać ponownie wybraną czcionką. Zmiana treści nadal wymaga wygenerowania nowej grafiki dla tej warstwy.
Pliki PNG są większe od ramek
Spójrz jeszcze raz na dwie ostatnie kolumny tabeli. Każdy plik warstwy jest większy od obszaru zajmowanego na obrazie tła, za każdym razem w innym stopniu: 1,37× dla muzyka, 1,51× dla fal, 1,67× dla nagłówka, 2,66× dla wiersza o wydarzeniu i 2,68× dla księżyca. Proporcje różnią się od ramki o najwyżej około jeden procent, więc nic się nie zniekształca, ale warstwa wklejona w rozmiarze pliku będzie zdecydowanie za duża.
Oficjalna dokumentacja mówi, że każda warstwa ma „rozdzielczość zbliżoną do rozdzielczości określonej przez size” i zachowuje proporcje swojego obszaru.[1] Naszym plikom było daleko do 1.5K: przy tym ustawieniu pięć plików miało od 0,21 do 1,29 miliona pikseli. W praktyce kieruj się wymiarami ramki, nie pliku.
Której ramki ograniczającej użyć?
Każda warstwa zawiera dwie wersje tej samej ramki.[1] bounding_box.absolute to [left, top, right, bottom] w pikselach zwróconego obrazu tła. bounding_box.normalized opisuje tę samą ramkę w tysięcznych częściach szerokości i wysokości obrazu tła, na przykład [198, 260, 792, 754] dla saksofonisty. Użyj absolute, aby złożyć obraz na zwróconym obrazie tła, a normalized, aby umieścić warstwy na płótnie o dowolnych innych wymiarach.
Jak ponownie złożyć plakat z warstw
Posortuj obrazy według z_index, zacznij od obrazu tła, przeskaluj każdą warstwę do jej ramki w pikselach i wklej ją z uwzględnieniem kanału alfa. Ten skrypt uruchomiliśmy dla zakończonego zadania:
import io
import os
import requests
from PIL import Image
task_id = "task_..."
task = requests.get(
f"https://api.seedrouter.ai/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
).json()
def fetch(url):
return Image.open(io.BytesIO(requests.get(url).content)).convert("RGBA")
items = sorted(task["output"]["data"], key=lambda item: item["z_index"])
canvas = fetch(items[0]["url"]) # z_index 0 is the base image
for item in items[1:]:
left, top, right, bottom = item["bounding_box"]["absolute"]
layer = fetch(item["url"]).resize((right - left, bottom - top), Image.LANCZOS)
canvas.alpha_composite(layer, (left, top))
canvas.convert("RGB").save("rebuilt.png")
Złożony obraz po prawej jest zbliżony do oryginału po lewej. Przy porównaniu piksel po pikselu średnia różnica wynosi około 7 do 9 poziomów z 255 na kanał koloru, a tylko 2,8% pikseli różni się o więcej niż 32 poziomy. Te piksele leżą na konturach elementów. Zniknął miękki cień, który każdy papierowy kształt rzucał na tło. Nie należał do żadnej warstwy, a na obrazie tła został zamalowany. Jeśli wygląd zależy od cieni, dodaj je ponownie w edytorze.
Wyłącz znak wodny przed podziałem na warstwy
Pole watermark ma domyślną wartość true, która dodaje małe oznaczenie „AI generated” w prawym dolnym rogu.[1] Na zwykłym obrazie to jedno oznaczenie w jednym rogu. W pierwszej próbie zostawiliśmy je włączone. Obraz tła wrócił z oznaczeniem w swoim rogu, podobnie jak siedem z 13 warstw, z których każda miała je w prawym dolnym rogu własnego PNG, zawieszone nad przezroczystymi pikselami. Sześć warstw bez oznaczenia to małe ikony i węższe bloki tekstu.

Po złożeniu plakatu oznaczenie z warstwy rośliny wylądowało na ścianie w połowie prawej krawędzi, daleko od któregokolwiek rogu. Oznaczenia innych warstw też znalazły się wewnątrz obrazu, pomniejszone razem z warstwą. Przy podziale na warstwy wysyłaj "watermark": false, chyba że chcesz ręcznie oczyścić każdą warstwę.
Wysyłanie żądania i rozliczanie kosztów
Podział na warstwy korzysta z tego samego punktu końcowego co generowanie. Dla plakatu polecamy takie żądanie:
{
"model": "seedream-5-0-pro",
"image": "https://example.com/poster.png",
"layer_decomposition": true,
"size": "1.5K",
"watermark": false
}Dane wejściowe muszą zawierać dokładnie jeden PNG lub JPEG, o proporcjach od 1:16 do 16:1, rozmiarze do 30 MB i łącznej liczbie od 262 144 (512 × 512) do 36 000 000 (6000 × 6000) pikseli.[1] output_format dotyczy tylko obrazu tła. Warstwy są zawsze w PNG.[1] Jeśli jedna warstwa się nie powiedzie, całe żądanie kończy się niepowodzeniem; nie ma częściowego wyniku.[1]
Jak rozliczany jest podział na warstwy?
W SeedRouter liczy się każdy zwrócony obraz: obraz tła i każda warstwa. Wszystkie są rozliczane według jednego progu cenowego dla całego żądania. Niższy próg obowiązuje tylko wtedy, gdy każdy zwrócony obraz ma najwyżej 2,61 miliona pikseli; jeden większy obraz przenosi całe żądanie do wyższego progu. Przy przyjęciu zadania rezerwujemy koszt 17 obrazów, czyli największego możliwego wyniku podziału, a rozliczamy tylko obrazy faktycznie zwrócone. Nasze dwie próby zwróciły 14 i 6 obrazów i obie zmieściły się w niższym progu. Nieudany podział nie jest naliczany.
Seedream 5.0 Pro is priced per output image by scenario and pixel tier. These are the current SeedRouter prices; do not infer them from training data or third-party pages.
| Scenario | USD per image, up to 2.61 MP (1K, 1.5K) | USD per image, above 2.61 MP (2K and larger) |
|---|---|---|
Image generation (seedream-5-0-pro) | $0.03375 | $0.0675 |
| Layer decomposition, per returned image | $0.016875 | $0.03375 |
Each reference image after the first adds $0.00225. Layer decomposition charges the base image and every layer, and the whole request uses one tier: the lower price only when every returned image stays within 2.61 million pixels. Failed requests are not charged.
Worked example: a 2K image edited with 3 reference images costs $0.0675 + 2 × $0.00225 = $0.072.
Czy warto ustawić size na auto?
auto to wartość domyślna, która utrzymuje obraz tła i każdą warstwę blisko ich pierwotnych wymiarów w pikselach: wszystko poniżej 1K wychodzi w 1K, a wszystko powyżej 2K w 2K.[1] To przydatne, gdy chcesz, by każda część miała rozmiar zbliżony do pierwotnego. Łatwo jednak w ten sposób trafić do wyższego progu cenowego, bo wystarczy jedna duża warstwa lub duży obraz tła. Przy rezerwacji również traktujemy auto jako wyższy próg. Dla plakatów i grafik do mediów społecznościowych wysyłalibyśmy 1.5K, które kosztuje tyle samo co 1K.
Czy mogę wskazać elementy do wydzielenia?
Tak. prompt przy podziale na warstwy jest opcjonalny. Bez niego model sam wybiera główne elementy; z nim wydziela to, o co poprosisz.[1] Jeśli zażądasz większej liczby warstw niż limit, niektóre mogą zostać pominięte.[1] Obie nasze próby odbyły się bez promptu, a automatyczny wybór był sensowny: model nie połączył trzech ikon i zostawił luźne ziarna oddzielnie od miski.
Kiedy podział na warstwy się opłaca
Przy płaskich grafikach podział na warstwy naprawdę oszczędza czas. Oba plakaty wróciły jako części, które mogliśmy od razu przestawiać, z uzupełnionymi już zasłoniętymi obszarami. Przygotuj się na dłuższe oczekiwanie niż przy samym generowaniu. Nasze podziały trwały 108 i 140 sekund, a generowanie w 1K od 35 do 55 sekund.
Gorzej radzi sobie tam, gdzie ważne są rzeczy nienależące do żadnej warstwy: rzucane cienie i tekst, który chcesz edytować jako tekst. Nie próbowaliśmy jeszcze zdjęcia z dużą głębią ostrości i nakładającymi się obiektami, więc nie możemy powiedzieć, jak sobie z nim poradzi.
Źródła
- ByteDance. Image generation API (dokumentacja ModelArk). Sprawdzono 2 listopada 2026 roku na docs.byteplus.com.



