Layers
Layers
PsdImage.layers devuelve cada capa analizada como una lista de objetos Layer. Cada Layer expone su propia geometría, visibilidad y estado de composición, así como metadatos sobre sus canales, máscara y rangos de fusión.
Lectura de metadatos de capa
Todos name, bounds (y los derivados width/height/top/left/bottom/right), is_visible, opacity, clipping, blend_mode_key y channels_count se pueden leer directamente.
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}")Modificaciones de metadatos admitidas
name, is_visible, opacity, clipping, blend_mode_key y los cuatro bordes de los límites (top/left/bottom/right) pueden modificarse in situ y volver a escribirse 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")Metadatos de canal y máscara
channel_information, layer_mask_data y layer_blending_ranges_data son de solo lectura en esta compilación FOSS — sus setters lanzan 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}")Eliminar o reordenar capas
PsdImage.layers tiene un setter además de un getter: asignar una lista filtrada o reordenada reemplaza la colección de capas 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")Consejos y mejores prácticas
- Indexe
image.layerspor posición; el orden de la lista coincide con el orden de capas del propio documento. blend_mode_keyacepta cualquier valor del enumBlendMode— no se realiza validación contra el modo de color declarado del documento.channel_information,layer_mask_dataylayer_blending_ranges_datapueden leerse pero nunca reasignarse.- Llame a
PsdImage.save()una vez después de todas las ediciones; cada llamada escribe el documento completo.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
NotSupportedException al establecer channel_information, layer_mask_data o layer_blending_ranges_data | Estas 3 propiedades son solo lectura en la compilación FOSS, a pesar de contar con un setter | Lea el valor; no intente volver a asignarlo |
Acceso a layer_mask_data cuando no hay máscara | No todas las capas tienen una subsección de máscara | Verifique layer.has_mask_data antes de leer layer.layer_mask_data |
FAQ
¿Puedo eliminar una capa?
Sí — vuelve a asignar image.layers a una lista filtrada.
¿Puedo cambiar los datos del canal o la máscara de una capa?
No. channel_information, layer_mask_data y layer_blending_ranges_data son de solo lectura — solo se pueden cambiar name, is_visible, opacity, clipping, blend_mode_key y los bordes de los límites.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
PsdImage.layers | Obtiene o establece la colección de capas — establecible para eliminación/reordenamiento |
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / right | Ediciones de metadatos de capa compatibles |
Layer.bounds / width / height / channels_count | Geometría de capa de solo lectura |
Layer.channel_information / layer_mask_data / layer_blending_ranges_data | Metadatos de canal/máscara/fusión de solo lectura |