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インデックスされたカラーパレットの概要(存在する場合)
ImageResourceIdsresource_id/id と比較するための既知のリソース ID 定数

参照

 日本語