I den här artikeln kommer du att lära dig hur du hittar lager och uppdaterar lagrets text eller bild i Photoshops PSD-filer dynamiskt med C# .NET.

PSD är standardformatet som används av Adobe Photoshop för att spara sina dokument i en struktur med flera lager där varje lager innehåller text, bilder, grafiska objekt och andra element som stöds. Det kan vara fallet när du har en PSD-mall och du behöver skapa flera resulterande bilder genom att fylla i text- och bildlagren i mallen. Ett exempel på ett sådant scenario är att skapa medarbetarkort inom en organisation. För att automatisera denna process ska jag visa dig hur du:

C#-bibliotek för att hitta och uppdatera PSD-lager

Aspose.PSD for .NET gör det möjligt att skapa och ändra PSD-filer utan att installera Adobe Photoshop eller Illustrator. API:t kan vara praktiskt i det scenario där du behöver uppdatera PSD-lager dynamiskt med C# eller VB.NET. Du kan installera API:t med NuGet Package Manager eller ladda ner och referera till dess DLL:er manuellt.

Hitta och uppdatera textlager i PSD-filer med C#

Aspose.PSD för .NET låter dig hitta önskat lager i PSD-filer med hjälp av lagrets namn. När du har hittat lagret kan du uppdatera dess innehåll. Följande är stegen för att hitta och uppdatera ett textlager i en PSD-fil.

Följande kodexempel visar hur du hittar och uppdaterar textlagret i PSD-filen med C#.

// Ladda PSD-fil
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
	// Hitta lager med lagrets namn
	var layerToUpdateText = (TextLayer)FindLayer("Name", image);
	// Enkelt sätt att uppdatera text
	layerToUpdateText.UpdateText("John Doe");
	// Spara den uppdaterade PSD-filen
	image.Save("updated-psd.psd");
}
//------------------FindLayer()--------------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Hämta aa lager i PSD-fil
	var layers = image.Layers;
	// Hitta önskat lager
	foreach (var layer in layers)
	{
		// Matcha lagrets namn
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

Nedan är skärmdumpen av indata-PSD-filen som vi har använt i detta exempel:

Hitta lager i PSD med C#

Följande är den resulterande PSD-filen som har uppdaterat textlager:

Uppdatera textlager i PSD med C#

Hitta och uppdatera bildlager i PSD-filer med C#

För att kunna hantera grafiska objekt som bilder, exponerar Aspose.PSD för .NET Graphics klass. Den här klassen används för att rensa eller rita grafiken i PSD-lagren. Följande är stegen för att hitta ett PSD-lager och uppdatera dess bild.

Följande kodexempel visar hur man hittar och uppdaterar bildlager i PSD-filen med C#.

// Ladda PSD-fil
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
	// Låt oss hitta lager som vi vill byta ut
	var layerToReplace = FindLayer("ProfilePicture", image);

	using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
	{
		var newLayer = new Layer(stream);
		// Ritning av nytt lager på det gamla
		var graphic = new Graphics(layerToReplace);
		graphic.Clear(Color.Empty);
		graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
	}
	// Spara den uppdaterade PSD-filen
	image.Save("updated-psd2.psd");
}
//------------------FindLayer()--------------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Hämta aa lager i PSD-fil
	var layers = image.Layers;
	// Hitta önskat lager
	foreach (var layer in layers)
	{
		// Matcha lagrets namn
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

Följande är skärmdumpen av PSD-filen efter uppdatering av bildlagret med den ovan nämnda koden:

Uppdatera bildlager i PSD med C#

Slutsats

I den här artikeln har vi sett hur man hittar och uppdaterar lagren i en Photoshop-fil (PSD) med C#. Steg-för-steg-guiden och kodexemplen visar hur man hittar lager och uppdaterar deras text eller bild i Photoshop PSD-filer. Du kan utforska mer om Aspose.PSD för .NET med dokumentation.

Se även