Resources
Resources
Ein geladenes PsdImage stellt seine Bild-Ressourcenblöcke — metadatenartige Einträge wie Raster, Hilfslinien und ICC-Profil-Payloads — über zwei schreibgeschützte Ansichten bereit, plus eine separate Zusammenfassung für indizierte Farbpaletten.
Auflisten von Ressourcenblöcken
PsdImage.image_resources gibt pro Ressource ein PreservedResourceBlock zurück, mit der rohen Ressourcen-ID, dem Namen und der Byte-Größe:
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 gibt stattdessen eine separate PsdResourceInfo-Zusammenfassung pro Ressource zurück und fügt eine kind-Klassifizierung hinzu — in diesem FOSS-Build ist kind immer PsdResourceKind.UNKNOWN, da der Ressourcenparser dieses Builds spezifische Ressourcen-IDs nicht in semantische Eigenschaften dekodiert.
Erkennen bekannter Ressourcen-IDs
Da kind nicht semantisch aufgelöst ist, erkenne eine bestimmte Ressource, indem du block.id mit den Konstanten in ImageResourceIds vergleichst:
for block in image.image_resources:
if block.id == ImageResourceIds.ICC_PROFILE:
print(f"Found an ICC profile resource ({block.data_size} bytes)")Lesen einer indizierten Farbpalette
Wenn die Farbdaten des Dokuments palettenbasiert sind, gibt PsdImage.indexed_palette seine Einträge zurück:
palette = image.indexed_palette
if palette is not None:
print(f"Palette entries: {len(palette.entries)}")Tipps und bewährte Verfahren
PsdImage.image_resources’ Getter funktioniert zum Auflisten von Ressourcen, aber sein Setter löstNotSupportedExceptionaus — Ressourcen sind in diesem FOSS-Build schreibgeschützt.PsdImage.has_icc_profile,is_icc_profile_untaggedundglobal_anglesind feste Platzhalterwerte in diesem FOSS-Build (immerFalse,Nonebzw.0), unabhängig vom tatsächlichen Inhalt des geladenen Dokuments — verwenden Sie das oben genannte Ressourcen-ID-Vergleichsmuster, wenn Sie diese Ressourcen selbst erkennen müssen.PreservedResourceBlock.save()löstNotImplementedErroraus, wenn es direkt aufgerufen wird — Ressourcen durchlaufen den Round-Trip automatisch, wenn Sieimage.save()für das gesamte Dokument aufrufen.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
image.indexed_palette ist None | Der Farbdatentyp des Dokuments ist nicht INDEXED_PALETTE | Nur indizierte Farbdokumente besitzen eine Palette |
Einstellung NotSupportedException image.image_resources | Der Setter wird in diesem FOSS-Build nicht unterstützt | Behandle image_resources als schreibgeschützt |
has_icc_profile / is_icc_profile_untagged / global_angle niemals ändern | Diese 3 Eigenschaften sind hartkodierte Platzhalter-Stubs in diesem FOSS-Build | Vergleiche stattdessen block.id mit ImageResourceIds (siehe oben) |
FAQ
Was ist der Unterschied zwischen image_resources und resources?
Beide listen dieselben zugrunde liegenden Ressourcenblöcke auf, jedoch als unterschiedliche Objekttypen: image_resources gibt PreservedResourceBlock-Objekte zurück (rohe ID/Name/Größe, für Round-Trip-Verarbeitung verwendet), während resources PsdResourceInfo-Zusammenfassungen zurückgibt (fügt eine kind-Klassifizierung hinzu, derzeit immer UNKNOWN).
Kann ich eine Bildressource ändern oder entfernen?
Nein — image_resourcess Setter wirft NotSupportedException, und PreservedResourceBlock.save() wirft NotImplementedError, wenn er direkt aufgerufen wird. Ressourcen sind in diesem FOSS-Build schreibgeschützt.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
PsdImage.image_resources | Rohressourcenblöcke (PreservedResourceBlock, schreibgeschützt) |
PsdImage.resources | Ressourcen-Zusammenfassungen (PsdResourceInfo, kind immer UNKNOWN) |
PsdImage.indexed_palette | Zusammenfassung der indizierten Farbpalette, falls vorhanden |
ImageResourceIds | Bekannte Ressourcen-ID-Konstanten zum Vergleich mit resource_id/id |