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מקבל כל ערך של enumBlendMode— אין בדיקה מול מצב הצבע שהוגדר במסמך.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 | נתוני מטא של ערוץ/מסכה/מיזוג בקריאה בלבד |