Python에서 PSD 문서 섹션 검사 방법

Python에서 PSD 문서 섹션 검사 방법

로드된 PsdImage는 PSD/PSB 문서의 구조 섹션 — 헤더, 색상 데이터 섹션, 이미지 데이터 섹션, 이미지 리소스 섹션 — 에 대한 읽기 전용 요약 객체를 제공하며, 수동 바이트 수준 파싱이 필요하지 않습니다.

단계별 가이드

단계 1: 패키지 설치

pip install aspose-psd-foss

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

from aspose_psd_foss.psdimage import PsdImage

단계 3: 헤더 섹션 검사

PsdImage.header은(는) 문서의 원시 구조 필드를 포함하는 PsdHeader을 반환합니다:

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

header = image.header
print(f"Size: {header.width}x{header.height}, channels: {header.channels}")
print(f"Bit depth: {header.bit_depth}, raw color mode: {header.color_mode}")
print(f"Is PSB: {header.is_large_document}")

PsdHeader.color_mode은(는) 파일에 저장된 원시 정수 색상 모드 필드를 반환합니다 — 강력히 타입된 ColorModes 열거형이 필요하면 대신 PsdImage.color_mode을(를) 사용하십시오.


단계 4: 색상 데이터 섹션 검사

PsdImage.color_data_info은(는) PsdColorDataInfo 요약을 반환합니다; kind는 PsdColorDataKind 값이며 (NONE, INDEXED_PALETTE, RGB_PAYLOAD, CMYK_PAYLOAD, 또는 RAW_PRESERVED)입니다:

if image.has_color_mode_data:
    color_info = image.color_data_info
    print(f"Color data kind: {color_info.kind}, raw bytes: {color_info.raw_data_length}")

    if color_info.indexed_palette is not None:
        print(f"Indexed palette entries: {len(color_info.indexed_palette.entries)}")

단계 5: 이미지 데이터 섹션 검사

PsdImage.image_data_info은(는) 병합된 픽셀 데이터가 어떻게 인코딩되는지 설명하는 PsdImageDataInfo 요약을 반환합니다:

data_info = image.image_data_info
print(f"Compression: {image.compression}")
print(f"Data kind: {data_info.kind}, uses prediction: {data_info.uses_prediction}")
print(f"Compressed payload length: {data_info.compressed_payload_length}")

data_info.kind은(는) 병합된 이미지 데이터 자체 인코딩을 설명하는 ImageDataKind 값 (RAW, RLE, ZIP, 또는 UNKNOWN)이며 — image.compression은 별도의 CompressionMethod 열거형을 통해 동일한 인코딩을 보고합니다.


단계 6: 이미지 리소스 섹션 검사

print(f"Has image resources: {image.has_image_resources}")
print(f"Resource count: {image.resource_count}")

for resource in image.resources:
    print(f"Resource ID: {resource.resource_id}, kind: {resource.kind}")

PsdImage.resources 읽기 전용을 반환합니다 PsdResourceInfo 요약입니다. 별도의 PsdImage.image_resources 속성에도 getter가 있지만, setter는 예외를 발생시킵니다 NotSupportedException 이 오픈소스 빌드에서는 — 참고 Troubleshooting 읽기 전용 setter 전체 목록은 여기에서 확인할 수 있습니다.

일반적인 문제 및 해결 방법

header.color_mode 일치하지 않습니다 image.color_mode. 이는 예상된 동작입니다 — PsdHeader.color_mode 파일에서 가져온 원시 정수 필드이며, 반면에 PsdImage.color_mode 은(는) 강하게 타입이 지정된 ColorModes 은(는) 그것으로부터 생성된 enum입니다.

color_data_info.indexed_palette is None. 문서의 색상 데이터 종류는 아닙니다 INDEXED_PALETTE — 인덱스 색상 문서만 팔레트를 포함합니다.

Setting image.image_resources raises NotSupportedException. 이 설정자는 이 FOSS 빌드에서 지원되지 않습니다; 취급 image_resources and resources 읽기 전용으로.

자주 묻는 질문

헤더, 색상 데이터 또는 이미지 데이터 섹션을 직접 수정할 수 있나요?

아니요 — PsdHeader, PsdColorDataInfo, ColorData, 및 PsdImageDataInfo은 이 FOSS 빌드에서 모두 읽기 전용 요약 객체입니다. 그들의 속성에는 공개 설정자가 없습니다.

image.compression와 image.image_data_kind의 차이점은 무엇인가요?

그들은 두 개의 별도 enum을 통해 동일한 기본 인코딩을 설명합니다: image.compression은 CompressionMethod 값을 반환하고, image.image_data_info.kind은 ImageDataKind 값을 반환합니다.

참조

 한국어