Layers

Layers

PsdImage.layers restituisce ogni livello analizzato come un elenco di oggetti Layer. Ogni Layer espone la propria geometria, visibilità e stato di composizione, nonché i metadati relativi ai suoi canali, maschera e intervalli di fusione.


Lettura dei metadati del livello

name, bounds (e i derivati width/height/top/left/bottom/right), is_visible, opacity, clipping, blend_mode_key e channels_count sono tutti leggibili direttamente.

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

Modifiche ai metadati supportate

name, is_visible, opacity, clipping, blend_mode_key e i quattro bordi dei limiti (top/left/bottom/right) possono essere modificati in loco e riscritti con 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")

Metadati di canale e maschera

channel_information, layer_mask_data e layer_blending_ranges_data sono di sola lettura in questa build FOSS — i loro setter sollevano 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}")

Rimuovere o Riordinare i Livelli

PsdImage.layers ha sia un setter sia un getter: assegnare una lista filtrata o riordinata sostituisce la collezione di livelli del documento.

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

Consigli e Buone Pratiche

  • Indicizza image.layers per posizione; l’ordine della lista corrisponde all’ordine dei livelli del documento.
  • blend_mode_key accetta qualsiasi valore enum BlendMode — non viene eseguita alcuna convalida rispetto alla modalità colore dichiarata del documento.
  • channel_information, layer_mask_data e layer_blending_ranges_data possono essere letti ma mai riassegnati.
  • Chiama PsdImage.save() una volta dopo tutte le modifiche; ogni chiamata scrive l’intero documento.

Problemi comuni

ProblemaCausaCorrezione
NotSupportedException durante l’impostazione di channel_information, layer_mask_data o layer_blending_ranges_dataQueste 3 proprietà sono di sola lettura nella build FOSS nonostante abbiano un setterLeggi il valore; non tentare di riassegnarlo
Accesso layer_mask_data quando non c’è mascheraNon tutti i livelli hanno una sottosezione mascheraVerifica layer.has_mask_data prima di leggere layer.layer_mask_data

FAQ

Posso rimuovere un livello?

Sì — riassegna image.layers a un elenco filtrato.

Posso modificare i dati del canale o della maschera di un livello?

No. channel_information, layer_mask_data e layer_blending_ranges_data sono di sola lettura — solo name, is_visible, opacity, clipping, blend_mode_key e i bordi dei limiti possono essere modificati.


API Reference Riepilogo

Classe/MetodoDescrizione
PsdImage.layersOttiene o imposta la collezione di layer — impostabile per rimozione/riordino
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightModifiche ai metadati del layer supportate
Layer.bounds / width / height / channels_countGeometria del layer a sola lettura
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataMetadati di canale/maschera/fusione in sola lettura

Vedi anche

 Italiano