Ядро 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 | Оброблені блоки ресурсів зображень (тільки для читання) |