معرفی

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 build
using 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 در زمان اجرا نیاز دارد — وابستگی‌های شخص ثالث دیگری ندارد.


شروع کار

منابع مرتبط