Introdução
PsdImage.layers retorna cada camada em um documento PSD ou PSB como uma lista de objetos Layer. Este post examina especificamente o que um Layer expõe: sua geometria e estado visual, as enumerações de modo de mesclagem e bandeira de máscara, e as classes de metadados que descrevem os canais, máscara e intervalos de mesclagem de uma camada.
O que está incluído
A classe Layer
Cada Layer possui um nome (name), um Rectangle delimitador (bounds, com width/height/top/left/bottom/right derivados), estado de visibilidade e composição (is_visible, opacity, clipping, blend_mode_key), e uma contagem de canais (channels_count). name, is_visible, opacity, clipping, blend_mode_key e as quatro bordas dos limites podem ser alterados e gravados de volta com 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}")
Modos de Mesclagem e Bandeiras de Máscara
blend_mode_key é um valor de enum BlendMode — a biblioteca define 29 modos de mesclagem PSD padrão (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY e outros). Um enum de flags LayerMaskFlags separado (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) descreve o comportamento de renderização de máscara onde uma camada tem uma.
Metadados de Canal e Máscara
Layer.channel_information retorna uma lista de objetos ChannelInformation descrevendo o ID de cada canal, o método de compressão e o comprimento em bytes. Layer.layer_mask_data (um LayerMaskDataShort quando presente) descreve os limites e as bandeiras de uma máscara de camada; Layer.layer_blending_ranges_data expõe as faixas de mesclagem compostas e por canal. Todas essas três propriedades são somente leitura nesta compilação FOSS — seus setters lançam NotSupportedException se chamados, embora apareçam como propriedades normais.
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}")
Início Rápido
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}")
Formatos Suportados
| Formato | Extensão | Leitura | Escrita |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Código Aberto e Licenciamento
Aspose.PSD FOSS para Python está licenciado sob MIT e pode ser usado em produtos comerciais sem royalties, sem marca d’água de avaliação ou limite de uso.
A biblioteca não tem dependências nativas de terceiros — somente a biblioteca padrão Python é necessária em tempo de execução.