Introduktion
PsdImage.layers returnerar varje lager i ett PSD- eller PSB-dokument som en lista med Layer-objekt. Detta inlägg fokuserar specifikt på vad en Layer avslöjar: dess geometri och visuella tillstånd, blandningslägets och maskflaggs-uppräkningarna, samt metadata-klasserna som beskriver ett lagers kanaler, mask och blandningsintervall.
Vad som ingår
Layer-klassen
Varje Layer har ett namn (name), en avgränsande Rectangle (bounds, med avledda width/height/top/left/bottom/right), synlighet och sammansättningsstatus (is_visible, opacity, clipping, blend_mode_key), samt ett kanalantal (channels_count). name, is_visible, opacity, clipping, blend_mode_key och de fyra kantgränserna kan alla ändras och skrivas tillbaka med 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}")
Blandningslägen och maskflaggor
blend_mode_key är ett BlendMode-enumvärde — biblioteket definierar 29 standard-PSD-blandningslägen (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY och andra). En separat LayerMaskFlags flag enum (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) beskriver maskrenderingsbeteende när ett lager har en.
Kanal- och maskmetadata
Layer.channel_information returnerar en lista med ChannelInformation-objekt som beskriver varje kanals ID, komprimeringsmetod och byte-längd. Layer.layer_mask_data (en LayerMaskDataShort när den finns) beskriver en lagermaskas gränser och flaggor; Layer.layer_blending_ranges_data exponerar den sammansatta och per-kanal blandningsintervallen. Alla tre dessa egenskaper är skrivskyddade i denna FOSS-byggnad — deras set-metoder kastar NotSupportedException om de anropas, även om de visas som vanliga egenskaper.
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}")
Snabbstart
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:$PYTHONPATHfrom 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}")
Stödda format
| Format | Filändelse | Läs | Skriv |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Öppen källkod & licensiering
Aspose.PSD FOSS för Python är licensierad under MIT och får användas i kommersiella produkter utan royalties, utan utvärderingsvattenstämpel eller användningsgräns.
Biblioteket har noll tredjeparts-native-beroenden — endast Python-standardbiblioteket krävs vid körning.