Введение
Aspose.PSD FOSS для Python — это новая библиотека с открытым исходным кодом для работы с файлами PSD и PSB (Photoshop large document) из кода Python. Она выпущена под лицензией MIT, не имеет сторонних нативных зависимостей и требует только стандартную библиотеку Python во время выполнения. Пакет импортируется как aspose_psd_foss.
Библиотека построена вокруг класса PsdImage, который расширяет абстрактный базовый класс Image, а также класса Layer. Image.load() / PsdImage.load() загружают документ из пути к файлу или потока, раскрывая информацию заголовка (width, height, color_mode, version, compression) и разобранную коллекцию layers; PsdImage.save() записывает документ обратно в файл или поток. Оба класса поддерживают оператор with для автоматической очистки. Каждый Layer раскрывает собственные метаданные — name, bounds, is_visible, opacity, clipping, blend_mode_key и информацию о каналах/масках — и подмножество этих свойств можно изменять на месте и сохранять обратно в файл.
Этот релиз предназначен для разработчиков, которым необходимо инспектировать или вносить ограниченные правки метаданных в файлы PSD/PSB внутри кодовой базы Python без коммерческой лицензии — инструменты конвейера ресурсов, которые сообщают о структуре слоёв, скрипты сборки, переименовывающие или переключающие видимость слоёв перед передачей, или тестовые фикстуры, которым нужно считывать заголовок PSD и данные слоёв без полного движка рендеринга. Библиотека не рендерит пиксельные данные и не преобразует PSD/PSB в другие форматы изображений — она является читателем/писателем, ориентированным на метаданные, для контейнерного формата PSD/PSB.
Что входит
Проверка документа
PsdImage.load() разбирает заголовок файла PSD или PSB в типизированные свойства — width, height, bits_per_channel, color_mode, version, compression, size и is_flatten — без декодирования пиксельных данных.
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
print(f"Width: {image.width}, Height: {image.height}")
print(f"ColorMode: {image.color_mode}, Version: {image.version}")
print(f"Layers: {image.layer_count}, Compression: {image.compression}")
Метаданные слоя
Каждая запись в PsdImage.layers является Layer, раскрывающей свои границы, видимость, непрозрачность, обрезку и метаданные режима наложения.
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
for layer in image.layers:
print(f"{layer.name}: {layer.bounds}, Visible={layer.is_visible}, Opacity={layer.opacity}")
Поддерживаемые правки метаданных
Подмножество свойств слоя можно изменить на месте и записать обратно с помощью PsdImage.save(): имя, видимость, непрозрачность, обрезка, ключ режима наложения и четыре границы.
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode
with PsdImage.load("input.psd") as image:
layer = image.layers[0]
layer.name = f"{layer.name} (edited)"
layer.is_visible = not layer.is_visible
layer.opacity = 128
layer.blend_mode_key = BlendMode.MULTIPLY
image.save("output.psd")
Быстрый старт
Установите пакет, затем загрузите файл PSD или PSB, проверьте его слои и сохраните его обратно:
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:$PYTHONPATHfrom aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
print(f"Width: {image.width}, Height: {image.height}, Layers: {image.layer_count}")
for layer in image.layers:
print(f" {layer.name}: {layer.bounds}")
image.save("output.psd")
Поддерживаемые форматы
| Формат | Расширение | Чтение | Запись |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Открытый исходный код и лицензирование
Aspose.PSD FOSS для Python лицензирована под MIT и может использоваться в коммерческих продуктах без роялти, без водяного знака оценки и без ограничения использования.
Библиотека не имеет сторонних нативных зависимостей — в режиме выполнения требуется только стандартная библиотека Python.