Resources

Resources

Załadowany PsdImage udostępnia swoje bloki zasobów obrazu — wpisy w stylu metadanych, takie jak siatki, prowadnice i ładunki profilu ICC — za pośrednictwem dwóch widoków tylko do odczytu, a także oddzielne podsumowanie dla indeksowanych palet kolorów.


Wymienianie bloków zasobów

PsdImage.image_resources zwraca PreservedResourceBlock dla każdego zasobu, zawierający surowy identyfikator zasobu, nazwę i rozmiar w bajtach:

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 zwraca oddzielne podsumowanie PsdResourceInfo dla każdego zasobu, dodając klasyfikację kind — w tej wersji FOSS kind jest zawsze PsdResourceKind.UNKNOWN, ponieważ parser zasobów w tej kompilacji nie dekoduje konkretnych identyfikatorów zasobów na właściwości semantyczne.


Rozpoznawanie znanych identyfikatorów zasobów

Ponieważ kind nie jest rozwiązywany semantycznie, rozpoznaj konkretny zasób, porównując block.id z stałymi w ImageResourceIds:

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

Odczytywanie indeksowanej palety kolorów

Jeśli dane kolorów dokumentu są oparte na palecie, PsdImage.indexed_palette zwraca jej wpisy:

palette = image.indexed_palette

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

Wskazówki i najlepsze praktyki

  • getter PsdImage.image_resources działa do listowania zasobów, ale jego setter podnosi NotSupportedException — zasoby są tylko do odczytu w tej wersji FOSS.
  • PsdImage.has_icc_profile, is_icc_profile_untagged i global_angle są stałymi wartościami zastępczymi w tej wersji FOSS (zawsze odpowiednio False, None i 0), niezależnie od rzeczywistej zawartości wczytanego dokumentu — użyj powyższego wzorca porównania resource-ID, jeśli musisz samodzielnie wykryć te zasoby.
  • PreservedResourceBlock.save() podnosi NotImplementedError, jeśli wywołany jest bezpośrednio — zasoby są automatycznie przekazywane w obie strony, gdy wywołasz image.save() na całym dokumencie.

Typowe problemy

ProblemPrzyczynaNaprawa
image.indexed_palette jest NoneRodzaj danych koloru dokumentu nie jest INDEXED_PALETTETylko dokumenty z indeksowanymi kolorami posiadają paletę
NotSupportedException ustawienie image.image_resourcesSetter nie jest obsługiwany w tej wersji FOSSTraktuj image_resources jako tylko do odczytu
has_icc_profile / is_icc_profile_untagged / global_angle nigdy nie zmieniajTe 3 właściwości są twardo zakodowanymi placeholderami w tej wersji FOSSPorównaj block.id z ImageResourceIds zamiast tego (zobacz powyżej)

FAQ

Jaka jest różnica między image_resources a resources?

Oba wymieniają te same podstawowe bloki zasobów, ale jako różne typy obiektów: image_resources zwraca obiekty PreservedResourceBlock (surowe ID/nazwę/rozmiar, używane do round-tripping), podczas gdy resources zwraca podsumowania PsdResourceInfo (dodaje klasyfikację kind, obecnie zawsze UNKNOWN).

Czy mogę zmodyfikować lub usunąć zasób obrazu?

Nie — setter image_resources rzuca NotSupportedException, a PreservedResourceBlock.save() rzuca NotImplementedError, jeśli wywołany bezpośrednio. Zasoby są tylko do odczytu w tej wersji FOSS.


Podsumowanie API Reference

Klasa/MetodaOpis
PsdImage.image_resourcesSurowe bloki zasobów (PreservedResourceBlock, tylko do odczytu)
PsdImage.resourcesPodsumowania zasobów (PsdResourceInfo, kind zawsze UNKNOWN)
PsdImage.indexed_palettePodsumowanie indeksowanej palety kolorów, gdy jest dostępne
ImageResourceIdsZnane stałe identyfikatorów zasobów do porównania z resource_id/id

Zobacz także

 Polski