Layers
Layers
PsdImage.layers mengembalikan setiap lapisan yang diurai sebagai daftar objek Layer. Setiap Layer menampilkan geometri, visibilitas, dan keadaan kompositnya sendiri, serta metadata tentang kanal, masker, dan rentang pencampuran.
Membaca Metadata Lapisan
name, bounds (dan width/height/top/left/bottom/right yang diturunkan), is_visible, opacity, clipping, blend_mode_key, dan channels_count semuanya dapat dibaca langsung.
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}")Edit Metadata yang Didukung
name, is_visible, opacity, clipping, blend_mode_key, dan empat tepi batas (top/left/bottom/right) dapat diubah di tempat dan ditulis kembali dengan PsdImage.save().
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")Metadata Kanal dan Masker
channel_information, layer_mask_data, dan layer_blending_ranges_data bersifat read-only dalam build FOSS ini — setter-nya akan memicu NotSupportedException.
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}")Menghapus atau Menyusun Ulang Lapisan
PsdImage.layers memiliki setter serta getter: menetapkan daftar yang telah difilter atau disusun ulang akan menggantikan koleksi lapisan dokumen.
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")Tips dan Praktik Terbaik
- Indeks ke
image.layersberdasarkan posisi; urutan daftar cocok dengan urutan lapisan dokumen itu sendiri. blend_mode_keymenerima nilai enumBlendModeapa pun — tidak ada validasi terhadap mode warna yang dideklarasikan dalam dokumen.channel_information,layer_mask_data, danlayer_blending_ranges_datadapat dibaca tetapi tidak pernah dapat ditetapkan ulang.- Panggil
PsdImage.save()sekali setelah semua penyuntingan; setiap pemanggilan menulis seluruh dokumen.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
NotSupportedException saat mengatur channel_information, layer_mask_data, atau layer_blending_ranges_data | Ketiga properti ini bersifat read-only dalam build FOSS meskipun memiliki setter | Baca nilainya; jangan mencoba menetapkannya kembali |
akses layer_mask_data ketika tidak ada mask | Tidak setiap lapisan memiliki subbagian mask | Periksa layer.has_mask_data sebelum membaca layer.layer_mask_data |
FAQ
Apakah saya dapat menghapus lapisan?
Ya — tetapkan kembali image.layers ke daftar yang difilter.
Apakah saya dapat mengubah data saluran atau mask lapisan?
Tidak. channel_information, layer_mask_data, dan layer_blending_ranges_data bersifat read-only — hanya name, is_visible, opacity, clipping, blend_mode_key, dan tepi batas yang dapat diubah.
Ringkasan API Reference
| Kelas/Metode | Deskripsi |
|---|---|
PsdImage.layers | Mendapatkan atau mengatur koleksi lapisan — dapat diatur untuk penghapusan/penyusunan ulang |
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / right | Edit metadata lapisan yang didukung |
Layer.bounds / width / height / channels_count | Geometri lapisan hanya-baca |
Layer.channel_information / layer_mask_data / layer_blending_ranges_data | Metadata saluran/maske/pencampuran hanya-baca |