Python에서 PSD 문서를 로드하는 방법

Python에서 PSD 문서를 로드하는 방법

PsdImage.load은 PSD/PSB 문서를 여는 단일 공개 진입점이며 — 파일 경로나 이미 열려 있는 읽기 가능한 스트림 중 하나를 받아들입니다. 내부적으로 위임되는 저수준 섹션별 리더는 직접 호출하는 것이 아닙니다.

단계별 가이드

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단계: 필요한 클래스 가져오기

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

3단계: 파일 경로에서 로드

image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()

단계 4: 스트림에서 로드하기

스트림은 시크 가능일 필요가 없습니다 — load는 파싱하기 전에 전체 내용을 내부 버퍼에 읽어들입니다:

with open("input.psd", "rb") as stream:
    image = PsdImage.load(stream)

print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()

일반적인 문제 및 해결 방법

FileNotFoundError: File not found: .... 전달된 경로는 load 존재하는 파일을 가리키지 않습니다 — load checks os.path.isfile 열기 시도하기 전에.

PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. 소스 스트림이 구문 분석 중간에 데이터가 부족했습니다 (an EOFError 읽는 동안) — 파일이 잘려졌을 가능성이 높습니다.

PsdLoadException: Failed to read PSD/PSB data from the source stream. 스트림 자체에서 읽는 중 I/O 오류가 발생했으며, 래핑되어 다음과 같이 다시 발생했습니다: PsdLoadException.

ArgumentNullException 호출할 때 load. load 가 다음과 같이 호출되었습니다: None 스트림 인수로.

자주 묻는 질문

스트림을 시작 지점으로 다시 seek해야 load을 호출하기 전에 필요합니까?

아니요 — 스트림이 seek 가능하면 load은 읽은 후 원래 위치를 복원합니다; seek 불가능한 경우에도 load은 작동합니다. 이는 파싱하기 전에 스트림 내용을 내부적으로 버퍼링하기 때문입니다.

위의 두 FileNotFoundError/PsdLoadException 실패 사이에는 어떤 차이가 있나요?

파일 경로가 누락되면 표준 예외를 발생시킵니다 FileNotFoundError 구문 분석이 시작되기 전에. A PsdLoadException 그 대신 파일(또는 스트림)이 발견되어 열렸지만, 파싱이 시작된 후 PSD/PSB 데이터 자체가 잘리거나 손상되었거나, 그 외의 이유로 읽을 수 없게 됩니다 — 또한 다음을 참조하십시오 Troubleshooting 버전 및 경계 관련 PsdLoadException 변형들.

참조

 한국어