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.
- Skapa en instans av klassen PsdImage och initiera den med PSD-filens sökväg.
- Få åtkomst till lagren i PSD:n med PsdImage.Layers egenskapen.
- Matcha varje lagers visningsnamn för att få in det önskade lagret i objektet TextLayer.
- Uppdatera texten med metoden TextLayer.UpdateText(String).
- Spara den uppdaterade bilden med metoden PsdImage.Save(String).
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:
Följande är den resulterande PSD-filen som har uppdaterat textlager:
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.
- Skapa ett objekt av klassen PsdImage för att ladda PSD-filen.
- Hitta lagret i PSD-filen från objektet PsdImage.Layers.
- Ladda bilden du vill rita i lagret i ett Stream-objekt.
- Skapa ett nytt lagerobjekt och initiera det med Stream-objektet som skapades i föregående steg.
- Skapa en instans av klassen Graphics och initiera den med ett lager som ska ersättas.
- Rensa lagret med metoden Graphics.Clear().
- Rita bilden i lagret med metoden Graphics.DrawImage(Image, Rectangle).
- Spara filen med metoden PsdImage.Save(String).
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:
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.