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