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 | 색인된 색상 팔레트 요약, 존재하는 경우 |
ImageResourceIds | resource_id/id와 비교하기 위한 알려진 리소스 ID 상수 |