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 kastarNotSupportedException— resurser är skrivskyddade i detta FOSS-bygge.PsdImage.has_icc_profile,is_icc_profile_untaggedochglobal_angleär fasta platshållarvärden i detta FOSS-bygge (alltidFalse,Nonerespektive0) 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()kastarNotImplementedErrorom den anropas direkt — resurser går igenom automatiskt när du anroparimage.save()på hela dokumentet.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
image.indexed_palette är None | Dokumentets färgdatatyp är inte INDEXED_PALETTE | Endast dokument med indexerad färg har en palett |
NotSupportedException inställning image.image_resources | Setter stöds inte i detta FOSS-build | Behandla image_resources som skrivskyddad |
has_icc_profile / is_icc_profile_untagged / global_angle får aldrig ändras | Dessa 3 egenskaper är hårdkodade platshållar-stubb i denna FOSS-byggnad | Jä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/Metod | Beskrivning |
|---|---|
PsdImage.image_resources | Råa resursblock (PreservedResourceBlock, skrivskyddade) |
PsdImage.resources | Resurssammanfattningar (PsdResourceInfo, kind alltid UNKNOWN) |
PsdImage.indexed_palette | Sammanfattning av indexerad färgpalett, när den finns |
ImageResourceIds | Kända resurs-ID-konstanter för jämförelse med resource_id/id |