Resources
Resources
Un PsdImage încărcat expune blocurile sale de resurse de imagine — înregistrări în stil metadate, cum ar fi grile, ghidaje și încărcături de profil ICC — prin două vizualizări numai în citire, plus un rezumat separat pentru paletele de culori indexate.
Listarea blocurilor de resurse
PsdImage.image_resources returnează un PreservedResourceBlock per resursă, cu ID-ul brut al resursei, numele și dimensiunea în octeți:
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 returnează în schimb un rezumat PsdResourceInfo separat per resursă, adăugând o clasificare kind — în această construcție FOSS kind este întotdeauna PsdResourceKind.UNKNOWN, deoarece parserul de resurse al acestei construcții nu decodează ID-urile specifice ale resurselor în proprietăți semantice.
Recunoașterea ID-urilor de resurse cunoscute
Deoarece kind nu este rezolvat semantic, recunoaște o resursă specifică comparând block.id cu constantele din ImageResourceIds:
for block in image.image_resources:
if block.id == ImageResourceIds.ICC_PROFILE:
print(f"Found an ICC profile resource ({block.data_size} bytes)")Citirea unei palete de culori indexate
Dacă datele de culoare ale documentului se bazează pe paletă, PsdImage.indexed_palette returnează intrările sale:
palette = image.indexed_palette
if palette is not None:
print(f"Palette entries: {len(palette.entries)}")Sfaturi și cele mai bune practici
PsdImage.image_resources’ getter funcționează pentru listarea resurselor, dar setter-ul său genereazăNotSupportedException— resursele sunt doar în citire în această versiune FOSS.PsdImage.has_icc_profile,is_icc_profile_untaggedșiglobal_anglesunt valori fixe de placeholder în această versiune FOSS (întotdeaunaFalse,Noneși0, respectiv) indiferent de conținutul real al documentului încărcat — folosește modelul de comparare a ID-ului resursei de mai sus dacă trebuie să detectezi aceste resurse manual.PreservedResourceBlock.save()genereazăNotImplementedErrordacă este apelat direct — resursele trec printr-un round-trip automat când apeleziimage.save()pe întregul document.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
image.indexed_palette este None | Tipul de date de culoare al documentului nu este INDEXED_PALETTE | Doar documentele cu culori indexate conțin o paletă |
NotSupportedException setare image.image_resources | Setter-ul nu este suportat în această versiune FOSS | Tratează image_resources ca fiind numai în citire |
has_icc_profile / is_icc_profile_untagged / global_angle nu se modifică niciodată | Aceste 3 proprietăți sunt stub-uri placeholder codificate în mod fix în această construcție FOSS | Compară block.id cu ImageResourceIds în schimb (vezi mai sus) |
FAQ
Care este diferența dintre image_resources și resources?
Ambele listează aceleași blocuri de resurse de bază, dar ca tipuri de obiecte diferite: image_resources returnează obiecte PreservedResourceBlock (ID/nume/mărime brute, folosite pentru round-tripping), în timp ce resources returnează rezumate PsdResourceInfo (adaugă o clasificare kind, în prezent întotdeauna UNKNOWN).
Pot să modific sau să elimin o resursă de imagine?
Nu — setter-ul lui image_resources generează NotSupportedException, iar PreservedResourceBlock.save() generează NotImplementedError dacă este apelat direct. Resursele sunt doar pentru citire în această versiune FOSS.
Rezumat API Reference
| Clasă/Metodă | Descriere: |
|---|---|
PsdImage.image_resources | Blocuri de resurse brute (PreservedResourceBlock, numai în citire) |
PsdImage.resources | Rezumatul resurselor (PsdResourceInfo, kind sunt întotdeauna UNKNOWN) |
PsdImage.indexed_palette | Rezumatul paletei de culori indexate, când este prezentă |
ImageResourceIds | Constantele ID-urilor de resurse cunoscute pentru comparare cu resource_id/id |