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öst NotSupportedException aus — Ressourcen sind in diesem FOSS-Build schreibgeschützt.
  • PsdImage.has_icc_profile, is_icc_profile_untagged und global_angle sind feste Platzhalterwerte in diesem FOSS-Build (immer False, None bzw. 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öst NotImplementedError aus, wenn es direkt aufgerufen wird — Ressourcen durchlaufen den Round-Trip automatisch, wenn Sie image.save() für das gesamte Dokument aufrufen.

Häufige Probleme

ProblemUrsacheLösung
image.indexed_palette ist NoneDer Farbdatentyp des Dokuments ist nicht INDEXED_PALETTENur indizierte Farbdokumente besitzen eine Palette
Einstellung NotSupportedException image.image_resourcesDer Setter wird in diesem FOSS-Build nicht unterstütztBehandle image_resources als schreibgeschützt
has_icc_profile / is_icc_profile_untagged / global_angle niemals ändernDiese 3 Eigenschaften sind hartkodierte Platzhalter-Stubs in diesem FOSS-BuildVergleiche 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/MethodeBeschreibung
PsdImage.image_resourcesRohressourcenblöcke (PreservedResourceBlock, schreibgeschützt)
PsdImage.resourcesRessourcen-Zusammenfassungen (PsdResourceInfo, kind immer UNKNOWN)
PsdImage.indexed_paletteZusammenfassung der indizierten Farbpalette, falls vorhanden
ImageResourceIdsBekannte Ressourcen-ID-Konstanten zum Vergleich mit resource_id/id

Siehe auch

 Deutsch