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:

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.

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:

Encontre camada em PSD usando C#

O seguinte é o arquivo PSD resultante com camada de texto atualizada:

Atualizar camada de texto em PSD usando C#

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:

Atualizar camada de imagem em PSD usando C#

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.

Veja também