Introduction

PsdImage.layers renvoie chaque calque d’un document PSD ou PSB sous forme d’une liste d’objets Layer. Cet article examine spécifiquement ce que expose un Layer : sa géométrie et son état visuel, les énumérations du mode de fusion et des drapeaux de masque, ainsi que les classes de métadonnées qui décrivent les canaux, le masque et les plages de fusion d’un calque.


Ce qui est inclus

La classe Layer

Chaque Layer possède un nom (name), une Rectangle de délimitation (bounds, avec les dérivés width/height/top/left/bottom/right), l’état de visibilité et de composition (is_visible, opacity, clipping, blend_mode_key), et un nombre de canaux (channels_count). name, is_visible, opacity, clipping, blend_mode_key et les quatre bords de limites peuvent tous être modifiés et réécrits avec 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}")

Modes de fusion et drapeaux de masque

blend_mode_key est une valeur d’énumération BlendMode — la bibliothèque définit 29 modes de fusion PSD standard (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY, et d’autres). Une énumération distincte de drapeaux LayerMaskFlags (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) décrit le comportement de rendu du masque lorsqu’un calque en possède un.

Métadonnées des canaux et des masques

Layer.channel_information renvoie une liste d’objets ChannelInformation décrivant l’ID de chaque canal, la méthode de compression et la longueur en octets. Layer.layer_mask_data (un LayerMaskDataShort lorsqu’il est présent) décrit les limites et les drapeaux d’un masque de calque; Layer.layer_blending_ranges_data expose les plages de fusion composites et par canal. Ces trois propriétés sont en lecture seule dans cette version FOSS — leurs mutateurs lèvent NotSupportedException si appelés, même si elles apparaissent comme des propriétés 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}")

Démarrage rapide

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:$PYTHONPATH
from 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}")

Formats pris en charge

FormatExtensionLireÉcrire
PSDpsd✓✓
PSBpsb✓✓

Open source & Licences

Aspose.PSD FOSS pour Python est sous licence MIT et peut être utilisé dans des produits commerciaux sans redevances, sans filigrane d’évaluation ni limite d’utilisation.

La bibliothèque n’a aucune dépendance native tierce — seule la bibliothèque standard Python est requise à l’exécution.


Premiers pas

Ressources associées