PSD 레이어를 .NET에서 작업하는 방법
이 가이드는 문서의 레이어를 나열하고, 편집 가능한 레이어 메타데이터를 읽고 변경하며, 레이어의 위치를 재조정하고, 컬렉션에서 레이어를 제거하는 방법을 보여줍니다. 로드된 PsdImage의 Layers 속성은 Layer 객체 컬렉션을 반환합니다. 각 Layer은 편집 가능한 메타데이터—이름, 가시성, 불투명도, 클리핑, 혼합 모드 및 위치(경계 가장자리)—와 읽기 전용 전체 경계 및 채널 정보를 제공합니다.
단계별 가이드
1단계: 패키지 설치
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build2단계: 필요한 클래스 가져오기
나중에 사용되는 LINQ 확장 메서드(Where)는 System.Linq에서 제공되며, PSD 전용 타입은 아래 두 개의 Aspose.PSD 네임스페이스에서 가져옵니다.
using System.Linq;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Core.Blending;3단계: 문서를 로드하고 레이어를 나열하기
문서를 로드한 다음 Layers을(를) 반복하여 각 레이어의 이름과 기하 정보를 확인합니다:
using var image = PsdImage.Load("input.psd");
foreach (var layer in image.Layers)
{
Console.WriteLine($"{layer.Name}: {layer.Width}x{layer.Height} at ({layer.Left},{layer.Top})");
}4단계: 레이어 가시성, 불투명도 및 블렌드 모드 읽기 및 편집
IsVisible, Opacity (0-255), Clipping, Name, 및 BlendModeKey 모두 작동하는 setter가 있습니다:
var layer = image.Layers[0];
layer.IsVisible = false; // hide the layer
layer.Opacity = 200; // ~78% opacity
layer.BlendModeKey = BlendMode.Multiply;
layer.Name = "Renamed Layer";5단계: 레이어 경계 읽기 및 재배치
Bounds, Width, Height, 및 ChannelsCount은 읽기 전용입니다 — 하지만 Top, Left, Bottom, 및 Right은 각각 레이어를 재배치하는 작동하는 setter를 가지고 있습니다:
Console.WriteLine($"Bounds: {layer.Bounds}");
Console.WriteLine($"Channels: {layer.ChannelsCount}");
layer.Left = 10;
layer.Top = 20;
layer.Right = 40;
layer.Bottom = 60;6단계: 레이어 컬렉션 교체
PsdImage.Layers 자체에 작동하는 setter가 있으므로 전체 컬렉션을 교체할 수 있습니다(예: 레이어를 제거하려는 경우):
image.Layers = image.Layers.Where(l => l.Name != "Renamed Layer").ToArray();7단계: 문서 저장
이전 단계에서 수행한 모든 편집을 디스크에 저장합니다:
image.Save("output.psd");일반적인 문제 및 해결 방법
NotSupportedException 설정할 때 ChannelInformation, LayerMaskData, 또는 LayerBlendingRangesData. 이 세 가지 Layer 설정자는 이 FOSS 빌드에서 지원되지 않으므로 읽기 전용으로 취급하십시오.
불투명도 값이 설정 후 잘못된 것처럼 보입니다. Opacity 은(는) byte (0-255)이며, 0.0-1.0 소수나 백분율이 아닙니다 — layer.Opacity = 200 대략 78% 불투명(200/255)을 의미합니다.
레이어에 대한 변경 사항이 저장 후 표시되지 않습니다. 수정하고 있는 것이 Layer 에서 가져온 인스턴스인지 확인하십시오. image.Layers, 그리고 호출하는지 image.Save 편집을 마친 후.
자주 묻는 질문
문서에서 레이어를 제거할 수 있나요?
예 — PsdImage.Layers는 작동하는 setter를 가지고 있어, 필터링된 배열을 할당하여 레이어를 제거할 수 있습니다 (Step 6을 참고하세요).
어떤 블렌드 모드가 제공되나요?
BlendMode에는 Normal, Multiply, Screen, Overlay, Darken 등을 포함한 값들이 있으며 — Layer.BlendModeKey을 통해 설정합니다.
레이어 마스크 데이터를 사용할 수 있나요?
Layer.LayerMaskData는 작동하는 getter를 가지고 있지만, 이 FOSS 빌드에서는 setter가 NotSupportedException을 발생시킵니다.