Resources

Resources

로드된 PsdImage는 이미지 리소스 블록 — 그리드, 가이드, ICC 프로파일 페이로드와 같은 메타데이터 스타일 항목 — 을 두 개의 읽기 전용 뷰를 통해 노출하고, 인덱스된 색상 팔레트를 위한 별도 요약도 제공합니다.


리소스 블록 나열

PsdImage.image_resources는 각 리소스마다 PreservedResourceBlock를 반환하며, 원시 리소스 ID, 이름 및 바이트 크기를 포함합니다:

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.resources.imageresourceids import ImageResourceIds

image = PsdImage.load(input_path)

for block in image.image_resources:
    print(f"ID: {block.id}, name: {block.name!r}, size: {block.size} bytes")

PsdImage.resources는 대신 각 리소스마다 별도의 PsdResourceInfo 요약을 반환하고, kind 분류를 추가합니다 — 이 FOSS 빌드에서는 kind가 항상 PsdResourceKind.UNKNOWN이며, 이 빌드의 리소스 파서는 특정 리소스 ID를 의미론적 속성으로 디코딩하지 않기 때문입니다.


알려진 리소스 ID 인식

kind가 의미론적으로 해석되지 않으므로, block.id를 ImageResourceIds의 상수와 비교하여 특정 리소스를 인식합니다:

for block in image.image_resources:
    if block.id == ImageResourceIds.ICC_PROFILE:
        print(f"Found an ICC profile resource ({block.data_size} bytes)")

인덱스 색상 팔레트 읽기

문서의 색상 데이터가 팔레트 기반인 경우, PsdImage.indexed_palette는 해당 항목들을 반환합니다:

palette = image.indexed_palette

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

팁 및 모범 사례

  • PsdImage.image_resources의 getter는 리소스를 나열하는 데 작동하지만, setter는 NotSupportedException을 발생시킵니다 — 이 FOSS 빌드에서는 리소스가 읽기 전용입니다.
  • PsdImage.has_icc_profile, is_icc_profile_untagged, 및 global_angle는 이 FOSS 빌드에서 고정된 placeholder 값이며 (항상 각각 False, None, 0임) 로드된 문서의 실제 내용과 관계없이 — 이러한 리소스를 직접 감지해야 할 경우 위의 resource-ID 비교 패턴을 사용하십시오.
  • PreservedResourceBlock.save()를 직접 호출하면 NotImplementedError이 발생합니다 — 전체 문서에 image.save()를 호출하면 리소스가 자동으로 라운드트립됩니다.

일반적인 문제

문제원인수정
image.indexed_palette은 None문서의 색상 데이터 종류가 INDEXED_PALETTE가 아닙니다인덱스 색상 문서만 팔레트를 포함합니다
NotSupportedException 설정 image.image_resources이 FOSS 빌드에서는 setter가 지원되지 않습니다image_resources을(를) 읽기 전용으로 처리하십시오
has_icc_profile / is_icc_profile_untagged / global_angle는 절대 변경되지 않습니다이 3개의 속성은 이 FOSS 빌드에 하드코딩된 플레이스홀더 스텁입니다대신 block.id을(를) ImageResourceIds과 비교하십시오 (위 참조)

FAQ

image_resources와 resources의 차이점은 무엇인가요?

두 경우 모두 동일한 기본 리소스 블록을 나열하지만, 서로 다른 객체 유형으로 반환합니다: image_resources는 PreservedResourceBlock 객체(원시 ID/이름/크기, 라운드 트립에 사용)를 반환하고, resources는 PsdResourceInfo 요약을 반환합니다(kind 분류를 추가하며, 현재는 항상 UNKNOWN입니다).

이미지 리소스를 수정하거나 제거할 수 있나요?

아니요 — image_resources의 setter가 NotSupportedException을 발생시키고, PreservedResourceBlock.save()를 직접 호출하면 NotImplementedError을 발생시킵니다. 이 FOSS 빌드에서는 리소스가 읽기 전용입니다.


API Reference 요약

클래스/메서드설명
PsdImage.image_resources원시 리소스 블록(PreservedResourceBlock, 읽기 전용)
PsdImage.resources리소스 요약 (PsdResourceInfo, kind은 항상 UNKNOWN)
PsdImage.indexed_palette색인된 색상 팔레트 요약, 존재하는 경우
ImageResourceIdsresource_id/id와 비교하기 위한 알려진 리소스 ID 상수

참조

 한국어