In diesem Artikel erfahren Sie, wie Sie Ebenen finden und den Text oder das Bild der Ebene in den PSD Dateien von Photoshop mithilfe von C# .NET dynamisch aktualisieren.

PSD ist das Standardformat, das von Adobe Photoshop zum Speichern seiner Dokumente in einer mehrschichtigen Struktur verwendet wird, wobei jede Schicht Text, Bilder, grafische Objekte und andere unterstützte Elemente enthält. Es kann vorkommen, dass Sie eine PSD-Vorlage haben und mehrere resultierende Bilder erstellen müssen, indem Sie die Text und Bildebenen innerhalb der Vorlage füllen. Ein Beispiel für ein solches Szenario ist das Erstellen von Mitarbeiterkarten innerhalb einer Organisation. Um diesen Prozess zu automatisieren, zeige ich Ihnen, wie Sie:

C# Bibliothek zum Suchen und Aktualisieren von PSD-Layern

Aspose.PSD for .NET ermöglicht das Erstellen und Ändern von PSD Dateien ohne Installation von Adobe Photoshop oder Illustrator. Die API kann in dem Szenario nützlich sein, in dem Sie PSD-Layer dynamisch mit C# oder VB.NET aktualisieren müssen. Sie können die API mit NuGet Package Manager installieren oder ihre DLLs manuell herunterladen und darauf verweisen.

Suchen und aktualisieren Sie Textebenen in PSD Dateien mit C#

Mit Aspose.PSD for .NET können Sie die gewünschte Ebene in PSD Dateien anhand des Namens der Ebene finden. Sobald Sie den Layer gefunden haben, können Sie seinen Inhalt aktualisieren. Im Folgenden finden Sie die Schritte zum Suchen und Aktualisieren einer Textebene in einer PSD Datei.

  • Erstellen Sie eine Instanz der Klasse PsdImage und initialisieren Sie sie mit dem Pfad der PSD Datei.
  • Greifen Sie mit der Eigenschaft PsdImage.Layers auf die Ebenen in der PSD zu.
  • Passen Sie den Anzeigenamen jeder Ebene an, um die gewünschte Ebene in das TextLayer objekt zu bekommen.
  • Aktualisieren Sie den Text mit der methode TextLayer.UpdateText(String).
  • Speichern Sie das aktualisierte Bild mit der methode PsdImage.Save(String).

Das folgende Codebeispiel zeigt, wie Sie die Textebene in der PSD Datei mit C# suchen und aktualisieren.

// PSD Datei laden
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
	// Finden Sie die Ebene anhand des Namens der Ebene
	var layerToUpdateText = (TextLayer)FindLayer("Name", image);
	// Einfache Möglichkeit, Text zu aktualisieren
	layerToUpdateText.UpdateText("John Doe");
	// Speichern Sie die aktualisierte PSD Datei
	image.Save("updated-psd.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Holen Sie sich aa-Ebenen in der PSD Datei
	var layers = image.Layers;
	// Suchen Sie die gewünschte Ebene
	foreach (var layer in layers)
	{
		// Passen Sie den Namen der Ebene an
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

Unten sehen Sie den Screenshot der Eingabe-PSD Datei, die wir in diesem Beispiel verwendet haben:

Ebene in PSD mit C# finden

Das Folgende ist die resultierende PSD Datei mit aktualisierter Textebene:

Textebene in PSD mit C# aktualisieren

Suchen und aktualisieren Sie Bildebenen in PSD Dateien mit C#

Um mit grafischen Objekten wie Bildern umzugehen, macht Aspose.PSD for .NET die Klasse Graphics verfügbar. Diese Klasse wird verwendet, um die Grafiken innerhalb der PSD-Ebenen zu löschen oder zu zeichnen. Im Folgenden finden Sie die Schritte, um eine PSD-Ebene zu finden und ihr Bild zu aktualisieren.

  • Erstellen Sie ein Objekt der Klasse PsdImage, um die PSD Datei zu laden.
  • Suchen Sie die Ebene in der PSD Datei aus dem Objekt PsdImage.Layers.
  • Laden Sie das Bild, das Sie in der Ebene zeichnen möchten, in ein Stream objekt.
  • Erstellen Sie ein neues Layer objekt und initialisieren Sie es mit dem im vorherigen Schritt erstellten Stream objekt.
  • Erstellen Sie eine Instanz der Klasse Graphics und initialisieren Sie sie mit der zu ersetzenden Ebene.
  • Löschen Sie die Ebene mit der methode Graphics.Clear().
  • Zeichnen Sie das Bild in der Ebene mit der methode Graphics.DrawImage(Image, Rectangle).
  • Speichern Sie die Datei mit der methode PsdImage.Save(String).

Das folgende Codebeispiel zeigt, wie Bildebenen in der PSD Datei mit C# gesucht und aktualisiert werden.

// PSD Datei laden
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
	// Lassen Sie uns die Ebene finden, die wir ersetzen möchten
	var layerToReplace = FindLayer("ProfilePicture", image);

	using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
	{
		var newLayer = new Layer(stream);
		// Zeichnen einer neuen Schicht auf der alten
		var graphic = new Graphics(layerToReplace);
		graphic.Clear(Color.Empty);
		graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
	}
	// Speichern Sie die aktualisierte PSD Datei
	image.Save("updated-psd2.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Holen Sie sich aa-Ebenen in der PSD Datei
	var layers = image.Layers;
	// Suchen Sie die gewünschte Ebene
	foreach (var layer in layers)
	{
		// Passen Sie den Namen der Ebene an
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

Das Folgende ist der Screenshot der PSD Datei nach dem Aktualisieren der Bildebene mit dem oben genannten Code:

Bildebene in PSD mit C# aktualisieren

Fazit

In diesem Artikel haben wir gesehen, wie Sie die Ebenen in einer Photoshop Datei (PSD) mit C# finden und aktualisieren. Die Schritt-für-Schritt-Anleitung und die Codebeispiele zeigen, wie Sie Ebenen finden und ihren Text oder ihr Bild in den Photoshop-PSD Dateien aktualisieren. Weitere Informationen zu Aspose.PSD for .NET finden Sie unter Dokumentation.

Siehe auch