Pendahuluan

PsdImage.Layers mengembalikan setiap layer dalam dokumen PSD atau PSB sebagai array Layer. Posting ini secara khusus melihat apa yang diungkapkan oleh Layer: geometri dan keadaan visualnya, enumerasi mode campuran dan flag masker, serta kelas metadata yang menggambarkan saluran, masker, dan rentang pencampuran layer.


Apa yang Disertakan

Kelas Layer

Setiap Layer memiliki nama Pascal (Name), sebuah Rectangle pembatas (Bounds, dengan turunan Width/Height/Top/Left/Bottom/Right), keadaan visibilitas dan komposit (IsVisible, Opacity, Clipping, BlendModeKey), dan jumlah saluran (ChannelsCount). Name, IsVisible, Opacity, Clipping, BlendModeKey, dan empat tepi batas dapat diubah dan ditulis kembali dengan 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}");
}

Mode Campuran dan Flag Masker

BlendModeKey adalah nilai enum BlendMode — perpustakaan mendefinisikan semua 29 mode campuran PSD standar (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity, dan lainnya). Enum LayerMaskFlags terpisah (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) menjelaskan perilaku render masker ketika sebuah layer memilikinya.

Metadata Saluran dan Masker

Layer.ChannelInformation mengembalikan sebuah ChannelInformation[] yang menjelaskan ID setiap saluran, metode kompresi, dan panjang byte. Layer.LayerMaskData (sebuah LayerMaskData abstrak, secara konkret sebuah LayerMaskDataShort bila ada) menggambarkan batas dan flag masker lapisan; Layer.LayerBlendingRangesData menampilkan rentang pencampuran komposit dan per-saluran. Ketiga properti ini bersifat read-only dalam build FOSS ini — setter-nya melempar NotSupportedException jika dipanggil, meskipun mereka muncul sebagai properti get/set biasa.

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}");
}

Mulai Cepat

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}");
}

Format yang Didukung

FormatEkstensiBacaTulis
Dokumen Photoshoppsd✓✓
Dokumen Besar Photoshoppsb✓✓

Sumber Terbuka & Lisensi

Aspose.PSD FOSS untuk .NET dilisensikan di bawah MIT dan dapat digunakan dalam produk komersial tanpa royalti, tanpa watermark evaluasi atau batas penggunaan.

Paket ini berada pada versi 1.0.0 dan hanya memerlukan .NET 10.0 saat runtime — tidak memiliki dependensi pihak ketiga lainnya.


Memulai

Sumber Daya Terkait