Úvod
PsdImage.layers vrací každou vrstvu v dokumentu PSD nebo PSB jako seznam objektů Layer. Tento příspěvek se konkrétně zaměřuje na to, co Layer odhaluje: jeho geometrii a vizuální stav, výčty režimů prolnutí a příznaků masky a třídy metadat, které popisují kanály vrstvy, masku a rozsahy prolnutí.
Co je zahrnuto
Třída Layer
Každý Layer obsahuje název (name), ohraničující Rectangle (bounds, s odvozenými width/height/top/left/bottom/right), stav viditelnosti a kompozice (is_visible, opacity, clipping, blend_mode_key) a počet kanálů (channels_count). name, is_visible, opacity, clipping, blend_mode_key a čtyři hrany ohraničení lze všechny změnit a zapsat zpět pomocí 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}")
Režimy prolnutí a příznaky masky
blend_mode_key je hodnota výčtu BlendMode — knihovna definuje 29 standardních režimů prolnutí PSD (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY a další). Samostatný výčet příznaků LayerMaskFlags (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) popisuje chování vykreslování masky, když má vrstva masku.
Metadata kanálů a masek
Layer.channel_information vrací seznam objektů ChannelInformation, které popisují ID každého kanálu, metodu komprese a délku v bajtech. Layer.layer_mask_data (a LayerMaskDataShort, pokud je přítomen) popisuje ohraničení a příznaky masky vrstvy; Layer.layer_blending_ranges_data zpřístupňuje kompozitní a kanálově specifické rozsahy prolínání. Všechny tři tyto vlastnosti jsou v tomto FOSS buildu jen pro čtení — jejich settery vyvolají NotSupportedException, pokud jsou zavolány, i když se jeví jako běžné vlastnosti.
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}")
Rychlý start
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}")
Podporované formáty
| Formát | Přípona | Číst | Zapsat |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Open source a licence
Aspose.PSD FOSS pro Python je licencováno pod MIT a může být použito v komerčních produktech bez poplatků, bez zkušební vodoznaku ani omezení používání.
Knihovna nemá žádné třetí strany nativní závislosti — v době běhu je vyžadována pouze standardní knihovna Python.