Resources
Resources
ロードされた PsdImage は、グリッド、ガイド、ICC プロファイル ペイロードなどのメタデータ形式エントリである画像リソースブロックを、2 つの読み取り専用ビューを通じて公開し、さらにインデックスカラー パレット用の別個のサマリーも提供します。
リソースブロックの一覧表示
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 ビルドにおける固定プレースホルダー値です(それぞれ常にFalse、None、0です)。読み込まれたドキュメントの実際の内容に関係なく — これらのリソースを自分で検出する必要がある場合は、上記のリソース 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 のセッターは NotSupportedException を発生させ、PreservedResourceBlock.save() は直接呼び出すと NotImplementedError を発生させます。この FOSS ビルドではリソースは読み取り専用です。
API Reference 概要
| クラス/メソッド | 説明 |
|---|---|
PsdImage.image_resources | 生リソースブロック(PreservedResourceBlock、読み取り専用) |
PsdImage.resources | リソース概要(PsdResourceInfo、kind は常に UNKNOWN) |
PsdImage.indexed_palette | インデックスされたカラーパレットの概要(存在する場合) |
ImageResourceIds | resource_id/id と比較するための既知のリソース ID 定数 |