Edição de máscaras de camada raster em arquivo PSD via API
Visão geral
Para automatizar a edição de formatos PSD e alterar arquivos PSD sem o Adobe® Photoshop®, você pode usar a API Aspose.PSD fornecida abaixo. Existem trechos de código em C# e .NET que podem ajudá-lo a modificar arquivos PSD.
Usando Máscaras de Camada e Vetor PSD, somos capazes de ocultar e mostrar pixels de camada sem excluí-los permanentemente. Máscaras raster também são chamadas de máscara de camada ou máscara de usuário. O acesso às máscaras raster e vetor no Aspose.PSD é fornecido por meio da propriedade de camada LayerMaskData, que pode ser uma instância das classes ‘LayerMaskDataShort’ e ‘LayerMaskDataFull’ que são subclasses abstratas da classe ‘LayerMaskData’. Se uma camada tem tanto máscaras raster quanto vetor, então é fornecida uma instância de LayerMaskDataFull. Se uma camada tem apenas uma máscara raster ou vetor, então é fornecida uma instância de LayerMaskDataShort. Se a propriedade LayerMaskData for nula, então a camada não tem máscaras ou apenas uma máscara vetor desativada.
Uma máscara raster e uma máscara de vetor desativada LayerMaskDataShort Uma máscara raster desativada LayerMaskDataShort Uma máscara raster e uma máscara vetor LayerMaskDataFull Uma máscara raster LayerMaskDataShort Uma máscara vetor LayerMaskDataShort Uma máscara de vetor desativada nula (Mas recurso de vetor está presente) |
---|
Como obter uma máscara raster de camada no arquivo PSD?
Primeiramente, devemos verificar se uma camada tem tanto máscaras de vetor quanto de camada:
O código de exemplo fornecido abaixo demonstra como obter uma máscara raster de camada
Caso contrário, o tipo da propriedade de camada LayerMaskData é LayerMaskDataShort. Nesse caso, vamos verificar se a camada tem apenas uma máscara raster verificando a propriedade Flags. Não deve conter o LayerMaskFlags.UserMaskFromRenderingOtherData flag, caso contrário a máscara é um cache de máscara de vetor.
Obtendo trecho de código da máscara:
Se você precisar extrair uma máscara raster como LayerMaskDataShort (para manipulações adicionais) mesmo quando ambas as máscaras estiverem presentes, a LayerMaskDataFull deverá ser extraída e convertida para LayerMaskDataShort. O código a seguir pode ser usado para ambos os casos:
Extraindo uma máscara raster do PSD
Como verificar se uma camada no arquivo PSD tem uma máscara raster?
O seguinte código em C# pode ajudá-lo a verificar se uma camada tem uma máscara raster:
Como saber se a máscara raster foi aplicada à Camada PSD
Como remover / adicionar / atualizar uma máscara raster de camada no arquivo PSD?
Apenas remover / adicionar / atualizar o LayerMaskData não é suficiente para a correção do salvamento, pois os canais não são atualizados; embora possa fornecer uma renderização correta. Isso não altera os canais de máscara:
Devemos usar o método AddLayerMask da camada para remover / adicionar / atualizar.
Isso adiciona/atualiza tanto a máscara quanto os canais:
Isso remove tanto a máscara quanto os canais:
Removendo uma máscara raster de camada na imagem PSD
Primeiramente, verificamos se a máscara está no formato curto e se não é de vetor, podemos simplesmente chamar o método AddLayerMask com null para excluir a máscara raster. Mas se estiver no formato completo, precisamos convertê-la para o formato curto, deixando apenas a máscara de vetor. Para remover uma máscara de camada, o seguinte trecho de código em C# .NET pode ser usado:
Trecho de código de como remover Máscara de Camada do Arquivo PSD.
Atualizando uma máscara raster de camada na imagem PSD
Isso é direto: se a máscara estiver no formato curto, devemos alterar ImageData e MaskRectangle se necessário, caso contrário UserMaskData e UserMaskRectangle devem ser alterados. O seguinte trecho de código em C# .NET pode ser usado para atualizar uma máscara de camada:
Atualizar Máscara de Camada PSD com C#
Aqui está um exemplo de possíveis ações que alteram uma máscara raster. Este inverte uma máscara de usuário de camada:
Atualizar Máscara de Camada PSD com C#
Atualizando uma máscara de vetor no arquivo PSD quando uma máscara raster de camada está presente
Supõe-se que um usuário já tenha alterado um recurso de caminho de vetor. Em seguida, pode atualizar a máscara de vetor simplesmente chamando o método de camada AddLayerMask :
Atualizar Máscara de Vetor de Camada PSD com C#
Adicionando uma máscara raster de camada no arquivo PSD
Se uma camada não tem máscara, podemos adicionar a máscara raster fornecida simplesmente chamando o método de camada AddLayerMask.
Se a máscara não tem a flag UserMaskFromRenderingOtherData**, então ela já possui uma máscara raster e devemos atualizá-la conforme descrito acima. Caso contrário, se esta máscara estiver em um formato curto, a convertamos para o formato completo. Se não, a usamos como está. Em seguida, atualize UserMaskData, UserMaskRectangle e outras propriedades com as propriedades da máscara fornecida. O seguinte trecho de código em C# .NET pode ser usado para adicionar (atualizar) uma máscara de camada:
Adicionar nova Máscara de Camada ao PSD
Como verificar se uma máscara de camada está habilitada?
Para descobrir o estado habilitado da máscara raster da camada, podemos verificar o estado da flag LayerMaskFlags.Disabled na propriedade Flags para LayerMaskDataShort ou em RealFlags para LayerMaskDataFull. O seguinte trecho de código em C# .NET pode ser usado para obter o estado habilitado da máscara da camada:
Verificar se uma máscara está habilitada:
Como habilitar ou desabilitar uma máscara de camada raster?
Para habilitar ou desabilitar uma máscara de camada raster, podemos mudar o estado da flag LayerMaskFlags.Disabled na propriedade Flags para LayerMaskDataShort ou em RealFlags para LayerMaskDataFull. O seguinte trecho de código em C# .NET pode ser usado para alterar o estado habilitado de uma máscara de camada:
Habilitar ou desabilitar Máscara de Camada Raster: