PSD 레이어를 Python에서 작업하는 방법

PSD 레이어를 Python에서 작업하는 방법

이 가이드는 문서의 레이어를 나열하고, 편집 가능한 레이어 메타데이터를 읽고 변경하며, 레이어의 위치를 재조정하고, 컬렉션에서 레이어를 제거하는 방법을 보여줍니다. 로드된 PsdImage의 layers 속성은 Layer 객체 컬렉션을 반환합니다. 각 Layer은 편집 가능한 메타데이터—이름, 가시성, 불투명도, 클리핑, 혼합 모드 및 위치(경계 가장자리)—와 읽기 전용 전체 경계 및 채널 정보를 노출합니다.

단계별 가이드

단계 1: 패키지 설치

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATH

단계 2: 필요한 클래스 가져오기

PsdImage가 문서를 로드합니다; BlendMode는 나중에 레이어의 혼합 모드를 설정하는 데 사용됩니다:

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode

3단계: 문서를 로드하고 레이어를 나열합니다

문서를 로드한 다음 layers을 반복하여 각 레이어의 이름과 기하 정보를 확인합니다:

image = PsdImage.load("input.psd")

for layer in image.layers:
    print(f"{layer.name}: {layer.width}x{layer.height} at ({layer.left},{layer.top})")

4단계: 레이어 가시성, 불투명도 및 Blend Mode 읽기 및 편집

is_visible, opacity (통상 0-255), clipping, name, 및 blend_mode_key 모두 작동하는 setter가 있습니다:

layer = image.layers[0]

layer.is_visible = False          # hide the layer
layer.opacity = 200               # ~78% opacity
layer.blend_mode_key = BlendMode.MULTIPLY
layer.name = "Renamed Layer"

5단계: 레이어 경계 읽기 및 재배치

bounds, width, height, 및 channels_count은 읽기 전용입니다 — 하지만 top, left, bottom, 및 right 각각은 레이어를 재배치하는 작동하는 setter를 가지고 있습니다:

print(f"Bounds: {layer.bounds}")
print(f"Channels: {layer.channels_count}")

layer.left = 10
layer.top = 20
layer.right = 40
layer.bottom = 60

6단계: 레이어 컬렉션 교체

PsdImage.layers 자체에 작동하는 setter가 있으므로 전체 컬렉션을 교체할 수 있습니다(예: 레이어를 제거하려는 경우):

image.layers = [l for l in image.layers if l.name != "Renamed Layer"]

7단계: 문서 저장

이전 단계에서 만든 모든 편집 내용을 디스크에 저장하고, 이미지 리소스를 해제합니다:

image.save("output.psd")
image.dispose()

일반적인 문제 및 해결책

NotSupportedException 설 설정할 때 channel_information, layer_mask_data, 또는 layer_blending_ranges_data. 이 세 가지 Layer 설정자들은 이 FOSS 빌드에서 지원되지 않으며 — 읽기 전용으로 취급하십시오.

불투명도 값이 설정 후 올바르지 않아 보입니다. opacity 보통 0-255 값이며, 0.0-1.0 비율이나 백분율이 아닙니다 — layer.opacity = 200 대략 78% 불투명(200/255)을 의미합니다.

레이어에 대한 변경 사항이 저장 후 나타나지 않습니다. 수정을 하고 있는지 확인하십시오 Layer 다음에서 가져온 인스턴스 image.layers, 그리고 호출하는 image.save() 수정을 마친 후.

자주 묻는 질문

문서에서 레이어를 제거할 수 있나요?

예 — PsdImage.layers에는 작동하는 setter가 있으므로, 레이어를 제거하기 위해 필터링된 목록을 할당할 수 있습니다(단계 6을 참조).

사용 가능한 블렌드 모드에는 무엇이 있나요?

BlendMode에는 NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN와 같은 값들이 포함되어 있으며, 기타 값도 있습니다 — Layer.blend_mode_key을 통해 설정합니다.

레이어 마스크 데이터를 사용할 수 있나요?

Layer.layer_mask_data에는 작동하는 getter가 있지만, 이 FOSS 빌드에서는 setter가 NotSupportedException를 발생시킵니다.

참조

 한국어