معرفی
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 است — کتابخانه همه ۲۹ حالت ترکیب استاندارد 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 فقط-خواندنی هستند — متدهای setter آنها 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 در زمان اجرا نیاز دارد — وابستگیهای شخص ثالث دیگری ندارد.