PSD 레이어

개요

Adobe® Photoshop® PSD 레이어는 그래픽 처리의 최고 개념 중 하나입니다. 레이어에는 픽셀에 대한 정보가 포함되어 있으며 서로 다른 채널 수를 가질 수 있습니다.

Photoshop 문서의 레이어에서 가장 중요한 부분 중 하나는 레이어 리소스입니다. PSD에서 지원하는 레이어 리소스의 전체 목록을 문서에서 확인할 수 있습니다.

다음 스크린샷에서 레이어를 조작하는 UI를 찾을 수 있습니다:

todo:image_alt_text

하지만 Aspose.PSD는 C#Java를 통해 PSD 레이어의 프로그래밍 방식 조작에 특화되어 있습니다.

추가 문서를 아래 문서에서 찾을 수 있습니다: 이미지 조작. 모든 조작은 PSD 미리보기 및 레이어로 처리될 수 있으며 Aspose.PSD 래스터 이미지 API 참조에서 더 많은 정보를 얻을 수 있습니다.

사용 가능한 PSD 레이어 API

  • 레이어 효과
  • 레이어 공통 속성
  • 레이어 메타데이터

C#을 통한 레이어 편집 예시

새 레이어 추가

만약 열린 PSD 파일에 빈 레이어를 추가하고 싶다면 다음 코드를 사용할 수 있습니다.

API를 사용하여 PSD 파일에 새 레이어 추가하기

// 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);
}