مقدمة

يعيد 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 هو قيمة تعداد BlendMode — المكتبة تعرف جميع أوضاع الدمج القياسية الـ 29 في PSD (Normal، Multiply، Screen، Overlay، Darken، Lighten، ColorDodge، ColorBurn، HardLight، SoftLight، Difference، Exclusion، Hue، Saturation، Color، Luminosity، وغيرها). تعداد LayerMaskFlags منفصل (None، RelativeToLayer، Disabled، InvertedWhenBlending، UserMaskFromRenderingOtherData، UserOrVectorMasksHaveParameters) يصف سلوك عرض القناع عندما تحتوي الطبقة على واحد.

البيانات الوصفية للقناة والكمامة

Layer.ChannelInformation تُرجِع ChannelInformation[] تصف معرف كل قناة، طريقة الضغط، وطول البايت. Layer.LayerMaskData (كائن LayerMaskData مجرد، وهو عمليًا LayerMaskDataShort عندما يكون موجودًا) يصف حدود وعلامات قناع الطبقة؛ Layer.LayerBlendingRangesData يكشف عن نطاقات الدمج المركبة ولكل قناة. الخصائص الثلاثة كلها للقراءة فقط في هذا البناء المفتوح المصدر — مُعيّنات القيم تُطلق NotSupportedException إذا نُديت، رغم أنها تظهر كخصائص عادية للقراءة/الكتابة.

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 وقت التشغيل — لا توجد لديها أي تبعيات طرف ثالث أخرى.


البدء

الموارد ذات الصلة