Wstęp
PsdImage.layers zwraca każdą warstwę w dokumencie PSD lub PSB jako listę obiektów Layer. Ten wpis przygląda się konkretnie temu, co udostępnia Layer: jego geometria i stan wizualny, wyliczenia trybu mieszania i flag maski oraz klasy metadanych opisujące kanały warstwy, maskę i zakresy mieszania.
Co zawiera
Klasa warstwy
Każdy Layer posiada nazwę (name), ograniczający Rectangle (bounds, z wyprowadzonymi width/height/top/left/bottom/right), stan widoczności i kompozycji (is_visible, opacity, clipping, blend_mode_key) oraz liczbę kanałów (channels_count). name, is_visible, opacity, clipping, blend_mode_key oraz cztery krawędzie granic mogą być zmieniane i zapisywane przy użyciu 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}")
Tryby mieszania i flagi maski
blend_mode_key jest wartością wyliczeniową BlendMode — biblioteka definiuje 29 standardowych trybów mieszania PSD (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY i inne). Oddzielne wyliczenie flag LayerMaskFlags (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) opisuje zachowanie renderowania maski, gdy warstwa ją posiada.
Metadane kanału i maski
Layer.channel_information zwraca listę obiektów ChannelInformation opisujących ID każdego kanału, metodę kompresji i długość w bajtach. Layer.layer_mask_data (a LayerMaskDataShort gdy jest obecny) opisuje granice i flagi maski warstwy; Layer.layer_blending_ranges_data udostępnia zakresy mieszania kompozytu i poszczególnych kanałów. Wszystkie trzy te właściwości są tylko do odczytu w tej wersji FOSS — ich settery rzucają NotSupportedException, jeśli zostaną wywołane, mimo że wyglądają jak zwykłe właściwości.
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}")
Szybki 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}")
Obsługiwane formaty
| Format | Rozszerzenie | Odczyt | Zapis |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Open Source i licencjonowanie
Aspose.PSD FOSS dla Python jest licencjonowany na licencji MIT i może być używany w produktach komercyjnych bez opłat licencyjnych, bez znaków wodnych w wersji ewaluacyjnej ani limitu użycia.
Biblioteka nie ma żadnych zewnętrznych natywnych zależności — w czasie działania wymagana jest jedynie standardowa biblioteka Python.