Claude Opus 5.5 متاح الآن على SeedRouter

⁦Seedream 5.0 Pro⁩: فصل الصورة إلى طبقات والنتائج وإعادة التركيب

فصل الصورة إلى طبقات مع ⁦Seedream 5.0 Pro⁩ عبر ⁦API⁩: محتوى صورة القاعدة وطبقات ⁦PNG⁩، وكيف تعيد تركيبها وتُحسب تكلفتها، مع كود عملي.

اقرأ بصيغة Markdown

يأخذ فصل الصورة إلى طبقات في ⁦Seedream 5.0 Pro⁩ صورة مكتملة ويعيد صورة القاعدة وما يصل إلى ⁦16⁩ طبقة ⁦PNG⁩ شفافة، لكل منها اسم ووصف وترتيب تراكب ومربع إحاطة.[⁦1⁩] في ⁦API⁩، هذه هي وظيفة المفتاح ⁦layer_decomposition⁩ ضمن طلب الصور العادي. أرسل صورة واحدة، واستلم عناصرها منفصلة.

شغّلناه مرتين على ⁦SeedRouter⁩ يومَي ⁦1⁩ و⁦2⁩ نوفمبر ⁦2026⁩، على ملصقين ولّدناهما بأنفسنا. باختصار: التقسيم نظيف في التصاميم الرسومية المسطّحة، وملفات الطبقات لا تأتي بالمقاس الذي تشغله على اللوحة، والعلامة المائية الافتراضية تتناثر في الصورة المعاد تركيبها إن تركتها مفعّلة. الأرقام والكود أدناه. المعاملات في مرجع ⁦Seedream 5.0 Pro API⁩، وبيئة التجربة في صفحة النموذج.

ماذا أعاد طلب واحد؟

كانت صورة الاختبار ملصق جاز بمقاس ⁦1248 × 1872⁩: عنوان بخط ذي زوائد، وقمر بلون مرجاني، وعازف ساكسفون مقصوص من أمواج ورقية، وشريط أمواج في الأسفل وسطر لتفاصيل الفعالية. أرسلناه مع ⁦size: "1.5K"⁩، بلا موجّه ومع إيقاف العلامة المائية. اكتملت المهمة في ⁦108⁩ ثوانٍ وأعادت ست صور: صورة القاعدة وخمس طبقات.

ملصق الجاز والطبقات الشفافة الخمس التي أعادها ⁦Seedream 5.0 Pro⁩: الأمواج والقمر وعازف الساكسفون والعنوان وسطر الفعالية

⁦z_index⁩⁦name⁩ (كما أُعيد)المربع على صورة القاعدةملف ⁦PNG⁩
⁦0⁩صورة القاعدةاللوحة كاملة⁦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⁩

فاجأنا أمران إيجابيًا. عادت صورة القاعدة ورقة فارغة، بعد إزالة كل العناصر وملء مواضعها بالنسيج الورقي. وطبقة القمر (التي سمّاها النموذج شمسًا) دائرة كاملة، تشمل الجزء الذي حجبه الساكسفون في الأصل. يمكنك تحريك العازف جانبًا دون أن تجد فراغًا خلفه.

كان التشغيل الأول أكثر ازدحامًا: إعلان منتج بمقاس ⁦1024 × 1536⁩ لإبريق قهوة مقطّرة، أرسلناه بمقاس ⁦1K⁩ بلا موجّه. استغرق ⁦140⁩ ثانية وأعاد صورة القاعدة و⁦13⁩ طبقة. فصل النموذج الإبريق والفنجان والصحن ووعاء حبوب القهوة والحبوب المتناثرة والنبتة، وكلًا من أيقونات المزايا الثلاث وأربع كتل نصية. كان حقل ⁦description⁩ أنفع مما توقعنا. وصف النبتة كان: "⁦Blurred green plant leaves in the top right corner. Extract the entire foliage, exclude the surrounding wall background⁩." (أوراق نبتة خضراء ضبابية في الزاوية العلوية اليمنى. استخرج الأوراق كاملة، واستبعد خلفية الجدار المحيط.)

قبل أن تبني خطة التحرير عليه، انتبه لهذا القيد: طبقات النص صور للنص. طبقة العنوان ملف ⁦PNG⁩ للحروف، وليست خطًا يمكنك إعادة الكتابة به. تغيير الكلمات لا يزال يتطلب توليد تصميم جديد لتلك الطبقة.

ملفات ⁦PNG⁩ أكبر من مربعاتها

انظر مجددًا إلى آخر عمودين في الجدول. كل ملف طبقة أكبر من المساحة التي يغطيها على صورة القاعدة، وبمعامل مختلف كل مرة: ⁦1.37×⁩ للعازف، و⁦1.51×⁩ للأمواج، و⁦1.67×⁩ للعنوان، و⁦2.66×⁩ لسطر الفعالية، و⁦2.68×⁩ للقمر. تتطابق نسبة العرض إلى الارتفاع مع المربع بفارق لا يتجاوز نحو واحد بالمئة، فلا يوجد تشوّه، لكن لصق الطبقة بمقاسها الأصلي سيجعلها أكبر بكثير من المطلوب.

تقول الوثائق الرسمية إن كل طبقة تأتي "بدقة قريبة من الدقة المحددة بواسطة ⁦size⁩" وتحافظ على نسبة أبعاد منطقتها.[⁦1⁩] لم تقترب نتائجنا من ⁦1.5K⁩: مع هذا الإعداد تراوحت الملفات الخمسة بين ⁦0.21⁩ و⁦1.29⁩ مليون بكسل. عمليًا، اعتمد أبعاد المربع لا أبعاد الملف.

أي مربع إحاطة أستخدم؟

تحمل كل طبقة نسختين من المربع نفسه.[⁦1⁩] يمثّل ⁦bounding_box.absolute⁩ القيم ⁦[left, top, right, bottom]⁩ ببكسلات صورة القاعدة المُعادة. ويمثّل ⁦bounding_box.normalized⁩ المربع نفسه بأجزاء من ألف من عرض صورة القاعدة وارتفاعها، مثل ⁦[198, 260, 792, 754]⁩ لعازف الساكسفون. استخدم ⁦absolute⁩ لإعادة التركيب على صورة القاعدة المُعادة، و⁦normalized⁩ لوضع الطبقات على لوحة بأي مقاس آخر.

إعادة تركيب الملصق

رتّب الصور بحسب ⁦z_index⁩، وابدأ بصورة القاعدة، وغيّر مقاس كل طبقة ليلائم مربعها بالإحداثيات المطلقة، ثم الصقها مع قناة ألفا الخاصة بها. هذا هو السكربت الذي شغّلناه على المهمة المكتملة:

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")

ملصق الجاز الأصلي يسارًا والنسخة المعاد تركيبها من طبقات ⁦Seedream 5.0 Pro⁩ يمينًا

النسخة المعاد تركيبها يمينًا قريبة من الأصل يسارًا. عند القياس بكسلًا ببكسل، يبلغ متوسط الفرق نحو ⁦7⁩ إلى ⁦9⁩ درجات من أصل ⁦255⁩ لكل قناة لونية، ولا تتجاوز نسبة البكسلات التي يختلف مقدارها بأكثر من ⁦32⁩ درجة ⁦2.8%⁩. تقع هذه البكسلات على حدود العناصر. اختفت الظلال الناعمة التي كانت الأشكال الورقية تلقيها على الخلفية. لم تنتمِ إلى أي طبقة، وأزالتها إعادة الرسم من صورة القاعدة. إن كان المظهر يعتمد على الظلال، فأضفها مجددًا في محرّرك.

أوقف العلامة المائية قبل تقسيم الصورة إلى طبقات

القيمة الافتراضية لحقل ⁦watermark⁩ هي ⁦true⁩، فتضيف علامة "⁦AI generated⁩" صغيرة في الزاوية السفلية اليمنى.[⁦1⁩] على الصورة العادية، تكون علامة واحدة في زاوية واحدة. تركناها مفعّلة في التشغيل الأول. عادت صورة القاعدة بعلامة في زاويتها، وكذلك سبع من الطبقات الـ⁦13⁩، كل منها بعلامة في الزاوية السفلية اليمنى من ملف ⁦PNG⁩ الخاص بها، عائمة فوق بكسلات شفافة. أما الطبقات الست التي لم تحمل علامة فكانت الأيقونات الصغيرة والكتل النصية الأقل ارتفاعًا.

ملصق الإبريق المعاد تركيبه من طبقات ⁦Seedream 5.0 Pro⁩، مع تحديد علامة "⁦AI generated⁩" الخاصة بطبقة النبتة على الجدار وتكبيرها

عندما أعدنا تركيب ذلك الملصق، ظهرت علامة طبقة النبتة على الجدار في منتصف الحافة اليمنى، بعيدًا عن أي زاوية. وضعت الطبقات الأخرى ذات العلامة علاماتها داخل الصورة أيضًا، مصغّرة مع الطبقة. أرسل ⁦"watermark": false⁩ عند تقسيم الصورة إلى طبقات ما لم تكن مستعدًا لتنظيف كل طبقة.

إرسال الطلب ودفع تكلفته

يستخدم تقسيم الصورة إلى طبقات نقطة النهاية نفسها المستخدمة للتوليد. هذا هو الطلب الذي نوصي به للملصقات:

{
  "model": "seedream-5-0-pro",
  "image": "https://example.com/poster.png",
  "layer_decomposition": true,
  "size": "1.5K",
  "watermark": false
}

يجب أن يكون الإدخال صورة واحدة بالضبط بصيغة ⁦PNG⁩ أو ⁦JPEG⁩، بنسبة أبعاد بين ⁦1:16⁩ و⁦16:1⁩، وبحجم لا يتجاوز ⁦30 MB⁩، وإجمالي بكسلات بين ⁦262,144⁩ (⁦512 × 512⁩) و⁦36,000,000⁩ (⁦6000 × 6000⁩).[⁦1⁩] ينطبق ⁦output_format⁩ على صورة القاعدة فقط. الطبقات دائمًا ⁦PNG⁩.[⁦1⁩] إذا فشلت طبقة واحدة، يفشل الطلب كله؛ لا توجد نتيجة جزئية.[⁦1⁩]

كيف تُحسب تكلفة تقسيم الصورة إلى طبقات؟

على ⁦SeedRouter⁩ تُحتسب كل صورة مُعادة: صورة القاعدة وكل طبقة. تُطبّق شريحة سعر واحدة على صور الطلب كلها. يبقى الطلب في الشريحة الأدنى فقط إن كانت كل صورة مُعادة لا تتجاوز ⁦2.61⁩ مليون بكسل؛ تكفي صورة واحدة أكبر لنقل الطلب كله إلى الشريحة الأعلى. عند قبول المهمة نحجز تكلفة ⁦17⁩ صورة، وهو أقصى ما يمكن أن يعيده التقسيم، ولا نحتسب إلا ما يعود فعلًا. أعاد التشغيلان ⁦14⁩ و⁦6⁩ صور، وبقيا كلاهما في الشريحة الأدنى. تقسيم الصورة إلى طبقات إذا فشل لا يُحتسب.

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.

ScenarioUSD 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.

هل أستخدم المقاس ⁦auto⁩؟

⁦auto⁩ هو الافتراضي، ويُبقي صورة القاعدة وكل طبقة قريبتين من مقاسهما الأصلي بالبكسل: كل ما يقل عن ⁦1K⁩ يخرج بمقاس ⁦1K⁩، وكل ما يزيد على ⁦2K⁩ يخرج بمقاس ⁦2K⁩.[⁦1⁩] يفيد ذلك عندما تريد كل جزء قريبًا من مقاسه الأصلي. وهو أيضًا طريق سهل للوصول إلى الشريحة الأعلى، لأن طبقة كبيرة واحدة أو صورة قاعدة كبيرة تكفي. ويعامل الحجز لدينا ⁦auto⁩ ضمن الشريحة الأعلى أيضًا. للملصقات وتصاميم الشبكات الاجتماعية، نختار ⁦1.5K⁩، الذي يكلّف مثل ⁦1K⁩.

هل أستطيع تحديد الأجزاء التي يفصلها؟

نعم. ⁦prompt⁩ اختياري عند تقسيم الصورة إلى طبقات. من دونه يختار النموذج العناصر الرئيسية بنفسه؛ ومعه يفصل ما تطلبه.[⁦1⁩] طلب طبقات أكثر من الحد قد يؤدي إلى إسقاط بعضها.[⁦1⁩] لم نستخدم موجّهًا في أي من التشغيلين، وكانت الخيارات التلقائية منطقية: لم يدمج الأيقونات الثلاث، وأبقى الحبوب المتناثرة منفصلة عن الوعاء.

متى يستحق الاستخدام؟

في التصاميم الرسومية المسطّحة، يوفّر تقسيم الصورة إلى طبقات وقتًا فعليًا. عاد الملصقان على شكل أجزاء أمكننا إعادة ترتيبها فورًا، بعد ملء المناطق المخفية بالفعل. توقّع أن يستغرق ذلك أطول من التوليد العادي. استغرقت عمليتا التقسيم ⁦108⁩ و⁦140⁩ ثانية؛ واستغرق التوليد بمقاس ⁦1K⁩ لدينا ⁦35⁩ إلى ⁦55⁩ ثانية.

تقل فائدته حين تكون القيمة في تفاصيل لا تنتمي لأي طبقة: الظلال الملقاة، والنص الذي تريد تحريره كنص. لم نجرّبه بعد على صورة فوتوغرافية بعمق مجال كبير وعناصر متداخلة، لذا لا نستطيع الجزم بكيفية تعامله معها.

المصادر

  1. ⁦ByteDance⁩. ⁦Image generation API⁩ (وثائق ⁦ModelArk⁩). جرى التحقق في ⁦2⁩ نوفمبر ⁦2026⁩ على ⁦docs.byteplus.com⁩.

أدلة ذات صلة