Layers
Layers
PsdImage.layers retorna cada camada analisada como uma lista de objetos Layer. Cada Layer expõe sua própria geometria, visibilidade e estado de composição, além de metadados sobre seus canais, máscara e intervalos de mesclagem.
Lendo Metadados da Camada
name, bounds (e os derivados width/height/top/left/bottom/right), is_visible, opacity, clipping, blend_mode_key e channels_count podem ser lidos diretamente.
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}")Edições de Metadados Suportadas
name, is_visible, opacity, clipping, blend_mode_key e as quatro bordas de limites (top/left/bottom/right) podem ser modificados no local e gravados novamente com PsdImage.save().
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode
with PsdImage.load("input.psd") as image:
layer = image.layers[0]
layer.name = f"{layer.name} (edited)"
layer.is_visible = not layer.is_visible
layer.opacity = 128
layer.blend_mode_key = BlendMode.MULTIPLY
image.save("output.psd")Metadados de Canal e Máscara
channel_information, layer_mask_data e layer_blending_ranges_data são somente leitura nesta compilação FOSS — seus setters levantam NotSupportedException.
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}")Removendo ou Reordenando Camadas
PsdImage.layers tem um setter assim como um getter: atribuir uma lista filtrada ou reordenada substitui a coleção de camadas do documento.
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
image.layers = [layer for layer in image.layers if layer.is_visible]
image.save("output.psd")Dicas e Melhores Práticas
- Indexe
image.layerspor posição; a ordem da lista corresponde à ordem de camadas do próprio documento. blend_mode_keyaceita qualquer valor enumBlendMode— não há validação em relação ao modo de cor declarado do documento.channel_information,layer_mask_dataelayer_blending_ranges_datapodem ser lidos, mas nunca reatribuídos.- Chame
PsdImage.save()uma vez após todas as edições; cada chamada grava o documento completo.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
NotSupportedException ao definir channel_information, layer_mask_data ou layer_blending_ranges_data | Essas 3 propriedades são somente leitura na compilação FOSS, apesar de possuírem um setter | Leia o valor; não tente reatribuí-lo |
layer_mask_data acesso quando não há máscara | Nem toda camada possui uma subseção de máscara | Verifique layer.has_mask_data antes de ler layer.layer_mask_data |
FAQ
Posso remover uma camada?
Sim — reatribua image.layers a uma lista filtrada.
Posso alterar os dados de canal ou máscara de uma camada?
Não. channel_information, layer_mask_data e layer_blending_ranges_data são somente leitura — apenas name, is_visible, opacity, clipping, blend_mode_key e as bordas dos limites podem ser alterados.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
PsdImage.layers | Obtém ou define a coleção de camadas — configurável para remoção/reordenação |
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / right | Edições de metadados de camada suportadas |
Layer.bounds / width / height / channels_count | Geometria de camada somente leitura |
Layer.channel_information / layer_mask_data / layer_blending_ranges_data | Metadados de canal/máscara/fusão somente leitura |