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.layers por posición; el orden de la lista coincide con el orden de capas del propio documento.
  • blend_mode_key acepta cualquier valor del enum BlendMode — no se realiza validación contra el modo de color declarado del documento.
  • channel_information, layer_mask_data y layer_blending_ranges_data pueden leerse pero nunca reasignarse.
  • Llame a PsdImage.save() una vez después de todas las ediciones; cada llamada escribe el documento completo.

Problemas comunes

ProblemaCausaSolución
NotSupportedException al establecer channel_information, layer_mask_data o layer_blending_ranges_dataEstas 3 propiedades son solo lectura en la compilación FOSS, a pesar de contar con un setterLea el valor; no intente volver a asignarlo
Acceso a layer_mask_data cuando no hay máscaraNo todas las capas tienen una subsección de máscaraVerifique 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étodoDescripción
PsdImage.layersObtiene o establece la colección de capas — establecible para eliminación/reordenamiento
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightEdiciones de metadatos de capa compatibles
Layer.bounds / width / height / channels_countGeometría de capa de solo lectura
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataMetadatos de canal/máscara/fusión de solo lectura

Ver también

 Español