Resources
Resources
Un PsdImage caricato espone i suoi blocchi di risorse immagine — voci in stile metadati come griglie, guide e payload di profili ICC — tramite due visualizzazioni di sola lettura, più un riepilogo separato per le palette di colori indicizzate.
Elenco dei blocchi di risorse
PsdImage.image_resources restituisce un PreservedResourceBlock per risorsa, con l’ID risorsa grezzo, il nome e la dimensione in byte:
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 restituisce invece un riepilogo PsdResourceInfo separato per risorsa, aggiungendo una classificazione kind — in questa build FOSS kind è sempre PsdResourceKind.UNKNOWN, poiché il parser delle risorse di questa build non decodifica ID risorsa specifici in proprietà semantiche.
Riconoscimento degli ID risorsa noti
Poiché kind non è risolto semanticamente, riconosci una risorsa specifica confrontando block.id con le costanti 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)")Lettura di una tavolozza di colori indicizzata
Se i dati di colore del documento sono basati su tavolozza, PsdImage.indexed_palette restituisce le sue voci:
palette = image.indexed_palette
if palette is not None:
print(f"Palette entries: {len(palette.entries)}")Consigli e migliori pratiche
- Il getter di
PsdImage.image_resourcesfunziona per elencare le risorse, ma il suo setter sollevaNotSupportedException— le risorse sono di sola lettura in questa build FOSS. PsdImage.has_icc_profile,is_icc_profile_untaggedeglobal_anglesono valori segnaposto fissi in questa build FOSS (sempreFalse,Nonee0rispettivamente) indipendentemente dal contenuto reale del documento caricato — utilizza il modello di confronto resource-ID sopra se devi rilevare queste risorse da solo.PreservedResourceBlock.save()sollevaNotImplementedErrorse chiamato direttamente — le risorse fanno il round-trip automaticamente quando chiamiimage.save()sull’intero documento.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
image.indexed_palette è None | Il tipo di dati colore del documento non è INDEXED_PALETTE | Solo i documenti a colori indicizzati contengono una tavolozza |
NotSupportedException impostazione image.image_resources | Il setter non è supportato in questa build FOSS | Tratta image_resources come sola lettura |
has_icc_profile / is_icc_profile_untagged / global_angle non modificare mai | Queste 3 proprietà sono stub segnaposto hardcoded in questa build FOSS | Confronta block.id con ImageResourceIds invece (vedi sopra) |
FAQ
Qual è la differenza tra image_resources e resources?
Entrambi elencano gli stessi blocchi di risorse sottostanti, ma come tipi di oggetto diversi: image_resources restituisce oggetti PreservedResourceBlock (ID/nome/taglia grezzi, usati per il round-tripping), mentre resources restituisce riepiloghi PsdResourceInfo (aggiunge una classificazione kind, attualmente sempre UNKNOWN).
Posso modificare o rimuovere una risorsa immagine?
No — il setter di image_resources genera NotSupportedException, e PreservedResourceBlock.save() genera NotImplementedError se chiamato direttamente. Le risorse sono in sola lettura in questa build FOSS.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
PsdImage.image_resources | Blocchi di risorse grezze (PreservedResourceBlock, sola lettura) |
PsdImage.resources | Riepiloghi delle risorse (PsdResourceInfo, kind sono sempre UNKNOWN) |
PsdImage.indexed_palette | Riepilogo della tavolozza dei colori indicizzata, se presente |
ImageResourceIds | Costanti di ID risorsa note per il confronto con resource_id/id |