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_resourcesgetter працює для переліку ресурсів, але його 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_resources | Setter не підтримується у цій збірці 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 |