Dans cet article, vous apprendrez à rechercher des calques et à mettre à jour dynamiquement le texte ou l’image du calque dans les fichiers PSD de Photoshop à l’aide de C# .NET.

PSD est le format par défaut utilisé par Adobe Photoshop pour enregistrer ses documents dans une structure multicouche où chaque couche contient du texte, des images, des objets graphiques et d’autres éléments pris en charge. Il peut arriver que vous ayez un modèle PSD et que vous ayez besoin de créer plusieurs images résultantes en remplissant les calques de texte et d’image dans le modèle. Un exemple d’un tel scénario est la création de cartes d’employés au sein d’une organisation. Afin d’automatiser ce processus, je vais vous montrer comment :

Bibliothèque C# pour rechercher et mettre à jour les couches PSD

Aspose.PSD for .NET permet de créer et de modifier des fichiers PSD sans installer Adobe Photoshop ou Illustrator. L’API peut être pratique dans le cas où vous devez mettre à jour dynamiquement les couches PSD à l’aide de C# ou VB.NET. Vous pouvez installer l’API à l’aide de NuGet Package Manager ou télécharger et référencer ses DLL manuellement.

Rechercher et mettre à jour des calques de texte dans des fichiers PSD à l’aide de C#

Aspose.PSD for .NET vous permet de trouver la couche souhaitée dans les fichiers PSD en utilisant le nom de la couche. Une fois que vous avez trouvé la couche, vous pouvez mettre à jour son contenu. Voici les étapes pour rechercher et mettre à jour un calque de texte dans un fichier PSD.

  • Créez une instance de la classe PsdImage et initialisez-la avec le chemin du fichier PSD.
  • Accédez aux calques dans le PSD à l’aide de la propriété PsdImage.Layers.
  • Faites correspondre le nom d’affichage de chaque calque pour obtenir le calque souhaité dans l’objet TextLayer.
  • Mettez à jour le texte à l’aide de la méthode TextLayer.UpdateText(String).
  • Enregistrez l’image mise à jour à l’aide de la méthode PsdImage.Save(String).

L’exemple de code suivant montre comment rechercher et mettre à jour le calque de texte dans le fichier PSD à l’aide de C#.

// Charger le fichier PSD
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
	// Rechercher un calque à l'aide du nom du calque
	var layerToUpdateText = (TextLayer)FindLayer("Name", image);
	// Un moyen simple de mettre à jour le texte
	layerToUpdateText.UpdateText("John Doe");
	// Enregistrez le fichier PSD mis à jour
	image.Save("updated-psd.psd");
}
//-------------------RechercherCouche()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Obtenir des couches aa dans le fichier PSD
	var layers = image.Layers;
	// Trouver la couche souhaitée
	foreach (var layer in layers)
	{
		// Faire correspondre le nom du calque
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

Vous trouverez ci-dessous la capture d’écran du fichier PSD d’entrée que nous avons utilisé dans cet exemple :

Trouver une couche dans PSD en utilisant C#

Voici le fichier PSD résultant avec une couche de texte mise à jour :

Mettre à jour le calque de texte dans PSD à l'aide de C#

Rechercher et mettre à jour des calques d’image dans des fichiers PSD à l’aide de C#

Afin de traiter les objets graphiques tels que les images, Aspose.PSD for .NET expose la classe Graphics. Cette classe est utilisée pour effacer ou dessiner les graphiques dans les couches PSD. Voici les étapes pour trouver une couche PSD et mettre à jour son image.

  • Créez un objet de la classe PsdImage pour charger le fichier PSD.
  • Recherchez le calque dans le fichier PSD à partir de l’objet PsdImage.Layers.
  • Chargez l’image que vous souhaitez dessiner dans le calque d’un objet Stream.
  • Créez un nouvel objet Layer et initialisez-le avec l’objet Stream créé à l’étape précédente.
  • Créez une instance de la classe Graphics et initialisez-la avec le calque à remplacer.
  • Effacez le calque à l’aide de la méthode Graphics.Clear().
  • Dessinez l’image dans le calque à l’aide de la méthode Graphics.DrawImage(Image, Rectangle).
  • Enregistrez le fichier à l’aide de la méthode PsdImage.Save(String).

L’exemple de code suivant montre comment rechercher et mettre à jour des calques d’image dans le fichier PSD à l’aide de C#.

// Charger le fichier PSD
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
	// Trouvons la couche que nous voulons remplacer
	var layerToReplace = FindLayer("ProfilePicture", image);

	using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
	{
		var newLayer = new Layer(stream);
		// Dessin du nouveau calque sur l'ancien
		var graphic = new Graphics(layerToReplace);
		graphic.Clear(Color.Empty);
		graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
	}
	// Enregistrez le fichier PSD mis à jour
	image.Save("updated-psd2.psd");
}
//-------------------RechercherCouche()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Obtenir des couches aa dans le fichier PSD
	var layers = image.Layers;
	// Trouver la couche souhaitée
	foreach (var layer in layers)
	{
		// Faire correspondre le nom du calque
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

Voici la capture d’écran du fichier PSD après la mise à jour du calque d’image à l’aide du code mentionné ci-dessus :

Mettre à jour la couche d'image dans PSD à l'aide de C#

Conclusion

Dans cet article, nous avons vu comment rechercher et mettre à jour les calques dans un fichier Photoshop (PSD) à l’aide de C#. Le guide étape par étape et les exemples de code montrent comment rechercher des calques et mettre à jour leur texte ou leur image dans les fichiers Photoshop PSD. Vous pouvez en savoir plus sur Aspose.PSD for .NET en utilisant documentation.

Voir également