Layers

Layers

PsdImage.layers vrací každou parsovanou vrstvu jako seznam objektů Layer. Každý Layer poskytuje vlastní geometrii, viditelnost a stav kompozice a metadata o svých kanálech, masce a rozsazích prolnutí.


Čtení metadat vrstev

name, bounds (a odvozené width/height/top/left/bottom/right), is_visible, opacity, clipping, blend_mode_key a channels_count jsou všechny čitelné přímo.

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

Podporované úpravy metadat

name, is_visible, opacity, clipping, blend_mode_key a čtyři hraniční okraje (top/left/bottom/right) lze změnit přímo a zapsat zpět pomocí 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 kanálů a masky

channel_information, layer_mask_data a layer_blending_ranges_data jsou v této FOSS verzi jen pro čtení — jejich settery vyvolají 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}")

Odstraňování nebo přeuspořádání vrstev

PsdImage.layers má jak setter, tak getter: přiřazení filtrovaného nebo přeuspořádaného seznamu nahradí kolekci vrstev dokumentu.

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

Tipy a osvědčené postupy

  • Indexujte do image.layers podle pozice; pořadí v seznamu odpovídá pořadí vrstev v dokumentu.
  • blend_mode_key přijímá libovolnou výčtovou hodnotu BlendMode — neprovádí se žádná validace vůči deklarovanému barevnému režimu dokumentu.
  • channel_information, layer_mask_data a layer_blending_ranges_data lze číst, ale nikdy nepřiřadit.
  • Zavolejte PsdImage.save() jednou po všech úpravách; každé volání zapíše celý dokument.

Běžné problémy

ProblémPříčinaOprava
NotSupportedException při nastavení channel_information, layer_mask_data nebo layer_blending_ranges_dataTyto 3 vlastnosti jsou ve FOSS buildu jen ke čtení, i když mají setterPřečtěte si hodnotu; nesnažte se ji znovu přiřadit
layer_mask_data přístup, když není maskaNe každá vrstva má pododdíl maskyZkontrolujte layer.has_mask_data před čtením layer.layer_mask_data

FAQ

Mohu odebrat vrstvu?

Ano — přiřaďte image.layers k filtrovanému seznamu.

Mohu změnit kanál nebo maskovací data vrstvy?

Ne. channel_information, layer_mask_data a layer_blending_ranges_data jsou jen ke čtení — lze změnit pouze name, is_visible, opacity, clipping, blend_mode_key a okrajové hranice.


API Reference Shrnutí

Třída/MetodaPopis:
PsdImage.layersZíská nebo nastaví kolekci vrstev— nastavitelnou pro odstranění/přeskupení
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightPodporované úpravy metadat vrstev
Layer.bounds / width / height / channels_countPouze pro čtení geometrie vrstvy
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataPouze pro čtení metadat kanálu/masky/blendingu

Viz také:

 Čeština