Python에서 PSD 문서를 저장하고 내보내는 방법

Python에서 PSD 문서를 저장하고 내보내는 방법

이 가이드는 편집된 문서를 파일 경로에 저장하고, 열린 스트림에 저장하며, 이후에 로드된 이미지를 해제하는 방법을 보여줍니다. PsdImage.save은 문서를 다시 쓰기 위한 단일 공개 진입점으로, 파일 경로나 이미 열려 있는 쓰기 가능한 스트림 중 하나를 받아들입니다. 실제 바이트 인코딩을 수행하는 저수준 섹션 라이터는 내부 구현 세부 사항이며, 직접 호출하는 것이 아니라는 점을 기억하세요.

단계별 가이드

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은 이 가이드 예제에서 필요한 유일한 클래스입니다:

from aspose_psd_foss.psdimage import PsdImage

3단계: 파일 경로에 저장

문서를 로드하고, 편집한 다음 파일 경로에 다시 저장합니다:

image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")

4단계: 열려 있는 스트림에 저장

경로 대신 스트림을 전달하면 저장 후 스트림이 열려 있게 됩니다 — 닫는 시점을 직접 제어합니다:

with open("output.psd", "wb") as stream:
    image.save(stream)

5단계: 이미지 해제

로드된 PsdImage가 보유하고 있는 리소스를 사용이 끝난 후 해제합니다:

image.dispose()

일반적인 문제 및 해결 방법

RuntimeError: PsdImage has been disposed. 호출할 때 save. 이미지는 이미 해제되었습니다 (via dispose() 또는 with 종료된 블록) 이전에 save 호출되었습니다. 호출하십시오 save 해제하기 전에.

PsdSaveException Pascal 문자열 길이에 대해. 문자열 값이 255바이트를 초과합니다 — 참고 PSD Core 예외 처리 and Troubleshooting.

저장 시 PSD 또는 PSB 컨테이너를 강제 적용할 방법이 없습니다. 출력 컨테이너 형식을 선택할 공개 API가 없습니다 — 저장은 항상 로드된 형식(is_large_document / is_psb) 문서가 로드된 형식과 일치합니다. 다른 컨테이너 형식이 필요하다면, 이 FOSS 빌드에서는 지원되는 변환 경로가 없습니다.

자주 묻는 질문

스트림에 저장한 후 스트림이 닫히나요?

아니요 — save에 스트림을 전달하면 스트림은 이후에도 열려 있게 되며, 따라서 사용자가 그 수명 주기를 제어합니다(see Step 4). 반대로 파일 경로에 저장할 경우 파일을 내부적으로 열고 닫습니다.

save 대신 내부 섹션 라이터를 직접 호출할 수 있나요?

아니요 — 섹션 수준 라이터는 PsdImage.save에 의해 호출되는 내부 구현 세부사항입니다. PsdImage 인스턴스에서 save을 호출하는 것 외에 문서를 작성하는 방법은 문서화되거나 지원되지 않습니다.

참조

 한국어