Resources
Resources
Načtený PsdImage zpřístupňuje své bloky zdrojů obrazu — položky ve stylu metadat, jako jsou mřížky, vodítka a náklady ICC profilů — prostřednictvím dvou pouze pro čtení zobrazení, plus samostatný souhrn pro indexované barevné palety.
Výpis bloků zdrojů
PsdImage.image_resources vrací PreservedResourceBlock pro každý zdroj, s neupraveným ID zdroje, názvem a velikostí v bajtech:
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 místo toho vrací samostatný PsdResourceInfo souhrn pro každý zdroj, přidávající klasifikaci kind — v tomto FOSS sestavení je kind vždy PsdResourceKind.UNKNOWN, protože parser zdrojů v tomto sestavení nedekóduje konkrétní ID zdrojů do sémantických vlastností.
Rozpoznání známých ID zdrojů
Protože kind není sémanticky rozpoznán, rozpoznávejte konkrétní zdroj porovnáním block.id s konstantami v ImageResourceIds:
for block in image.image_resources:
if block.id == ImageResourceIds.ICC_PROFILE:
print(f"Found an ICC profile resource ({block.data_size} bytes)")Čtení indexované barevné palety
Pokud jsou barevná data dokumentu založena na paletě, PsdImage.indexed_palette vrací její položky:
palette = image.indexed_palette
if palette is not None:
print(f"Palette entries: {len(palette.entries)}")Tipy a osvědčené postupy
PsdImage.image_resourcesgetter funguje pro výpis zdrojů, ale jeho setter vyvoláNotSupportedException— zdroje jsou v tomto FOSS buildu pouze pro čtení.PsdImage.has_icc_profile,is_icc_profile_untaggedaglobal_anglejsou ve tomto FOSS buildu pevné hodnoty zástupných znaků (vždyFalse,Nonea0respektive), bez ohledu na skutečný obsah načteného dokumentu — použijte výše uvedený vzor porovnání resource-ID, pokud potřebujete tyto zdroje detekovat sami.PreservedResourceBlock.save()vyvoláNotImplementedError, pokud je voláno přímo — zdroje projdou automaticky (round-trip), když zavoláteimage.save()na celý dokument.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
image.indexed_palette je None | Typ barevných dat dokumentu není INDEXED_PALETTE | Pouze dokumenty s indexovanými barvami obsahují paletu |
NotSupportedException nastavení image.image_resources | Nastavovač není v tomto FOSS buildu podporován | Považujte image_resources za pouze pro čtení |
has_icc_profile / is_icc_profile_untagged / global_angle se nikdy nemění | Tyto 3 vlastnosti jsou v tomto FOSS buildu hardcodované placeholder stuby | Porovnejte block.id s ImageResourceIds místo toho (viz výše) |
FAQ
Jaký je rozdíl mezi image_resources a resources?
Oba vypisují stejné podkladové bloky zdrojů, ale jako různé typy objektů: image_resources vrací objekty PreservedResourceBlock (surové ID/název/velikost, používané pro round-tripping), zatímco resources vrací souhrny PsdResourceInfo (přidává klasifikaci kind, která je v současnosti vždy UNKNOWN).
Mohu upravit nebo odstranit zdroj obrázku?
Ne — setter image_resources vyvolá NotSupportedException a PreservedResourceBlock.save() vyvolá NotImplementedError, pokud je volán přímo. Zdroje jsou v tomto FOSS buildu pouze pro čtení.
API Reference Shrnutí
| Třída/metoda | Popis: |
|---|---|
PsdImage.image_resources | Surové bloky zdrojů (PreservedResourceBlock, jen pro čtení) |
PsdImage.resources | Souhrny zdrojů (PsdResourceInfo, kind jsou vždy UNKNOWN) |
PsdImage.indexed_palette | Souhrn indexované barevné palety, pokud je přítomna |
ImageResourceIds | Známé konstanty ID zdrojů pro porovnání s resource_id/id |