Layers

Layers

PsdImage.Layers mengembalikan setiap lapisan yang diurai sebagai array Layer. Setiap Layer menampilkan geometri, visibilitas, dan status kompositnya sendiri, serta metadata tentang kanalnya, masker, dan rentang pencampuran.


Membaca Metadata Lapisan

Name, Bounds (dan Width/Height/Top/Left/Bottom/Right yang diturunkan), IsVisible, Opacity, Clipping, BlendModeKey, dan ChannelsCount semuanya dapat dibaca secara langsung.

foreach (Layer layer in image.Layers)
{
    Console.WriteLine($"{layer.Name}: {layer.Bounds}, " +
                       $"Visible={layer.IsVisible}, Opacity={layer.Opacity}, " +
                       $"BlendMode={layer.BlendModeKey}");
}

Edit Metadata yang Didukung

Name, IsVisible, Opacity, Clipping, BlendModeKey, dan empat tepi batas (Top/Left/Bottom/Right) dapat diubah di tempat dan ditulis kembali dengan PsdImage.Save().

Layer layer = image.Layers[0];
layer.Name = $"{layer.Name} (edited)";
layer.IsVisible = !layer.IsVisible;
layer.Opacity = 128;
layer.BlendModeKey = BlendMode.Multiply;
image.Save(outputPath);

Metadata Kanal dan Masker

ChannelInformation, LayerMaskData, dan LayerBlendingRangesData bersifat read-only dalam build FOSS ini — setter mereka melempar NotSupportedException.

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

Menghapus atau Menyusun Ulang Lapisan

PsdImage.Layers memiliki setter serta getter: menugaskan array yang telah difilter atau disusun ulang menggantikan koleksi lapisan dokumen. Tidak ada cara publik untuk membuat instance Layer yang baru, jadi ini hanya mendukung penghapusan atau penyusunan ulang lapisan yang sudah ada — bukan menambahkan lapisan baru dari awal.

// Keep only visible layers
image.Layers = image.Layers.Where(layer => layer.IsVisible).ToArray();
image.Save(outputPath);

Tips dan Praktik Terbaik

  • Indeks ke image.Layers berdasarkan posisi; urutan array sesuai dengan urutan lapisan dokumen itu sendiri.
  • BlendModeKey menerima nilai enum BlendMode apa pun — tidak ada validasi yang dilakukan terhadap mode warna yang dideklarasikan dokumen.
  • ChannelInformation, LayerMaskData, dan LayerBlendingRangesData dapat dibaca tetapi tidak pernah dapat ditetapkan kembali.
  • Panggil PsdImage.Save() sekali setelah semua penyuntingan; setiap pemanggilan menulis seluruh dokumen.

Masalah Umum

MasalahPenyebabPerbaikan
NotSupportedException saat mengatur ChannelInformation, LayerMaskData, atau LayerBlendingRangesData.Ketiga properti ini bersifat read-only dalam build FOSS meskipun memiliki setter.Baca nilai tersebut; jangan mencoba menetapkannya kembali.
LayerMaskData adalah null untuk sebuah lapisan.Tidak setiap lapisan memiliki subbagian mask.Periksa null sebelum digunakan (layer.LayerMaskData is { } mask)

FAQ

Bisakah saya menghapus lapisan?

Ya — tetapkan ulang image.Layers ke array yang disaring. Anda tidak dapat menambahkan lapisan baru, karena Layer tidak memiliki konstruktor publik; hanya lapisan yang sudah diparsing yang ada dapat dipertahankan, dihapus, atau diurutkan kembali.

Bisakah saya mengubah saluran atau data masker lapisan?

Tidak. ChannelInformation, LayerMaskData, dan LayerBlendingRangesData bersifat read-only — hanya Name, IsVisible, Opacity, Clipping, BlendModeKey, dan tepi batas yang dapat diubah.


API Reference Ringkasan

Kelas/MetodeDeskripsi
PsdImage.LayersMendapatkan atau mengatur koleksi lapisan — dapat diatur untuk penghapusan/penyusunan ulang saja
Layer.Name / IsVisible / Opacity / Clipping / BlendModeKey / Top / Left / Bottom / RightEdit metadata lapisan yang didukung
Layer.Bounds / Width / Height / ChannelsCountGeometri lapisan hanya-baca
Layer.ChannelInformation / LayerMaskData / LayerBlendingRangesDataMetadata saluran/mask/blending hanya-baca

Lihat Juga

 Bahasa Indonesia