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.layersop positie; de volgorde van de lijst komt overeen met de eigen laagvolgorde van het document. blend_mode_keyaccepteert elkeBlendModeenum-waarde — er wordt geen validatie uitgevoerd ten opzichte van de gedeclareerde kleurmodus van het document.channel_information,layer_mask_dataenlayer_blending_ranges_datakunnen gelezen worden maar nooit opnieuw worden toegewezen.- Roep
PsdImage.save()één keer aan na alle bewerkingen; elke aanroep schrijft het volledige document.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
NotSupportedException bij het instellen van channel_information, layer_mask_data of layer_blending_ranges_data | Deze 3 eigenschappen zijn alleen-lezen in de FOSS-build, ondanks dat ze een setter hebben | Lees de waarde; probeer deze niet opnieuw toe te wijzen |
layer_mask_data toegang wanneer er geen masker is | Niet elke laag heeft een maskersubsectie | Controleer 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/Methode | Beschrijving |
|---|---|
PsdImage.layers | Haalt de laagcollectie op of stelt deze in — instelbaar voor verwijderen/herordenen |
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / right | Ondersteunde bewerkingen van laagmetadata |
Layer.bounds / width / height / channels_count | Alleen-lezen laaggeometrie |
Layer.channel_information / layer_mask_data / layer_blending_ranges_data | Alleen-lezen kanaal/masker/blendingmetadata |