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.Layers içinde konuma göre indeksleyin; dizi sırası belgenin kendi katman sırası ile eşleşir.
  • BlendModeKey, herhangi bir BlendMode enum değerini kabul eder — belgenin bildirilen renk moduna karşı herhangi bir doğrulama yapılmaz.
  • ChannelInformation, LayerMaskData ve LayerBlendingRangesData okunabilir 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

SorunNedenDüzeltme
NotSupportedException, ChannelInformation, LayerMaskData veya LayerBlendingRangesData ayarlandığındaBu 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 nullHer 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öntemAçıklama
PsdImage.LayersKatman koleksiyonunu alır veya ayarlar — yalnızca kaldırma/yeniden sıralama için ayarlanabilir
Layer.Name / IsVisible / Opacity / Clipping / BlendModeKey / Top / Left / Bottom / RightDesteklenen katman meta verisi düzenlemeleri
Layer.Bounds / Width / Height / ChannelsCountSalt okunur katman geometrisi
Layer.ChannelInformation / LayerMaskData / LayerBlendingRangesDataSalt okunur kanal/maske/karıştırma meta verileri

Ayrıca Bakınız

 Türkçe