Записать дескрипторы
Записать дескрипторы
PsdImage.save является единственной публичной точкой входа для записи документа обратно — он принимает либо путь к файлу, либо уже открытый записывающий поток. Низкоуровневый записыватель секций, который выполняет фактическое кодирование байтов, является внутренней деталью реализации и не вызывается напрямую.
Сохранение в путь к файлу или поток
from aspose_psd_foss.psdimage import PsdImage
image = PsdImage.load(input_path)
image.save("output.psd")Передача потока вместо пути оставляет поток открытым после операции — вы контролируете, когда его закрыть:
with open("output.psd", "wb") as stream:
image.save(stream)Выбор формата контейнера
Нет публичного API для выбора формата выходного контейнера при сохранении — сохранение всегда повторяет тот формат (is_large_document / is_psb), с которым документ был загружен. В этой FOSS-сборке нет поддерживаемого пути конвертации между PSD и PSB.
Советы и лучшие практики
- Вызовите
saveперед удалением изображения —saveна удалённомPsdImageвызываетRuntimeError. - Внутренний писатель уровня раздела, вызываемый
save, не является документированной или поддерживаемой точкой входа сам по себе; всегда используйтеPsdImage.save.
Распространённые проблемы
| Проблема | Причина | Исправление |
|---|---|---|
RuntimeError: PsdImage has been disposed. | save был вызван после dispose() (или после выхода из блока with) | Вызовите save перед освобождением изображения |
PsdSaveException о длине строки Pascal | Значение строки превышает 255 байт | См. Core исключения |
FAQ
Закрывает ли сохранение в поток сам поток после завершения?
Нет — передача потока в save оставляет его открытым после вызова, поэтому вы контролируете его жизненный цикл. Сохранение по пути к файлу, напротив, открывает и закрывает файл внутри.
Можно ли создать файл PSB из документа, загруженного как PSD?
Нет — нет публичного API, позволяющего переопределить формат контейнера при сохранении; он всегда отражает формат загруженного документа.
API Reference Сводка
| Класс/Метод | Описание: |
|---|---|
PsdImage.save(file_path) / PsdImage.save(stream) | Сохраняет документ |