מבוא
PsdImage.Layers מחזיר כל שכבה במסמך PSD או PSB כמערך Layer. פוסט זה מתמקד במיוחד במה ש-Layer חושף: הגאומטריה והמצב הוויזואלי שלו, מינויי מצב המיזוג ודגלי המסכה, וכיתות המטה-נתונים שמתארות את ערוצי השכבה, המסכה וטווחי המיזוג.
מה כלול
מחלקת השכבה
כל Layer נושא שם בפסקאל (Name), Rectangle תוחם (Bounds, עם ערכים נגזרים Width/Height/Top/Left/Bottom/Right), מצב נראות וקומפוזיטינג (IsVisible, Opacity, Clipping, BlendModeKey), וספירת ערוצים (ChannelsCount). ניתן לשנות את Name, IsVisible, Opacity, Clipping, BlendModeKey, ואת ארבעת קצוות הגבולות ולכתוב אותם בחזרה באמצעות PsdImage.Save().
using var image = (PsdImage)Image.Load(inputPath);
foreach (Layer layer in image.Layers)
{
Console.WriteLine($"{layer.Name}: {layer.Bounds}, " +
$"Visible={layer.IsVisible}, Opacity={layer.Opacity}, " +
$"BlendMode={layer.BlendModeKey}");
}
מצבי מיזוג ודגלי מסכה
BlendModeKey הוא ערך enum מסוג BlendMode — הספרייה מגדירה את כל 29 מצבי המיזוג הסטנדרטיים של PSD (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity, ואחרים). enum נפרד של LayerMaskFlags (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) מתאר התנהגות רינדור של מסכה כאשר לשכבה יש אחת.
נתוני ערוץ ומסכה
Layer.ChannelInformation מחזיר ChannelInformation[] המתאר את מזהה של כל ערוץ, שיטת הדחיסה, ואורך הבייטים. Layer.LayerMaskData (LayerMaskData מופשט, ובפועל LayerMaskDataShort כאשר קיים) מתאר את גבולות והדגלים של מסכת השכבה; Layer.LayerBlendingRangesData חושף את טווחי המיזוג המשולב והפרטיים לכל ערוץ. שלושת המאפיינים האלה קריאה- בלבד בבנייה הזו של FOSS — המחסנים שלהם זורקים NotSupportedException אם נקראים, למרות שהן מופיעות כמאפייני get/set רגילים.
Layer layer = image.Layers[0];
foreach (ChannelInformation channel in layer.ChannelInformation)
{
Console.WriteLine($"Channel {channel.ChannelID}: {channel.CompressionMethod}, {channel.Length} bytes");
}
if (layer.LayerMaskData is { } mask)
{
Console.WriteLine($"Mask bounds: {mask.MaskRectangle}, flags: {mask.Flags}");
}
התחלה מהירה
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildusing Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Psd.Layers;
using System.Linq;
using var image = (PsdImage)Image.Load("input.psd");
var visibleLayers = image.Layers.Where(layer => layer.IsVisible);
foreach (Layer layer in visibleLayers)
{
Console.WriteLine($"{layer.Name}: Opacity={layer.Opacity}, BlendMode={layer.BlendModeKey}");
}
פורמטים נתמכים
| פורמט | סיומת | קריאה | כתיבה |
|---|---|---|---|
| מסמך פוטושופ | psd | ✓ | ✓ |
| מסמך פוטושופ גדול | psb | ✓ | ✓ |
קוד פתוח ורישוי
Aspose.PSD FOSS עבור .NET מורש תחת רישיון MIT וניתן להשתמש בו במוצרים מסחריים ללא תמלוגים, ללא סימן מים של הערכה או מגבלת שימוש.
החבילה נמצאת בגרסה 1.0.0 ודורשת רק .NET 10.0 בזמן ריצה — אין לה תלות חיצונית צד שלישי אחרת.