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.layersiçinde konuma göre indeksleyin; liste sırası belgenin kendi katman sırasına eşdeğerdir.blend_mode_key, herhangi birBlendModeenum değerini kabul eder — belge tarafından belirtilen renk moduna karşı herhangi bir doğrulama yapılmaz.channel_information,layer_mask_datavelayer_blending_ranges_dataokunabilir 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, channel_information, layer_mask_data veya layer_blending_ranges_data ayarlandığında | Bu 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ığında | Her 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öntem | Açıklama |
|---|---|
PsdImage.layers | Katman 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 / right | Desteklenen katman meta verisi düzenlemeleri |
Layer.bounds / width / height / channels_count | Salt okunur katman geometrisi |
Layer.channel_information / layer_mask_data / layer_blending_ranges_data | Yalnızca okuma kanalı/maske/kaynaştırma meta verileri |