In this article, you will learn how to find layers and update the layer’s text or image within Photoshop’s PSD files dynamically using C# .NET.

PSD es el formato predeterminado que utiliza Adobe Photoshop para guardar sus documentos en una estructura de varias capas en la que cada capa contiene el texto, las imágenes, los objetos gráficos y otros elementos admitidos. Podría darse el caso de que tenga una plantilla PSD y necesite crear varias imágenes resultantes completando las capas de texto e imagen dentro de la plantilla. Un ejemplo de tal escenario es la creación de tarjetas de empleados dentro de una organización. Para automatizar este proceso, le mostraré cómo:

Biblioteca C# para buscar y actualizar capas PSD

Aspose.PSD for .NET permite crear y modificar archivos PSD sin instalar Adobe Photoshop o Illustrator. La API puede ser útil en el escenario en el que necesita actualizar las capas de PSD de forma dinámica mediante C# o VB.NET. Puede instalar la API usando NuGet Package Manager o descargar y hacer referencia a sus DLL manualmente.

Encuentre y actualice capas de texto en archivos PSD usando C#

Aspose.PSD for .NET le permite encontrar la capa deseada en archivos PSD usando el nombre de la capa. Una vez que encuentre la capa, puede actualizar su contenido. Los siguientes son los pasos para encontrar y actualizar una capa de texto en un archivo PSD.

El siguiente ejemplo de código muestra cómo encontrar y actualizar la capa de texto en el archivo PSD usando C#.

// Cargar archivo PSD
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
	// Buscar capa usando el nombre de la capa
	var layerToUpdateText = (TextLayer)FindLayer("Name", image);
	// Manera simple de actualizar el texto
	layerToUpdateText.UpdateText("John Doe");
	// Guarde el archivo PSD actualizado
	image.Save("updated-psd.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Obtener capas aa en archivo PSD
	var layers = image.Layers;
	// Encuentra la capa deseada
	foreach (var layer in layers)
	{
		// Hacer coincidir el nombre de la capa
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

A continuación se muestra la captura de pantalla del archivo PSD de entrada que hemos utilizado en este ejemplo:

Encuentra una capa en PSD usando C#

El siguiente es el archivo PSD resultante con una capa de texto actualizada:

Actualice la capa de texto en PSD usando C#

Encuentre y actualice capas de imagen en archivos PSD usando C#

Para manejar objetos gráficos como imágenes, Aspose.PSD for .NET expone la clase Graphics. Esta clase se utiliza para borrar o dibujar los gráficos dentro de las capas PSD. Los siguientes son los pasos para encontrar una capa PSD y actualizar su imagen.

  • Cree un objeto de la clase PsdImage para cargar el archivo PSD.
  • Busque la capa en el archivo PSD del objeto PsdImage.Layers.
  • Cargue la imagen que desea dibujar en la capa en un objeto Stream.
  • Cree un nuevo objeto Layer e inicialícelo con el objeto Stream creado en el paso anterior.
  • Cree una instancia de la clase Graphics e inicialícela con la capa que se reemplazará.
  • Borre la capa usando el método Graphics.Clear().
  • Dibuje la imagen en la capa usando el método Graphics.DrawImage(Image, Rectangle).
  • Guarde el archivo usando el método PsdImage.Save(String).

El siguiente ejemplo de código muestra cómo buscar y actualizar capas de imágenes en el archivo PSD usando C#.

// Cargar archivo PSD
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
	// Busquemos la capa que queremos reemplazar.
	var layerToReplace = FindLayer("ProfilePicture", image);

	using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
	{
		var newLayer = new Layer(stream);
		// Dibujo de nueva capa sobre la antigua.
		var graphic = new Graphics(layerToReplace);
		graphic.Clear(Color.Empty);
		graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
	}
	// Guarde el archivo PSD actualizado
	image.Save("updated-psd2.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Obtener capas aa en archivo PSD
	var layers = image.Layers;
	// Encuentra la capa deseada
	foreach (var layer in layers)
	{
		// Hacer coincidir el nombre de la capa
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

La siguiente es la captura de pantalla del archivo PSD después de actualizar la capa de la imagen usando el código mencionado anteriormente:

Actualizar capa de imagen en PSD usando C#

Conclusión

En este artículo, hemos visto cómo encontrar y actualizar las capas en un archivo de Photoshop (PSD) usando C#. La guía paso a paso y los ejemplos de código demuestran cómo encontrar capas y actualizar su texto o imagen en los archivos PSD de Photoshop. Puede explorar más sobre Aspose.PSD for .NET usando documentación.

Ver también