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:
- trova e aggiorna i livelli di testo nei file PSD usando C#
- trova e aggiorna i livelli di immagine nei file PSD usando C#
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.
- Crea un’istanza della classe PsdImage e inizializzala con il percorso del file PSD.
- Accedi ai livelli nel PSD utilizzando la proprietà PsdImage.Layers.
- Abbina il nome visualizzato di ciascun livello per ottenere il livello desiderato nell’oggetto TextLayer.
- Aggiorna il testo usando il metodo TextLayer.UpdateText(String).
- Salva l’immagine aggiornata usando il metodo PsdImage.Save(String).
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:
Quello che segue è il file PSD risultante con il livello di testo aggiornato:
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:
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.