Введение

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:$PYTHONPATH
from 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")

Поддерживаемые форматы

ФорматРасширениеЧтениеЗапись
PSDpsd✓✓
PSBpsb✓✓

Открытый исходный код и лицензирование

Aspose.PSD FOSS для Python лицензирована под MIT и может использоваться в коммерческих продуктах без роялти, без водяного знака оценки и без ограничения использования.

Библиотека не имеет сторонних нативных зависимостей — в режиме выполнения требуется только стандартная библиотека Python.


Начало работы

Связанные ресурсы