Ядро API

Основне API

PsdImage є точкою входу для завантаження, інспектування та збереження документів PSD/PSB. Він розширює абстрактний базовий клас Image, який оголошує лише load() — решта поверхні документа (width, height, save(), підтримка context-manager) визначена безпосередньо в PsdImage, а не успадкована.


Завантаження та збереження документів

Image.load() приймає шлях до файлу або потік і повертає Image; для вхідних даних PSD/PSB це завжди PsdImage, тому поверхня документа доступна одразу без явного приведення типу. PsdImage також підтримує оператор with для автоматичного очищення, а PsdImage.save() записує документ назад у шлях до файлу або потік.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load(input_path) as image:
    # ... inspect or edit ...
    image.save(output_path)

Властивості заголовка документа

PsdImage надає розпарсений заголовок як типізовані властивості: width, height, bits_per_channel, color_mode, version, compression, size та is_flatten.

print(f"Width: {image.width}, Height: {image.height}")
print(f"ColorMode: {image.color_mode}, Version: {image.version}")
print(f"Compression: {image.compression}, IsFlatten: {image.is_flatten}")

Ресурси зображень

PsdImage.image_resources повертає розпарсений список об’єктів ResourceBlock. У цьому FOSS збірці image_resources, global_layer_resources, active_layer та has_transparency_data можна читати, але не переназначати — їх сеттери викликають NotSupportedException.

for resource in image.image_resources:
    print(f"Resource {resource.id}: {resource.name} ({resource.data_size} bytes)")

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

  • Image.load() вже повертає PsdImage для PSD/PSB введення — не потрібне приведення типу, на відміну від деяких інших мовних портів цієї бібліотеки.
  • Використовуйте оператор with; PsdImage підтримує протокол менеджера контексту для очищення.
  • Розглядайте image_resources, global_layer_resources, active_layer і has_transparency_data як лише для читання, навіть якщо вони мають setter.
  • Перевірте image.layer_count перед індексуванням image.layers — сплощений документ може мати нуль шарів.

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

ПроблемаПричинаВиправлення
NotSupportedException при встановленні image_resourcesЦя властивість лише для читання у FOSS-збірці, незважаючи на наявність сеттераПрочитайте значення; не намагайтеся його перепризначити
Порожній список image.layers у сплощеному документіis_flatten є True, і документ не має проаналізованих шарівПеревірте image.layer_count (або image.is_flatten) перед індексуванням у image.layers

FAQ

Чи розкодує завантаження PSD-документа піксельні дані?

Ні. PsdImage.load() аналізує заголовок документа, метадані шарів і ресурси без декодування чи рендерингу піксельних даних.

Чи можу я конвертувати файл PSD в інший формат зображення?

Ні. Ця бібліотека завантажує, аналізує та зберігає лише документи PSD/PSB — вона не виконує рендеринг піксельних даних і не конвертує їх в інші формати зображень.


API Reference Підсумок

Клас/МетодОпис
Image.load(path) / Image.load(stream)Завантажує документ PSD або PSB
PsdImage.save(path) / PsdImage.save(stream)Зберігає документ
PsdImage.width / height / bits_per_channel / color_mode / version / compression / size / is_flattenВластивості заголовка документа
PsdImage.image_resourcesОброблені блоки ресурсів зображень (тільки для читання)

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

 Українська