Resources
Resources
Een geladen PsdImage maakt zijn afbeeldingsresourceblokken bloot — metadata-achtige items zoals rasters, hulplijnen en ICC-profielpayloads — via twee alleen-lezen weergaven, plus een apart overzicht voor geïndexeerde kleurenpaletten.
Lijst van resourceblokken
PsdImage.image_resources retourneert een PreservedResourceBlock per resource, met de ruwe resource-ID, naam en byte-grootte:
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 retourneert in plaats daarvan een afzonderlijk PsdResourceInfo-overzicht per resource, met een kind-classificatie — in deze FOSS-build is kind altijd PsdResourceKind.UNKNOWN, aangezien de resource-parser van deze build specifieke resource-ID’s niet decodeert naar semantische eigenschappen.
Bekende resource-ID’s herkennen
Aangezien kind niet semantisch wordt opgelost, kunt u een specifieke resource herkennen door block.id te vergelijken met de constanten in ImageResourceIds:
for block in image.image_resources:
if block.id == ImageResourceIds.ICC_PROFILE:
print(f"Found an ICC profile resource ({block.data_size} bytes)")Lezen van een geïndexeerd kleurenpalet
Als de kleurdaten van het document op een palet zijn gebaseerd, retourneert PsdImage.indexed_palette de items:
palette = image.indexed_palette
if palette is not None:
print(f"Palette entries: {len(palette.entries)}")Tips en best practices
- De getter van
PsdImage.image_resourceswerkt voor het opsommen van resources, maar de setter veroorzaaktNotSupportedException— resources zijn alleen-lezen in deze FOSS-build. PsdImage.has_icc_profile,is_icc_profile_untaggedenglobal_anglezijn vaste placeholder-waarden in deze FOSS-build (altijd respectievelijkFalse,Noneen0), ongeacht de feitelijke inhoud van het geladen document — gebruik het resource-ID-vergelijkingspatroon hierboven als je deze resources zelf moet detecteren.PreservedResourceBlock.save()veroorzaaktNotImplementedErrorals het direct wordt aangeroepen — resources maken automatisch een round-trip wanneer jeimage.save()aanroept op het volledige document.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
image.indexed_palette is None | Het kleurdatatype van het document is niet INDEXED_PALETTE | Alleen documenten met geïndexeerde kleuren bevatten een palet |
NotSupportedException instelling image.image_resources | De setter wordt niet ondersteund in deze FOSS-build | Behandel image_resources als alleen-lezen |
has_icc_profile / is_icc_profile_untagged / global_angle nooit wijzigen | Deze 3 eigenschappen zijn hardcoded placeholder-stubs in deze FOSS-build | Vergelijk block.id met ImageResourceIds in plaats daarvan (zie hierboven) |
FAQ
Wat is het verschil tussen image_resources en resources?
Beide geven dezelfde onderliggende resourceblokken weer, maar als verschillende objecttypen: image_resources retourneert PreservedResourceBlock objecten (ruwe ID/naam/grootte, gebruikt voor round-tripping), terwijl resources PsdResourceInfo samenvattingen retourneert (voegt een kind classificatie toe, momenteel altijd UNKNOWN).
Kan ik een image resource wijzigen of verwijderen?
Nee — de setter van image_resources veroorzaakt NotSupportedException, en PreservedResourceBlock.save() veroorzaakt NotImplementedError indien direct aangeroepen. Resources zijn alleen-lezen in deze FOSS-build.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
PsdImage.image_resources | Ruwe resourceblokken (PreservedResourceBlock, alleen-lezen) |
PsdImage.resources | Resourcesamenvattingen (PsdResourceInfo, kind zijn altijd UNKNOWN) |
PsdImage.indexed_palette | Samenvatting van geïndexeerde kleurenpalet, indien aanwezig |
ImageResourceIds | Bekende resource-ID-constanten voor vergelijking met resource_id/id |