Resources

Resources

En laddad PsdImage exponerar sina bildresursblock — metadata-liknande poster såsom rutnät, hjälplinjer och ICC-profilpayloads — via två skrivskyddade vyer, samt en separat sammanfattning för indexerade färgpaletter.


Lista resursblock

PsdImage.image_resources returnerar en PreservedResourceBlock per resurs, med det råa resurs-ID-t, namn och byte-storlek:

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 returnerar en separat PsdResourceInfo-sammanfattning per resurs istället, och lägger till en kind-klassificering — i detta FOSS-bygge är kind alltid PsdResourceKind.UNKNOWN, eftersom detta byggets resursparser inte avkodar specifika resurs-ID:n till semantiska egenskaper.


Känna igen kända resurs-ID:n

Eftersom kind inte är semantiskt upplöst, identifiera en specifik resurs genom att jämföra block.id mot konstanterna i ImageResourceIds:

for block in image.image_resources:
    if block.id == ImageResourceIds.ICC_PROFILE:
        print(f"Found an ICC profile resource ({block.data_size} bytes)")

Läsa en indexerad färgpalett

Om dokumentets färgdata är palettbaserad, returnerar PsdImage.indexed_palette dess poster:

palette = image.indexed_palette

if palette is not None:
    print(f"Palette entries: {len(palette.entries)}")

Tips och bästa praxis

  • PsdImage.image_resourcess getter fungerar för att lista resurser, men dess setter kastar NotSupportedException — resurser är skrivskyddade i detta FOSS-bygge.
  • PsdImage.has_icc_profile, is_icc_profile_untagged och global_angle är fasta platshållarvärden i detta FOSS-bygge (alltid False, None respektive 0) oavsett det inlästa dokumentets faktiska innehåll — använd resurstillhörighets-ID-jämförelsemönstret ovan om du själv behöver upptäcka dessa resurser.
  • PreservedResourceBlock.save() kastar NotImplementedError om den anropas direkt — resurser går igenom automatiskt när du anropar image.save() på hela dokumentet.

Vanliga problem

ProblemOrsakLösning
image.indexed_palette är NoneDokumentets färgdatatyp är inte INDEXED_PALETTEEndast dokument med indexerad färg har en palett
NotSupportedException inställning image.image_resourcesSetter stöds inte i detta FOSS-buildBehandla image_resources som skrivskyddad
has_icc_profile / is_icc_profile_untagged / global_angle får aldrig ändrasDessa 3 egenskaper är hårdkodade platshållar-stubb i denna FOSS-byggnadJämför block.id mot ImageResourceIds istället (se ovan)

FAQ

Vad är skillnaden mellan image_resources och resources?

Båda listar samma underliggande resursblock, men som olika objekttyper: image_resources returnerar PreservedResourceBlock objekt (råa ID/namn/storlek, används för round-tripping), medan resources returnerar PsdResourceInfo sammanfattningar (lägger till en kind klassificering, för närvarande alltid UNKNOWN).

Kan jag modifiera eller ta bort en bildresurs?

Nej — image_resourcess setter kastar NotSupportedException, och PreservedResourceBlock.save() kastar NotImplementedError om den anropas direkt. Resurser är skrivskyddade i denna FOSS-build.


API Reference Sammanfattning

Klass/MetodBeskrivning
PsdImage.image_resourcesRåa resursblock (PreservedResourceBlock, skrivskyddade)
PsdImage.resourcesResurssammanfattningar (PsdResourceInfo, kind alltid UNKNOWN)
PsdImage.indexed_paletteSammanfattning av indexerad färgpalett, när den finns
ImageResourceIdsKända resurs-ID-konstanter för jämförelse med resource_id/id

Se även

 Svenska