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.layers berdasarkan posisi; urutan daftar cocok dengan urutan lapisan dokumen itu sendiri.
  • blend_mode_key menerima nilai enum BlendMode apa pun — tidak ada validasi terhadap mode warna yang dideklarasikan dalam dokumen.
  • channel_information, layer_mask_data, dan layer_blending_ranges_data dapat dibaca tetapi tidak pernah dapat ditetapkan ulang.
  • Panggil PsdImage.save() sekali setelah semua penyuntingan; setiap pemanggilan menulis seluruh dokumen.

Masalah Umum

MasalahPenyebabPerbaikan
NotSupportedException saat mengatur channel_information, layer_mask_data, atau layer_blending_ranges_dataKetiga properti ini bersifat read-only dalam build FOSS meskipun memiliki setterBaca nilainya; jangan mencoba menetapkannya kembali
akses layer_mask_data ketika tidak ada maskTidak setiap lapisan memiliki subbagian maskPeriksa 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/MetodeDeskripsi
PsdImage.layersMendapatkan atau mengatur koleksi lapisan — dapat diatur untuk penghapusan/penyusunan ulang
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightEdit metadata lapisan yang didukung
Layer.bounds / width / height / channels_countGeometri lapisan hanya-baca
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataMetadata saluran/maske/pencampuran hanya-baca

Lihat Juga

 Bahasa Indonesia