Introducere
PsdImage.layers returnează fiecare strat dintr-un document PSD sau PSB ca o listă de obiecte Layer. Acest articol examinează în mod specific ce expune un Layer: geometria și starea vizuală, enumerările modului de amestecare și ale flag-urilor de mască, și clasele de metadate care descriu canalele, masca și intervalele de amestecare ale unui strat.
Ce este inclus
Clasa Layer
Fiecare Layer are un nume (name), un Rectangle de delimitare (bounds, cu width/height/top/left/bottom/right derivate), stare de vizibilitate și compunere (is_visible, opacity, clipping, blend_mode_key), și un număr de canale (channels_count). name, is_visible, opacity, clipping, blend_mode_key, și cele patru margini ale limitelor pot fi toate modificate și scrise înapoi cu 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}")
Moduri de amestecare și flag-uri de mască
blend_mode_key este o valoare enum BlendMode — biblioteca definește 29 de moduri de amestecare PSD standard (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY și altele). Un enum separat de flag-uri LayerMaskFlags (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) descrie comportamentul de randare a măștii atunci când un strat are una.
Metadate de canal și mască
Layer.channel_information returnează o listă de obiecte ChannelInformation care descriu ID-ul fiecărui canal, metoda de compresie și lungimea în octeți. Layer.layer_mask_data (un LayerMaskDataShort când este prezent) descrie limitele și flag-urile unei măști de strat; Layer.layer_blending_ranges_data expune intervalele de amestec compozite și pe canal. Toate cele trei proprietăți sunt doar pentru citire în această construcție FOSS — setter-ele lor generează NotSupportedException dacă sunt apelate, chiar dacă apar ca proprietăți obișnuite.
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}")
Începe rapid
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}")
Formate suportate
| Format | Extensie | Citire | Scriere |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Open Source & Licențiere
Aspose.PSD FOSS pentru Python este licențiat sub MIT și poate fi utilizat în produse comerciale fără redevențe, fără filigrană de evaluare sau limită de utilizare.
Biblioteca nu are nicio dependență nativă de terțe părți — doar biblioteca standard Python este necesară la rulare.