Introducción
PsdImage.layers devuelve cada capa en un documento PSD o PSB como una lista de objetos Layer. Esta publicación se centra específicamente en lo que expone un Layer: su geometría y estado visual, las enumeraciones de modo de fusión y banderas de máscara, y las clases de metadatos que describen los canales, la máscara y los rangos de fusión de una capa.
Qué incluye
La clase Layer
Cada Layer lleva un nombre (name), un Rectangle delimitador (bounds, con los derivados width/height/top/left/bottom/right), estado de visibilidad y composición (is_visible, opacity, clipping, blend_mode_key), y un recuento de canales (channels_count). name, is_visible, opacity, clipping, blend_mode_key, y los cuatro bordes de los límites pueden modificarse y guardarse 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}")
Modos de fusión y banderas de máscara
blend_mode_key es un valor de enumeración BlendMode — la biblioteca define 29 modos de fusión estándar de PSD (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY, y otros). Una enumeración de banderas LayerMaskFlags separada (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) describe el comportamiento de renderizado de máscara cuando una capa tiene una.
Metadatos de Canal y Máscara
Layer.channel_information devuelve una lista de objetos ChannelInformation que describen el ID de cada canal, el método de compresión y la longitud en bytes. Layer.layer_mask_data (un LayerMaskDataShort cuando está presente) describe los límites y banderas de una máscara de capa; Layer.layer_blending_ranges_data expone los rangos de fusión compuesta y por canal. Las tres propiedades son de solo lectura en esta compilación FOSS — sus setters generan NotSupportedException si se llaman, aunque aparecen como propiedades normales.
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}")
Inicio Rápido
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}")
Formatos Admitidos
| Formato | Extensión | Leer | Escribir |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Código Abierto y Licenciamiento
Aspose.PSD FOSS para Python está licenciado bajo MIT y puede usarse en productos comerciales sin regalías, sin marca de agua de evaluación ni límite de uso.
La biblioteca no tiene dependencias nativas de terceros — solo se requiere la biblioteca estándar Python en tiempo de ejecución.