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_resources getter 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_untagged a global_angle jsou ve tomto FOSS buildu pevné hodnoty zástupných znaků (vždy False, None a 0 respektive), 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áte image.save() na celý dokument.

Časté problémy

ProblémPříčinaOprava
image.indexed_palette je NoneTyp barevných dat dokumentu není INDEXED_PALETTEPouze dokumenty s indexovanými barvami obsahují paletu
NotSupportedException nastavení image.image_resourcesNastavovač není v tomto FOSS buildu podporovánPovaž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 stubyPorovnejte 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/metodaPopis:
PsdImage.image_resourcesSurové bloky zdrojů (PreservedResourceBlock, jen pro čtení)
PsdImage.resourcesSouhrny zdrojů (PsdResourceInfo, kind jsou vždy UNKNOWN)
PsdImage.indexed_paletteSouhrn indexované barevné palety, pokud je přítomna
ImageResourceIdsZnámé konstanty ID zdrojů pro porovnání s resource_id/id

Viz také:

 Čeština