In questo articolo imparerai come trovare livelli e aggiornare il testo o l’immagine del livello all’interno dei file PSD di Photoshop in modo dinamico utilizzando C# .NET.

PSD è il formato predefinito utilizzato da Adobe Photoshop per salvare i propri documenti in una struttura a più livelli in cui ogni livello contiene il testo, le immagini, gli oggetti grafici e altri elementi supportati. Potrebbe verificarsi il caso in cui hai un modello PSD e devi creare diverse immagini risultanti popolando i livelli di testo e immagine all’interno del modello. Un esempio di tale scenario è la creazione di schede per i dipendenti all’interno di un’organizzazione. Per automatizzare questo processo, ti mostrerò come:

Libreria C# per trovare e aggiornare i livelli PSD

Aspose.PSD for .NET consente di creare e modificare file PSD senza installare Adobe Photoshop o Illustrator. L’API può essere utile nello scenario in cui è necessario aggiornare i livelli PSD in modo dinamico utilizzando C# o VB.NET. È possibile installare l’API utilizzando NuGet Package Manager o scaricare e fare riferimento alle sue DLL manualmente.

Trova e aggiorna i livelli di testo nei file PSD usando C#

Aspose.PSD per .NET consente di trovare il livello desiderato nei file PSD utilizzando il nome del livello. Una volta trovato il livello, puoi aggiornarne il contenuto. Di seguito sono riportati i passaggi per trovare e aggiornare un livello di testo in un file PSD.

L’esempio di codice seguente mostra come trovare e aggiornare il livello di testo nel file PSD usando C#.

// Carica file PSD
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
	// Trova il livello usando il nome del livello
	var layerToUpdateText = (TextLayer)FindLayer("Name", image);
	// Modo semplice per aggiornare il testo
	layerToUpdateText.UpdateText("John Doe");
	// Salva il file PSD aggiornato
	image.Save("updated-psd.psd");
}
//-------------------TrovaLivello()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Ottieni livelli aa nel file PSD
	var layers = image.Layers;
	// Trova il livello desiderato
	foreach (var layer in layers)
	{
		// Abbina il nome del livello
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

Di seguito è riportato lo screenshot del file PSD di input che abbiamo utilizzato in questo esempio:

Trova il livello in PSD usando C#

Quello che segue è il file PSD risultante con il livello di testo aggiornato:

Aggiorna il livello di testo in PSD usando C#

Trova e aggiorna i livelli di immagine nei file PSD usando C#

Per gestire oggetti grafici come immagini, Aspose.PSD per .NET espone la classe Graphics. Questa classe viene utilizzata per cancellare o disegnare la grafica all’interno dei livelli PSD. Di seguito sono riportati i passaggi per trovare un livello PSD e aggiornarne l’immagine.

  • Crea un oggetto della classe PsdImage per caricare il file PSD.
  • Trova il livello nel file PSD dall’oggetto PsdImage.Layers.
  • Carica l’immagine che vuoi disegnare nel livello in un oggetto Stream.
  • Crea un nuovo oggetto Layer e inizializzalo con l’oggetto Stream creato nel passaggio precedente.
  • Crea un’istanza della classe Graphics e inizializzala con il livello da sostituire.
  • Cancella il livello usando il metodo Graphics.Clear().
  • Disegna l’immagine nel livello usando il metodo Graphics.DrawImage(Image, Rectangle).
  • Salva il file usando il metodo PsdImage.Save(String).

L’esempio di codice seguente mostra come trovare e aggiornare i livelli di immagine nel file PSD usando C#.

// Carica file PSD
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
	// Troviamo il livello che vogliamo sostituire
	var layerToReplace = FindLayer("ProfilePicture", image);

	using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
	{
		var newLayer = new Layer(stream);
		// Disegno di un nuovo livello sul vecchio
		var graphic = new Graphics(layerToReplace);
		graphic.Clear(Color.Empty);
		graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
	}
	// Salva il file PSD aggiornato
	image.Save("updated-psd2.psd");
}
//-------------------TrovaLivello()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Ottieni livelli aa nel file PSD
	var layers = image.Layers;
	// Trova il livello desiderato
	foreach (var layer in layers)
	{
		// Abbina il nome del livello
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

Quello che segue è lo screenshot del file PSD dopo aver aggiornato il livello immagine utilizzando il codice sopra menzionato:

Aggiorna il livello dell'immagine in PSD usando C#

Conclusione

In questo articolo, abbiamo visto come trovare e aggiornare i livelli in un file Photoshop (PSD) usando C#. La guida passo passo e gli esempi di codice mostrano come trovare livelli e aggiornare il testo o l’immagine nei file PSD di Photoshop. Puoi esplorare di più su Aspose.PSD per .NET usando documentazione.

Guarda anche