У цій статті ви дізнаєтеся, як динамічно знаходити шари та оновлювати текст або зображення шару у PSD-файлах Photoshop за допомогою C# .NET.

PSD — це стандартний формат, який використовується Adobe Photoshop для збереження документів у багатошаровій структурі, де кожен шар містить текст, зображення, графічні об’єкти та інші підтримувані елементи. Може статися випадок, коли у вас є шаблон PSD і вам потрібно створити кілька результуючих зображень, заповнивши шари тексту та зображення в шаблоні. Прикладом такого сценарію є створення карток співробітників в організації. Щоб автоматизувати цей процес, я покажу вам, як:

Бібліотека C# для пошуку та оновлення шарів PSD

Aspose.PSD for .NET дозволяє створювати та змінювати файли PSD без інсталяції Adobe Photoshop чи Illustrator. API може бути корисним у випадку, коли вам потрібно динамічно оновлювати шари PSD за допомогою C# або VB.NET. Ви можете встановити API за допомогою NuGet Package Manager або завантажити та посилатися на його DLL вручну.

Знайдіть і оновіть текстові шари у файлах PSD за допомогою C#

Aspose.PSD for .NET дозволяє знаходити потрібний шар у файлах PSD за назвою шару. Знайшовши шар, ви можете оновити його вміст. Нижче наведено кроки, щоб знайти й оновити текстовий шар у файлі PSD.

  • Створіть екземпляр класу PsdImage та ініціалізуйте його шляхом до файлу PSD.
  • Отримайте доступ до шарів у PSD за допомогою властивості PsdImage.Layers.
  • Зіставте відображуване ім’я кожного шару, щоб додати потрібний шар до об’єкта TextLayer.
  • Оновіть текст за допомогою методу TextLayer.UpdateText(String).
  • Збережіть оновлене зображення за допомогою методу PsdImage.Save(String).

У наведеному нижче прикладі коду показано, як знайти та оновити текстовий шар у файлі PSD за допомогою C#.

// Завантажте файл PSD
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
	// Знайдіть шар за назвою шару
	var layerToUpdateText = (TextLayer)FindLayer("Name", image);
	// Простий спосіб оновити текст
	layerToUpdateText.UpdateText("John Doe");
	// Збережіть оновлений файл PSD
	image.Save("updated-psd.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Отримайте шари у файлі PSD
	var layers = image.Layers;
	// Знайдіть потрібний шар
	foreach (var layer in layers)
	{
		// Відповідність назві шару
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

Нижче наведено знімок екрана вхідного файлу PSD, який ми використовували в цьому прикладі:

Знайдіть шар у PSD за допомогою C#

Нижче наведено отриманий PSD-файл із оновленим текстовим шаром:

Оновіть текстовий шар у PSD за допомогою C#

Знайдіть і оновіть шари зображень у файлах PSD за допомогою C#

Для роботи з графічними об’єктами, такими як зображення, Aspose.PSD for .NET надає клас Graphics. Цей клас використовується для очищення або малювання графіки в шарах PSD. Нижче наведено кроки, щоб знайти шар PSD і оновити його зображення.

  • Створіть об’єкт класу PsdImage, щоб завантажити файл PSD.
  • Знайдіть шар у файлі PSD з об’єкта PsdImage.Layers.
  • Завантажте зображення, яке ви хочете намалювати, у шар в об’єкт Stream.
  • Створіть новий об’єкт Layer та ініціалізуйте його об’єктом Stream, створеним на попередньому кроці.
  • Створіть екземпляр класу Graphics та ініціалізуйте його шаром, який потрібно замінити.
  • Очистіть шар за допомогою методу Graphics.Clear().
  • Намалюйте зображення в шарі за допомогою методу Graphics.DrawImage(Image, Rectangle).
  • Збережіть файл за допомогою методу PsdImage.Save(String).

У наведеному нижче прикладі коду показано, як знайти та оновити шари зображення у файлі PSD за допомогою C#.

// Завантажте файл PSD
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
	// Давайте знайдемо шар, який ми хочемо замінити
	var layerToReplace = FindLayer("ProfilePicture", image);

	using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
	{
		var newLayer = new Layer(stream);
		// Нанесення нового шару на старий
		var graphic = new Graphics(layerToReplace);
		graphic.Clear(Color.Empty);
		graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
	}
	// Збережіть оновлений файл PSD
	image.Save("updated-psd2.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
	// Отримайте шари у файлі PSD
	var layers = image.Layers;
	// Знайдіть потрібний шар
	foreach (var layer in layers)
	{
		// Відповідність назві шару
		if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
		{
			return layer;
		}
	}
	return null;
}

Нижче наведено знімок екрана файлу PSD після оновлення шару зображення за допомогою згаданого вище коду:

Оновіть шар зображення в PSD за допомогою C#

Висновок

У цій статті ми побачили, як знайти та оновити шари у файлі Photoshop (PSD) за допомогою C#. Покроковий посібник і зразки коду демонструють, як знаходити шари та оновлювати їх текст або зображення у файлах Photoshop PSD. Ви можете дізнатися більше про Aspose.PSD for .NET за допомогою документації.

Дивись також