Як працювати з Aspose.PSD FOSS Core API у Python

Як працювати з Aspose.PSD FOSS Core API у Python

Aspose.PSD FOSS для Python завантажує та перевіряє структуру документа PSD/PSB через PsdImage, підклас Image. У цій статті розглядаються завантаження документа, читання його заголовка та ресурсів зображень, а також збереження його назад на диск.

Покроковий посібник

Крок 1: Встановіть пакет

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATH

Крок 2: Імпортуйте потрібні класи

PsdImage — це точка входу, що використовується протягом усього посібника:

from aspose_psd_foss.psdimage import PsdImage

Крок 3: Завантажити документ PSD/PSB

PsdImage.load() відкриває документ за шляхом до файлу або потоку:

from aspose_psd_foss.psdimage import PsdImage

image = PsdImage.load("input.psd")

Крок 4: Переглянути заголовок документа

PsdImage надає поля заголовка, прочитані з розпарсеного документа: width, height, bits_per_channel, color_mode (значення ColorModes), і compression (значення CompressionMethod):

print(f"{image.width}x{image.height}, {image.bits_per_channel} bpc")
print(f"Color mode: {image.color_mode}")    # e.g. ColorModes.RGB
print(f"Compression: {image.compression}")  # e.g. CompressionMethod.RLE
print(f"Flattened: {image.is_flatten}")

Значення ColorModes — це BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE та LAB. Значення CompressionMethod — це RAW, RLE, ZIP_WITHOUT_PREDICTION та ZIP_WITH_PREDICTION.


Крок 5: Прочитати блоки ресурсів зображень

image_resources повертає розпарсені записи ResourceBlock документа. Кожен блок надає id, name та size:

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

image_resources є лише для читання у цій FOSS збірці — спроба присвоїти їй значення викликає NotSupportedException (див. Known Limitations у FAQ).


Крок 6: Зберегти документ

Запишіть документ назад на диск, потім звільніть ресурси зображення:

image.save("output.psd")
image.dispose()

Поширені проблеми та виправлення

PsdLoadException при завантаженні файлу. Вхід не є дійсним документом PSD/PSB або його заголовок не пройшов валідацію. Переконайтеся, що файл є справжнім файлом PSD/PSB перед завантаженням.

NotSupportedException при встановленні image_resources or global_layer_resources. Ці сеттери не підтримуються у цій FOSS збірці. Розглядайте image_resources як лише для читання.

Часті запитання

Чи можу я завантажити файл PSD зі стріму замість шляху до файлу?

Так — PsdImage.load() приймає або рядок шляху до файлу, або читаємий потік (io.BytesIO/io.BufferedIOBase).

Чи включає image_resources дані шарів?

Ні. image_resources містить блоки ресурсів рівня документа (розпарсені з розділу ресурсів зображення PSD). Дані рівня шарів читаються через PsdImage.layers — див Робота з шарами.

Чи є PsdImage.version версією формату файлу PSD?

Ні. PsdImage.version повідомляє внутрішній Aspose.PSD-сумісний номер версії API (на даний момент 6) — це не пов’язано з тим, чи завантажений файл є PSD або PSB. Його сеттер приймає лише значення 6; будь-яке інше значення викликає ValueError.

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

 Українська