Огляд
Шар PSD в Adobe® Photoshop® - один з кращих концепцій обробки графіки. Шари містять інформацію про пікселі, можуть мати різну кількість каналів.
Однією з найважливіших частин шару в документі Photoshop є Ресурси шару. У нашій документації ви знайдете повний список підтримуваних Ресурсів шару в PSD.
Ви можете знайти користувацький інтерфейс для маніпулювання шаром на наступному знімку екрану:
Але Aspose.PSD спеціалізується на програмних маніпуляціях PSD-шару через C# та Java.
Додаткову документацію можна знайти в цій статті: Маніпулювання Зображеннями. Усі маніпуляції можуть бути оброблені для Попереднього перегляду PSD та Шару, ви знайдете більше інформації в Довідці API для Растрових Зображень Aspose.PSD.
Доступні API для Шару PSD
- Ефекти шару
- Загальні властивості шарів
- Метадані шару
Приклади редагування шару через C#
Додавання нового Шару
Якщо ви хочете додати порожній Шар до відкритого Файлу PSD, ви можете використати наступний код.
Додаток нового Шару до файлу PSD за допомогою API
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Make ability to add the newly generated regular layer to PsdImage | |
string sourceFileName = dataDir + "OneLayer.psd"; | |
string exportPath = dataDir + "OneLayerEdited.psd"; | |
string exportPathPng = dataDir + "OneLayerEdited.png"; | |
using (var im = (PsdImage)Image.Load(sourceFileName)) | |
{ | |
// Preparing two int arrays | |
var data1 = new int[2500]; | |
var data2 = new int[2500]; | |
var rect1 = new Rectangle(0, 0, 50, 50); | |
var rect2 = new Rectangle(0, 0, 100, 25); | |
for (int i = 0; i < 2500; i++) | |
{ | |
data1[i] = -10000000; | |
data2[i] = -10000000; | |
} | |
var layer1 = im.AddRegularLayer(); | |
layer1.Left = 25; | |
layer1.Top = 25; | |
layer1.Right = 75; | |
layer1.Bottom = 75; | |
layer1.SaveArgb32Pixels(rect1, data1); | |
var layer2 = im.AddRegularLayer(); | |
layer2.Left = 25; | |
layer2.Top = 150; | |
layer2.Right = 125; | |
layer2.Bottom = 175; | |
layer2.SaveArgb32Pixels(rect2, data2); | |
// Save psd | |
im.Save(exportPath, new PsdOptions()); | |
// Save png | |
im.Save(exportPathPng, new PngOptions()); | |
} |
Додавання нового Шару з файлів Jpeg, Png, Gif, Ai, Tiff, Bmp
Файли будь-яких підтримуваних форматів можна додати як новий шар до вашого зображення. Але ви не можете завантажити його безпосередньо.
Ви можете використовувати наведений нижче код, щоб додати новий шар PSD з файлу будь-якого підтримуваного формату з потоку
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string outputFilePath = dataDir + "PsdResult.psd"; | |
var filesList = new string[] | |
{ | |
"PsdExample.psd", | |
"BmpExample.bmp", | |
"GifExample.gif", | |
"Jpeg2000Example.jpf", | |
"JpegExample.jpg", | |
"PngExample.png", | |
"TiffExample.tif", | |
}; | |
using (var image = new PsdImage(200, 200)) | |
{ | |
foreach (var fileName in filesList) | |
{ | |
string filePath = dataDir + fileName; | |
using (var stream = new FileStream(filePath, FileMode.Open)) | |
{ | |
Layer layer = null; | |
try | |
{ | |
layer = new Layer(stream); | |
image.AddLayer(layer); | |
} | |
catch (Exception e) | |
{ | |
if (layer != null) | |
{ | |
layer.Dispose(); | |
} | |
throw e; | |
} | |
} | |
} | |
image.Save(outputFilePath); | |
} |
Об’єднати всі шари або групи шарів
Це може бути корисним, якщо ви не хочете надавати вашим користувачам редагований файл PSD. Також ви можете ідентифікувати через API, чи був файл зрівняний.
Зрівнювання Шару файлу PSD:
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Flatten whole PSD | |
string sourceFileName = dataDir + "ThreeRegularLayersSemiTransparent.psd"; | |
string exportPath = dataDir + "ThreeRegularLayersSemiTransparentFlattened.psd"; | |
using (var im = (PsdImage)(Image.Load(sourceFileName))) | |
{ | |
im.FlattenImage(); | |
im.Save(exportPath); | |
} | |
// Merge one layer in another | |
exportPath = dataDir + "ThreeRegularLayersSemiTransparentFlattenedLayerByLayer.psd"; | |
using (var im = (PsdImage)(Image.Load(sourceFileName))) | |
{ | |
var bottomLayer = im.Layers[0]; | |
var middleLayer = im.Layers[1]; | |
var topLayer = im.Layers[2]; | |
var layer1 = im.MergeLayers(bottomLayer, middleLayer); | |
var layer2 = im.MergeLayers(layer1, topLayer); | |
// Set up merged layers | |
im.Layers = new Layer[] { layer2 }; | |
im.Save(exportPath); | |
} |