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 și global_angle sunt valori fixe de placeholder în această versiune FOSS (întotdeauna False, None și 0, 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ă NotImplementedError dacă este apelat direct — resursele trec printr-un round-trip automat când apelezi image.save() pe întregul document.

Probleme comune

ProblemăCauzăRemediere
image.indexed_palette este NoneTipul de date de culoare al documentului nu este INDEXED_PALETTEDoar documentele cu culori indexate conțin o paletă
NotSupportedException setare image.image_resourcesSetter-ul nu este suportat în această versiune FOSSTratează 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 FOSSCompară 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_resourcesBlocuri de resurse brute (PreservedResourceBlock, numai în citire)
PsdImage.resourcesRezumatul resurselor (PsdResourceInfo, kind sunt întotdeauna UNKNOWN)
PsdImage.indexed_paletteRezumatul paletei de culori indexate, când este prezentă
ImageResourceIdsConstantele ID-urilor de resurse cunoscute pentru comparare cu resource_id/id

Vezi și:

 Română