Ядро API

Основной API

PsdImage — это точка входа для загрузки, инспекции и сохранения документов PSD/PSB. Он расширяет абстрактный базовый класс Image, который объявляет только load() — остальная часть поверхности документа (width, height, save(), поддержка менеджера контекста) определяется непосредственно в 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 только для чтения, даже если они предоставляют сеттер.
  • Проверьте 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Разобранные блоки ресурсов изображения (только для чтения)

См. также:

 Русский