У цій статті ви дізнаєтеся, як динамічно знаходити шари та оновлювати текст або зображення шару у PSD-файлах Photoshop за допомогою C# .NET.
PSD — це стандартний формат, який використовується Adobe Photoshop для збереження документів у багатошаровій структурі, де кожен шар містить текст, зображення, графічні об’єкти та інші підтримувані елементи. Може статися випадок, коли у вас є шаблон PSD і вам потрібно створити кілька результуючих зображень, заповнивши шари тексту та зображення в шаблоні. Прикладом такого сценарію є створення карток співробітників в організації. Щоб автоматизувати цей процес, я покажу вам, як:
- знаходити та оновлювати текстові шари у файлах PSD за допомогою C#
- знаходити та оновлювати шари зображень у файлах PSD за допомогою C#
Бібліотека 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-файл із оновленим текстовим шаром:
Знайдіть і оновіть шари зображень у файлах 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 після оновлення шару зображення за допомогою згаданого вище коду:
Висновок
У цій статті ми побачили, як знайти та оновити шари у файлі Photoshop (PSD) за допомогою C#. Покроковий посібник і зразки коду демонструють, як знаходити шари та оновлювати їх текст або зображення у файлах Photoshop PSD. Ви можете дізнатися більше про Aspose.PSD for .NET за допомогою документації.