Introduzione
PsdImage.layers restituisce ogni livello in un documento PSD o PSB come un elenco di oggetti Layer. Questo post esamina specificamente ciò che espone un Layer: la sua geometria e stato visivo, le enumerazioni delle modalità di fusione e dei flag di maschera, e le classi di metadati che descrivono i canali, la maschera e le gamme di fusione di un livello.
Cosa è incluso
La classe Layer
Ogni Layer ha un nome (name), un Rectangle di delimitazione (bounds, con width/height/top/left/bottom/right derivati), lo stato di visibilità e composizione (is_visible, opacity, clipping, blend_mode_key), e un conteggio dei canali (channels_count). name, is_visible, opacity, clipping, blend_mode_key e i quattro bordi di delimitazione possono tutti essere modificati e scritti nuovamente con 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}")
Modalità di Fusione e Flag di Maschera
blend_mode_key è un valore enum BlendMode — la libreria definisce 29 modalità di fusione PSD standard (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY e altre). Un enum separato di flag LayerMaskFlags (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) descrive il comportamento di rendering della maschera quando un livello ne possiede una.
Metadati del canale e della maschera
Layer.channel_information restituisce un elenco di oggetti ChannelInformation che descrivono l’ID di ciascun canale, il metodo di compressione e la lunghezza in byte. Layer.layer_mask_data (un LayerMaskDataShort se presente) descrive i limiti e le flag di una maschera di livello; Layer.layer_blending_ranges_data espone le gamme di fusione composite e per canale. Tutte e tre queste proprietà sono di sola lettura in questa build FOSS — i loro setter sollevano NotSupportedException se chiamati, anche se appaiono come proprietà normali.
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}")
Guida rapida
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:$PYTHONPATHfrom 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}")
Formati supportati
| Formato | Estensione | Leggi | Scrivi |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Open Source e Licenze
Aspose.PSD FOSS per Python è con licenza MIT e può essere utilizzato in prodotti commerciali senza royalty, senza filigrana di valutazione né limite d’uso.
La libreria non ha dipendenze native di terze parti — è necessaria solo la libreria standard Python a runtime.