Як працювати з 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.