Layers

Layers

PsdImage.layers retourneert elke geparseerde laag als een lijst van Layer objecten. Elke Layer geeft zijn eigen geometrie, zichtbaarheid en compositiestatus weer, en metadata over zijn kanalen, masker en mengbereiken.


Laagmetadata lezen

name, bounds (en de afgeleide width/height/top/left/bottom/right), is_visible, opacity, clipping, blend_mode_key en channels_count zijn allemaal direct leesbaar.

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

Ondersteunde metadata-aanpassingen

name, is_visible, opacity, clipping, blend_mode_key en de vier begrenzingsranden (top/left/bottom/right) kunnen ter plaatse worden gewijzigd en teruggeschreven met 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")

Kanaal- en maskermetadata

channel_information, layer_mask_data en layer_blending_ranges_data zijn alleen-lezen in deze FOSS-build — hun setters veroorzaken 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}")

Lagen verwijderen of herschikken

PsdImage.layers heeft zowel een setter als een getter: het toewijzen van een gefilterde of herschikte lijst vervangt de laagverzameling van het document.

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

Tips en best practices

  • Indexeer image.layers op positie; de volgorde van de lijst komt overeen met de eigen laagvolgorde van het document.
  • blend_mode_key accepteert elke BlendMode enum-waarde — er wordt geen validatie uitgevoerd ten opzichte van de gedeclareerde kleurmodus van het document.
  • channel_information, layer_mask_data en layer_blending_ranges_data kunnen gelezen worden maar nooit opnieuw worden toegewezen.
  • Roep PsdImage.save() één keer aan na alle bewerkingen; elke aanroep schrijft het volledige document.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
NotSupportedException bij het instellen van channel_information, layer_mask_data of layer_blending_ranges_dataDeze 3 eigenschappen zijn alleen-lezen in de FOSS-build, ondanks dat ze een setter hebbenLees de waarde; probeer deze niet opnieuw toe te wijzen
layer_mask_data toegang wanneer er geen masker isNiet elke laag heeft een maskersubsectieControleer layer.has_mask_data voordat je layer.layer_mask_data leest

FAQ

Kan ik een laag verwijderen?

Ja — wijs image.layers opnieuw toe aan een gefilterde lijst.

Kan ik de kanaal- of maskergegevens van een laag wijzigen?

Nee. channel_information, layer_mask_data en layer_blending_ranges_data zijn alleen-lezen — alleen name, is_visible, opacity, clipping, blend_mode_key en de begrenzingsranden kunnen worden gewijzigd.


API Reference Samenvatting

Klasse/MethodeBeschrijving
PsdImage.layersHaalt de laagcollectie op of stelt deze in — instelbaar voor verwijderen/herordenen
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightOndersteunde bewerkingen van laagmetadata
Layer.bounds / width / height / channels_countAlleen-lezen laaggeometrie
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataAlleen-lezen kanaal/masker/blendingmetadata

Zie ook

 Nederlands