Neste artigo, você aprenderá a encontrar camadas e atualizar o texto ou a imagem da camada nos arquivos PSD do Photoshop dinamicamente usando C# .NET.
PSD é o formato padrão usado pelo Adobe Photoshop para salvar seus documentos em uma estrutura de várias camadas, onde cada camada contém texto, imagens, objetos gráficos e outros elementos suportados. Pode ser o caso de você ter um modelo PSD e precisar criar várias imagens resultantes preenchendo as camadas de texto e imagem dentro do modelo. Um exemplo de tal cenário é a criação de cartões de funcionários dentro de uma organização. Para automatizar esse processo, mostrarei como:
- encontre e atualize camadas de texto em arquivos PSD usando C#
- encontre e atualize camadas de imagem em arquivos PSD usando C#
Biblioteca C# para encontrar e atualizar camadas PSD
Aspose.PSD for .NET permite criar e modificar arquivos PSD sem instalar o Adobe Photoshop ou Illustrator. A API pode ser útil no cenário em que você precisa atualizar camadas PSD dinamicamente usando C# ou VB.NET. Você pode instalar a API usando o NuGet Package Manager ou baixar e referenciar suas DLLs manualmente.
Encontre e atualize camadas de texto em arquivos PSD usando C#
Aspose.PSD para .NET permite que você encontre a camada desejada em arquivos PSD usando o nome da camada. Depois de encontrar a camada, você pode atualizar seu conteúdo. A seguir estão as etapas para localizar e atualizar uma camada de texto em um arquivo PSD.
- Crie uma instância da classe PsdImage e inicialize-a com o caminho do arquivo PSD.
- Acesse as camadas no PSD usando a propriedade PsdImage.Layers.
- Combine o nome de exibição de cada camada para obter a camada desejada no objeto TextLayer.
- Atualize o texto usando o método TextLayer.UpdateText(String).
- Salve a imagem atualizada usando o método PsdImage.Save(String).
O exemplo de código a seguir mostra como localizar e atualizar a camada de texto no arquivo PSD usando C#.
// Carregar arquivo PSD
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
// Localizar camada usando o nome da camada
var layerToUpdateText = (TextLayer)FindLayer("Name", image);
// Maneira simples de atualizar o texto
layerToUpdateText.UpdateText("John Doe");
// Salve o arquivo PSD atualizado
image.Save("updated-psd.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
// Obtenha camadas aa em arquivo PSD
var layers = image.Layers;
// Encontre a camada desejada
foreach (var layer in layers)
{
// Corresponder ao nome da camada
if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
{
return layer;
}
}
return null;
}
Abaixo está a captura de tela do arquivo PSD de entrada que usamos neste exemplo:
O seguinte é o arquivo PSD resultante com camada de texto atualizada:
Encontre e atualize camadas de imagem em arquivos PSD usando C#
Para lidar com objetos gráficos como imagens, o Aspose.PSD para .NET expõe a classe Graphics. Esta classe é usada para limpar ou desenhar os gráficos dentro das camadas PSD. A seguir estão as etapas para encontrar uma camada PSD e atualizar sua imagem.
- Crie um objeto da classe PsdImage para carregar o arquivo PSD.
- Encontre a camada no arquivo PSD do objeto PsdImage.Layers.
- Carregue a imagem que deseja desenhar na camada em um objeto Stream.
- Crie um novo objeto Layer e inicialize-o com o objeto Stream criado na etapa anterior.
- Crie uma instância da classe Graphics e inicialize-a com a camada a ser substituída.
- Limpe a camada usando o método Graphics.Clear().
- Desenhe a imagem na camada usando o método Graphics.DrawImage(Image, Rectangle).
- Salve o arquivo usando o método PsdImage.Save(String).
O exemplo de código a seguir mostra como localizar e atualizar camadas de imagem no arquivo PSD usando C#.
// Carregar arquivo PSD
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
// Vamos encontrar a camada que queremos substituir
var layerToReplace = FindLayer("ProfilePicture", image);
using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
{
var newLayer = new Layer(stream);
// Desenho de nova camada no antigo
var graphic = new Graphics(layerToReplace);
graphic.Clear(Color.Empty);
graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
}
// Salve o arquivo PSD atualizado
image.Save("updated-psd2.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
// Obtenha camadas aa em arquivo PSD
var layers = image.Layers;
// Encontre a camada desejada
foreach (var layer in layers)
{
// Corresponder ao nome da camada
if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
{
return layer;
}
}
return null;
}
A seguir está a captura de tela do arquivo PSD após atualizar a camada de imagem usando o código mencionado acima:
Conclusão
Neste artigo, vimos como localizar e atualizar as camadas em um arquivo do Photoshop (PSD) usando C#. O guia passo a passo e os exemplos de código demonstram como localizar camadas e atualizar seu texto ou imagem nos arquivos PSD do Photoshop. Você pode explorar mais sobre o Aspose.PSD para .NET usando documentação.