Layers

Layers

PsdImage.layers her ayrıştırılmış katmanı Layer nesnelerinin bir listesi olarak döndürür. Her Layer, kendi geometrisini, görünürlüğünü ve birleşim durumunu, ayrıca kanalları, maskesi ve karıştırma aralıklarıyla ilgili meta verileri ortaya çıkarır.


Katman Metaverilerini Okuma

name, bounds (ve türetilen width/height/top/left/bottom/right), is_visible, opacity, clipping, blend_mode_key ve channels_count doğrudan okunabilir.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    for layer in image.layers:
        print(f"{layer.name}: {layer.bounds}, "
              f"Visible={layer.is_visible}, Opacity={layer.opacity}, "
              f"BlendMode={layer.blend_mode_key}")

Desteklenen Meta Veri Düzenlemeleri

name, is_visible, opacity, clipping, blend_mode_key ve dört sınır kenarı (top/left/bottom/right) yerinde değiştirilebilir ve PsdImage.save() ile geri yazılabilir.

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode

with PsdImage.load("input.psd") as image:
    layer = image.layers[0]
    layer.name = f"{layer.name} (edited)"
    layer.is_visible = not layer.is_visible
    layer.opacity = 128
    layer.blend_mode_key = BlendMode.MULTIPLY
    image.save("output.psd")

Kanal ve Maske Metaverileri

channel_information, layer_mask_data, ve layer_blending_ranges_data bu FOSS yapısında yalnızca okunabilir — ayarlayıcıları NotSupportedException hatasını oluşturur.

layer = image.layers[0]
for channel in layer.channel_information:
    print(f"Channel {channel.ChannelID}: {channel.compression_method}, {channel.length} bytes")

if layer.has_mask_data:
    mask = layer.layer_mask_data
    print(f"Mask bounds: {mask.mask_rectangle}, flags: {mask.flags}")

Katmanları Kaldırma veya Yeniden Sıralama

PsdImage.layers bir alıcı (getter) olduğu gibi bir ayarlayıcıya (setter) da sahiptir: filtrelenmiş veya yeniden sıralanmış bir liste atamak, belgenin katman koleksiyonunu değiştirir.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    image.layers = [layer for layer in image.layers if layer.is_visible]
    image.save("output.psd")

İpuçları ve En İyi Uygulamalar

  • image.layers içinde konuma göre indeksleyin; liste sırası belgenin kendi katman sırasına eşdeğerdir.
  • blend_mode_key, herhangi bir BlendMode enum değerini kabul eder — belge tarafından belirtilen renk moduna karşı herhangi bir doğrulama yapılmaz.
  • channel_information, layer_mask_data ve layer_blending_ranges_data 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, channel_information, layer_mask_data veya layer_blending_ranges_data ayarlandığındaBu 3 özellik, bir ayarlayıcıya sahip olmasına rağmen FOSS derlemesinde yalnızca okunabilir.Değeri okuyun; yeniden atamaya çalışmayın.
layer_mask_data erişimi, maske olmadığındaHer katmanın bir maske alt bölümü bulunmaz.layer.has_mask_data‘ı layer.layer_mask_data okumadan önce kontrol edin

FAQ

Bir katmanı kaldırabilir miyim?

Evet — image.layers‘ı filtrelenmiş bir listeye yeniden atayın.

Bir katmanın kanalını veya maske verilerini değiştirebilir miyim?

Hayır. channel_information, layer_mask_data ve layer_blending_ranges_data yalnızca okunur — sadece name, is_visible, opacity, clipping, blend_mode_key ve sınır kenarları değiştirilebilir.


API Reference Özeti

Sınıf/YöntemAçıklama
PsdImage.layersKatman koleksiyonunu alır veya ayarlar — kaldırma/yeniden sıralama için ayarlanabilir
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightDesteklenen katman meta verisi düzenlemeleri
Layer.bounds / width / height / channels_countSalt okunur katman geometrisi
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataYalnızca okuma kanalı/maske/kaynaştırma meta verileri

Ayrıca Bakınız

 Türkçe