Resources

Resources

Завантажений PsdImage відкриває свої блоки ресурсів зображення — записи у стилі метаданих, такі як сітки, напрямні та дані профілю ICC — через два лише для читання перегляди, а також окремий підсумок для індексованих колірних палітр.


Перелік блоків ресурсів

PsdImage.image_resources повертає PreservedResourceBlock для кожного ресурсу, із сирим ідентифікатором ресурсу, назвою та розміром у байтах:

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 повертає окремий PsdResourceInfo підсумок для кожного ресурсу, додаючи класифікацію kind — у цій FOSS збірці kind завжди PsdResourceKind.UNKNOWN, оскільки парсер ресурсів цієї збірки не декодує конкретні ідентифікатори ресурсів у семантичні властивості.


Розпізнавання відомих ідентифікаторів ресурсів

Оскільки kind не розв’язується семантично, розпізнавайте конкретний ресурс, порівнюючи block.id з константами у ImageResourceIds:

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

Читання індексованої колірної палітри

Якщо колірні дані документа базуються на палітрі, PsdImage.indexed_palette повертає її елементи:

palette = image.indexed_palette

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

Поради та найкращі практики

  • PsdImage.image_resources getter працює для переліку ресурсів, але його setter викликає NotSupportedException — ресурси лише для читання у цій FOSS збірці.
  • PsdImage.has_icc_profile, is_icc_profile_untagged та global_angle є фіксованими значеннями заповнювачів у цій FOSS збірці (завжди False, None та 0 відповідно) незалежно від фактичного вмісту завантаженого документа — використовуйте наведений вище шаблон порівняння resource-ID, якщо вам потрібно самостійно виявляти ці ресурси.
  • PreservedResourceBlock.save() викликає NotImplementedError, якщо його викликати безпосередньо — ресурси проходять круговий процес автоматично, коли ви викликаєте image.save() для всього документа.

Типові проблеми

ПроблемаПричинаВиправлення
image.indexed_palette є NoneТип колірних даних документа не є INDEXED_PALETTEЛише документи з індексованим кольором містять палітру
Налаштування NotSupportedException image.image_resourcesSetter не підтримується у цій збірці FOSSРозглядайте image_resources як лише для читання
has_icc_profile / is_icc_profile_untagged / global_angle ніколи не змінюютьсяЦі 3 властивості є жорстко закодованими заглушками-заповнювачами у цій збірці FOSSПорівнюйте block.id з ImageResourceIds замість цього (див. вище)

FAQ

У чому різниця між image_resources і resources?

Обидва перераховують ті самі базові блоки ресурсів, але як різні типи об’єктів: image_resources повертає об’єкти PreservedResourceBlock (необроблені ID/ім’я/розмір, використовуються для кругового проходу), тоді як resources повертає підсумки PsdResourceInfo (додає класифікацію kind, наразі завжди UNKNOWN).

Чи можу я змінити або видалити ресурс зображення?

Ні — встановлювач image_resources викликає NotSupportedException, а PreservedResourceBlock.save() викликає NotImplementedError, якщо його викликати безпосередньо. Ресурси лише для читання у цій FOSS збірці.


API Reference Підсумок

Клас/МетодОпис
PsdImage.image_resourcesСирі блоки ресурсів (PreservedResourceBlock, лише для читання)
PsdImage.resourcesКороткі описи ресурсів (PsdResourceInfo, kind завжди UNKNOWN)
PsdImage.indexed_paletteКороткий опис індексованої колірної палітри, коли вона присутня
ImageResourceIdsВідомі константи ідентифікаторів ресурсів для порівняння з resource_id/id

Дивіться також

 Українська