Layers
Layers
PsdImage.Layers her ayrıştırılan katmanı bir Layer dizisi olarak döndürür. Her Layer kendi geometrisini, görünürlüğünü ve birleşim durumunu, ayrıca kanalları, maskesi ve karışım aralıklarıyla ilgili meta verileri ortaya çıkarır.
Katman Meta Verilerini Okuma
Name, Bounds (ve türetilen Width/Height/Top/Left/Bottom/Right), IsVisible, Opacity, Clipping, BlendModeKey ve ChannelsCount doğrudan okunabilir.
foreach (Layer layer in image.Layers)
{
Console.WriteLine($"{layer.Name}: {layer.Bounds}, " +
$"Visible={layer.IsVisible}, Opacity={layer.Opacity}, " +
$"BlendMode={layer.BlendModeKey}");
}Desteklenen Meta Veri Düzenlemeleri
Name, IsVisible, Opacity, Clipping, BlendModeKey ve dört sınır kenarı (Top/Left/Bottom/Right) yerinde değiştirilebilir ve PsdImage.Save() ile geri yazılabilir.
Layer layer = image.Layers[0];
layer.Name = $"{layer.Name} (edited)";
layer.IsVisible = !layer.IsVisible;
layer.Opacity = 128;
layer.BlendModeKey = BlendMode.Multiply;
image.Save(outputPath);Kanal ve Maske Meta Verileri
ChannelInformation, LayerMaskData ve LayerBlendingRangesData bu FOSS yapısında yalnızca okunabilir — ayarlayıcıları NotSupportedException hatası fırlatır.
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}");
}Katmanları Kaldırma veya Yeniden Sıralama
PsdImage.Layers bir ayarlayıcı ve bir alıcıya sahiptir: filtrelenmiş veya yeniden sıralanmış bir dizi atamak, belgenin katman koleksiyonunu değiştirir. Yeni bir Layer örneği oluşturmak için herkese açık bir yol yoktur, bu yüzden bu yalnızca zaten mevcut olan katmanları kaldırmayı veya yeniden sıralamayı destekler — sıfırdan bir katman eklemeyi değil.
// Keep only visible layers
image.Layers = image.Layers.Where(layer => layer.IsVisible).ToArray();
image.Save(outputPath);İpuçları ve En İyi Uygulamalar
image.Layersiçinde konuma göre indeksleyin; dizi sırası belgenin kendi katman sırası ile eşleşir.BlendModeKey, herhangi birBlendModeenum değerini kabul eder — belgenin bildirilen renk moduna karşı herhangi bir doğrulama yapılmaz.ChannelInformation,LayerMaskDataveLayerBlendingRangesDataokunabilir ancak asla yeniden atanamaz.- Tüm düzenlemelerden sonra
PsdImage.Save()bir kez çağırın; her çağrı tam belgeyi yazar.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
NotSupportedException, ChannelInformation, LayerMaskData veya LayerBlendingRangesData ayarlandığında | Bu 3 özellik, bir setter’a sahip olmasına rağmen FOSS build’inde yalnızca okunabilir. | Değeri okuyun; yeniden atamaya çalışmayın |
LayerMaskData, bir katman için null | Her katmanın bir maske alt bölümü yoktur. | Kullanımdan önce null kontrol edin (layer.LayerMaskData is { } mask) |
FAQ
Bir katmanı kaldırabilir miyim?
Evet — image.Layers‘ı filtrelenmiş bir diziye yeniden atayın. Layer‘ın herkese açık bir yapıcı olmadığı için yeni bir katman ekleyemezsiniz; yalnızca mevcut ayrıştırılmış katmanlar tutulabilir, kaldırılabilir veya yeniden sıralanabilir.
Bir katmanın kanalını veya maske verisini değiştirebilir miyim?
Hayır. ChannelInformation, LayerMaskData ve LayerBlendingRangesData sadece okunabilir — yalnızca Name, IsVisible, Opacity, Clipping, BlendModeKey ve sınır kenarları değiştirilebilir.
API Reference Özeti
| Sınıf/Yöntem | Açıklama |
|---|---|
PsdImage.Layers | Katman koleksiyonunu alır veya ayarlar — yalnızca kaldırma/yeniden sıralama için ayarlanabilir |
Layer.Name / IsVisible / Opacity / Clipping / BlendModeKey / Top / Left / Bottom / Right | Desteklenen katman meta verisi düzenlemeleri |
Layer.Bounds / Width / Height / ChannelsCount | Salt okunur katman geometrisi |
Layer.ChannelInformation / LayerMaskData / LayerBlendingRangesData | Salt okunur kanal/maske/karıştırma meta verileri |