PSD Layer

Преглед

Adobe® Photoshop® PSD Layer е един от най-добрите концепции в обработката на графика. Слоевете съдържат информация за пикселите и могат да имат различен брой канали.

Една от най-важните части на слоя в Photoshop Document е Ресурсите на слоята. Получавате пълен списък на поддържаните Ресурси на слоя в PSD от нашата документация.

Можете да намерите потребителски интерфейс за манипулиране на слоята на следващия снимков екран:

todo:image_alt_text

Но Aspose.PSD се специализира в програмно манипулиране на PSD Layer чрез C# и Java.

Допълнителна документация може да бъде намерена в тази Статия: Манипулиране на изображения. Всички манипулации могат да бъдат обработени към PSD Преглед и слой, ще намерите повече информация в Aspose.PSD Raster Image API Reference.

API за PSD Layer

  • Ефекти на слоя
  • Общи свойства на слоевете
  • Метаданни на слоя

Примери за Редактиране на слоя чрез 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);
}