Inleiding

PsdImage.layers retourneert elke laag in een PSD- of PSB-document als een lijst van Layer objecten. Deze post kijkt specifiek naar wat een Layer blootlegt: zijn geometrie en visuele toestand, de enumeraties voor blend-modus en maskervlag, en de metadata-klassen die de kanalen, het masker en de mengbereiken van een laag beschrijven.


Wat er inbegrepen is

De Laagklasse

Elke Layer heeft een naam (name), een begrenzende Rectangle (bounds, met afgeleide width/height/top/left/bottom/right), zichtbaarheid- en compositiestatus (is_visible, opacity, clipping, blend_mode_key), en een kanaaltaantal (channels_count). name, is_visible, opacity, clipping, blend_mode_key en de vier begrenzingsranden kunnen allemaal worden gewijzigd en teruggeschreven met 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}")

Blend-modi en maskervlaggen

blend_mode_key is een BlendMode enum-waarde — de bibliotheek definieert 29 standaard PSD-blend-modi (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY, en andere). Een aparte LayerMaskFlags vlag-enum (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) beschrijft het masker-rendergedrag wanneer een laag er een heeft.

Kanaal- en maskermetadata

Layer.channel_information retourneert een lijst van ChannelInformation objecten die de ID, compressiemethode en byte-lengte van elk kanaal beschrijven. Layer.layer_mask_data (een LayerMaskDataShort indien aanwezig) beschrijft de grenzen en vlaggen van een laagmasker; Layer.layer_blending_ranges_data geeft de samengestelde en per-kanaal mengbereiken weer. Alle drie deze eigenschappen zijn alleen-lezen in deze FOSS-build — hun setters veroorzaken NotSupportedException wanneer ze worden aangeroepen, ook al verschijnen ze als reguliere eigenschappen.

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}")

Snelstart

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}")

Ondersteunde formaten

FormaatExtensieLezenSchrijven
PSDpsd✓✓
PSBpsb✓✓

Open source & licenties

Aspose.PSD FOSS voor Python is gelicentieerd onder de MIT-licentie en mag worden gebruikt in commerciële producten zonder royalty’s, zonder evaluatiewatermerk of gebruikslimiet.

De bibliotheek heeft geen externe native afhankelijkheden — alleen de Python standaardbibliotheek is vereist tijdens runtime.


Aan de slag

Gerelateerde bronnen