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 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}");
}
Format yang Didukung
| Format | Ekstensi | Baca | Tulis |
|---|---|---|---|
| Dokumen Photoshop | psd | ✓ | ✓ |
| Dokumen Besar Photoshop | psb | ✓ | ✓ |
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.