V tomto článku se dozvíte, jak najít vrstvy a aktualizovat text nebo obrázek vrstvy v souborech PSD Photoshopu dynamicky pomocí C# .NET.
PSD je výchozí formát používaný Adobe Photoshopem pro ukládání dokumentů ve vícevrstvé struktuře, kde každá vrstva obsahuje text, obrázky, grafické objekty a další podporované prvky. Může nastat případ, kdy máte šablonu PSD a potřebujete vytvořit několik výsledných obrázků vyplněním textových a obrazových vrstev v šabloně. Příkladem takového scénáře je vytváření karet zaměstnanců v rámci organizace. Abychom tento proces zautomatizovali, ukážu vám, jak:
- najít a aktualizovat textové vrstvy v souborech PSD pomocí C#
- najít a aktualizovat vrstvy obrázků v souborech PSD pomocí C#
Knihovna C# pro vyhledání a aktualizaci vrstev PSD
Aspose.PSD for .NET umožňuje vytvářet a upravovat soubory PSD bez instalace Adobe Photoshop nebo Illustrator. API může být užitečné ve scénáři, kdy potřebujete dynamicky aktualizovat vrstvy PSD pomocí C# nebo VB.NET. API můžete nainstalovat pomocí NuGet Package Manager nebo stáhnout a odkazovat na jeho DLL ručně.
Najděte a aktualizujte textové vrstvy v souborech PSD pomocí C#
Aspose.PSD for .NET vám umožňuje najít požadovanou vrstvu v souborech PSD pomocí názvu vrstvy. Jakmile vrstvu najdete, můžete aktualizovat její obsah. Následují kroky k nalezení a aktualizaci textové vrstvy v souboru PSD.
- Vytvořte instanci třídy PsdImage a inicializujte ji s cestou k souboru PSD.
- Přístup k vrstvám v PSD pomocí vlastnosti PsdImage.Layers.
- Porovnejte zobrazovaný název každé vrstvy, abyste dostali požadovanou vrstvu do objektu TextLayer.
- Aktualizujte text pomocí metody TextLayer.UpdateText(String).
- Uložte aktualizovaný obrázek pomocí metody PsdImage.Save(String).
Následující ukázka kódu ukazuje, jak najít a aktualizovat textovou vrstvu v souboru PSD pomocí C#.
// Načíst soubor PSD
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
// Najděte vrstvu pomocí názvu vrstvy
var layerToUpdateText = (TextLayer)FindLayer("Name", image);
// Jednoduchý způsob aktualizace textu
layerToUpdateText.UpdateText("John Doe");
// Uložte aktualizovaný soubor PSD
image.Save("updated-psd.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
// Získejte vrstvy aa v souboru PSD
var layers = image.Layers;
// Najděte požadovanou vrstvu
foreach (var layer in layers)
{
// Shodovat se s názvem vrstvy
if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
{
return layer;
}
}
return null;
}
Níže je snímek obrazovky vstupního souboru PSD, který jsme použili v tomto příkladu:
Následuje výsledný soubor PSD s aktualizovanou textovou vrstvou:
Najděte a aktualizujte vrstvy obrázků v souborech PSD pomocí C#
Aby bylo možné pracovat s grafickými objekty, jako jsou obrázky, Aspose.PSD for .NET zpřístupňuje třídu Graphics. Tato třída se používá k vymazání nebo kreslení grafiky ve vrstvách PSD. Následují kroky k nalezení vrstvy PSD a aktualizaci jejího obrazu.
- Vytvořte objekt třídy PsdImage pro načtení souboru PSD.
- Najděte vrstvu v souboru PSD z objektu PsdImage.Layers.
- Načtěte obrázek, který chcete nakreslit do vrstvy v objektu Stream.
- Vytvořte nový objekt Layer a inicializujte jej pomocí objektu Stream vytvořeného v předchozím kroku.
- Vytvořte instanci třídy Graphics a inicializujte ji vrstvou, která má být nahrazena.
- Vyčistěte vrstvu pomocí metody Graphics.Clear().
- Nakreslete obrázek do vrstvy pomocí metody Graphics.DrawImage(Image, Rectangle).
- Uložte soubor pomocí metody PsdImage.Save(String).
Následující ukázka kódu ukazuje, jak najít a aktualizovat vrstvy obrázků v souboru PSD pomocí C#.
// Načíst soubor PSD
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
// Najdeme vrstvu, kterou chceme nahradit
var layerToReplace = FindLayer("ProfilePicture", image);
using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
{
var newLayer = new Layer(stream);
// Kreslení nové vrstvy na staré
var graphic = new Graphics(layerToReplace);
graphic.Clear(Color.Empty);
graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
}
// Uložte aktualizovaný soubor PSD
image.Save("updated-psd2.psd");
}
//-------------------FindLayer()--------------
public static Layer FindLayer(string layerName, PsdImage image)
{
// Získejte vrstvy aa v souboru PSD
var layers = image.Layers;
// Najděte požadovanou vrstvu
foreach (var layer in layers)
{
// Shodovat se s názvem vrstvy
if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
{
return layer;
}
}
return null;
}
Níže je uveden snímek obrazovky souboru PSD po aktualizaci vrstvy obrazu pomocí výše uvedeného kódu:
Závěr
V tomto článku jsme viděli, jak najít a aktualizovat vrstvy v souboru Photoshopu (PSD) pomocí C#. Průvodce krok za krokem a ukázky kódu ukazují, jak najít vrstvy a aktualizovat jejich text nebo obrázek v souborech Photoshop PSD. Více o Aspose.PSD for .NET můžete prozkoumat pomocí dokumentace.