Pendahuluan

PsdImage.layers mengembalikan setiap lapisan dalam dokumen PSD atau PSB sebagai daftar objek Layer. Posting ini secara khusus melihat apa yang diungkapkan oleh Layer: geometri dan status visualnya, enumerasi mode campuran dan flag mask, serta kelas metadata yang mendeskripsikan saluran, mask, dan rentang pencampuran lapisan.


Apa yang Disertakan

Kelas Layer

Setiap Layer memiliki nama (name), sebuah Rectangle pembatas (bounds, dengan turunan width/height/top/left/bottom/right), status visibilitas dan komposit (is_visible, opacity, clipping, blend_mode_key), dan jumlah saluran (channels_count). name, is_visible, opacity, clipping, blend_mode_key, dan empat tepi batas dapat semua diubah dan ditulis kembali dengan PsdImage.save().

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}")

Mode Campuran dan Flag Mask

blend_mode_key adalah nilai enum BlendMode — perpustakaan ini mendefinisikan 29 mode campuran PSD standar (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY, dan lainnya). Enum flag LayerMaskFlags terpisah (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) menjelaskan perilaku render mask ketika sebuah lapisan memilikinya.

Metadata Saluran dan Masker

Layer.channel_information mengembalikan daftar objek ChannelInformation yang menggambarkan ID setiap saluran, metode kompresi, dan panjang byte. Layer.layer_mask_data (sebuah LayerMaskDataShort bila ada) menggambarkan batas dan flag masker lapisan; Layer.layer_blending_ranges_data menampilkan rentang pencampuran komposit dan per-saluran. Ketiga properti ini bersifat read-only dalam build FOSS ini — setter mereka akan memunculkan NotSupportedException jika dipanggil, meskipun mereka muncul sebagai properti biasa.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    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}")

Panduan Cepat

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATH
from aspose_psd_foss.psdimage import PsdImage

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

Format yang Didukung

FormatEkstensiBacaTulis
PSDpsd✓✓
PSBpsb✓✓

Sumber Terbuka & Lisensi

Aspose.PSD FOSS untuk Python dilisensikan di bawah MIT dan dapat digunakan dalam produk komersial tanpa royalti, tanpa watermark evaluasi atau batasan penggunaan.

Perpustakaan ini tidak memiliki ketergantungan native pihak ketiga — hanya perpustakaan standar Python yang diperlukan pada waktu runtime.


Memulai

Sumber Daya Terkait