Layers

Layers

PsdImage.layers מחזיר כל שכבה מנותחת כרשימה של אובייקטים מסוג Layer. כל Layer מציג את הגאומטריה שלו, הנראות ומצב הקומפוזיט, וכן מטא-נתונים על הערוצים, המסכה וטווחי המיזוג.


קריאת מטא-נתוני שכבה

name, bounds (וwidth/height/top/left/bottom/right המוגזרים), is_visible, opacity, clipping, blend_mode_key, ו-channels_count ניתנים לקריאה ישירה.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    for layer in image.layers:
        print(f"{layer.name}: {layer.bounds}, "
              f"Visible={layer.is_visible}, Opacity={layer.opacity}, "
              f"BlendMode={layer.blend_mode_key}")

עריכות מטא-נתונים נתמכות

name, is_visible, opacity, clipping, blend_mode_key, והארבע קצוות הגבולות (top/left/bottom/right) ניתנים לשינוי במקום וניתן לכתוב אותם בחזרה באמצעות PsdImage.save().

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode

with PsdImage.load("input.psd") as image:
    layer = image.layers[0]
    layer.name = f"{layer.name} (edited)"
    layer.is_visible = not layer.is_visible
    layer.opacity = 128
    layer.blend_mode_key = BlendMode.MULTIPLY
    image.save("output.psd")

מטא-נתוני ערוץ ומסכה

channel_information, layer_mask_data ו-layer_blending_ranges_data הם קריאה בלבד במבנה ה-FOSS הזה — המחלקים שלהם גורמים ל-NotSupportedException.

layer = image.layers[0]
for channel in layer.channel_information:
    print(f"Channel {channel.ChannelID}: {channel.compression_method}, {channel.length} bytes")

if layer.has_mask_data:
    mask = layer.layer_mask_data
    print(f"Mask bounds: {mask.mask_rectangle}, flags: {mask.flags}")

הסרה או שינוי סדר של שכבות

PsdImage.layers כולל גם setter וגם getter: הקצאת רשימה מסוננת או מסודרת מחדש מחליפה את אוסף השכבות של המסמך.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    image.layers = [layer for layer in image.layers if layer.is_visible]
    image.save("output.psd")

טיפים ושיטות עבודה מומלצות

  • ההצבעה אל image.layers לפי מיקום; סדר הרשימה תואם לסדר השכבות של המסמך עצמו.
  • blend_mode_key מקבל כל ערך של enum BlendMode — אין בדיקה מול מצב הצבע שהוגדר במסמך.
  • channel_information, layer_mask_data ו-layer_blending_ranges_data ניתנים לקריאה אך לעולם לא ניתן לשנותם.
  • קרא ל-PsdImage.save() פעם אחת לאחר כל העריכות; כל קריאה כותבת את המסמך המלא.

בעיות נפוצות

בעיהסיבהתיקון
NotSupportedException כאשר מגדירים channel_information, layer_mask_data או layer_blending_ranges_dataשלושת המאפיינים האלה הם קריאה-בלבד בבנייה של FOSS למרות שיש להם setterקרא את הערך; אל תנסה לשנות אותו
גישה layer_mask_data כאשר אין מסכהלא לכל שכבה יש תת-חלקת מסכהבדוק layer.has_mask_data לפני קריאת layer.layer_mask_data

FAQ

האם ניתן להסיר שכבה?

כן — הקצה מחדש את image.layers לרשימה מסוננת.

האם ניתן לשנות את ערוץ השכבה או נתוני המסכה?

לא. channel_information, layer_mask_data ו-layer_blending_ranges_data הם לקריאה בלבד — רק name, is_visible, opacity, clipping, blend_mode_key, וקצוות הגבולות ניתן לשנות.


API Reference סיכום

מחלקה/מתודהתיאור
PsdImage.layersמקבל או מגדיר את אוסף השכבות — ניתן להגדרה להסרה/סידור מחדש
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightעריכות מטא-נתונים נתמכות לשכבה
Layer.bounds / width / height / channels_countגאומטריית שכבה לקריאה בלבד
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataנתוני מטא של ערוץ/מסכה/מיזוג בקריאה בלבד

ראה גם

 עברית