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:

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.

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:

Najít vrstvu v PSD pomocí C#

Následuje výsledný soubor PSD s aktualizovanou textovou vrstvou:

Aktualizace textové vrstvy v PSD pomocí C#

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:

Aktualizujte vrstvu obrázků v PSD pomocí C#

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.

Viz také