Устранение неполадок Aspose.PSD FOSS for Python

Устранение неполадок Aspose.PSD FOSS for Python

Устранение неполадок Aspose.PSD FOSS для Python

На этой странице рассматриваются наиболее распространённые проблемы, возникающие при загрузке, проверке и сохранении документов PSD/PSB с помощью Aspose.PSD FOSS для Python.


Проблемы при загрузке

PsdLoadException с сообщением об неподдерживаемой версии

Объявленное в файле поле версии PSD не соответствует ни стандартному PSD, ни значению для больших документов PSB. Убедитесь, что файл является подлинным, неповреждённым документом PSD/PSB перед загрузкой:

try:
    image = PsdImage.load("input.psd")
except PsdLoadException as ex:
    print(f"Not a valid PSD/PSB file: {ex}")

PsdLoadException о том, что длина секции превышает границу

Внутренние поля длины файла не соответствуют его реальному размеру — обычно это означает, что файл усечён или повреждён, а не то, что он использует неподдерживаемую, но в остальном корректную структуру. Экспортируйте файл заново из исходного приложения и повторите попытку.


Проблемы при сохранении

PsdSaveException о длине Pascal-строки

Значение строки — обычно имя слоя или ресурса — превышает 255 байт, максимальное количество, которое может закодировать поле Pascal-строки в PSD:

layer.name = layer.name[:255] if len(layer.name) > 255 else layer.name
image.save("output.psd")

Проблемы при редактировании

NotSupportedException при установке свойства

Некоторые свойства доступны только для чтения в этой сборке FOSS. На PsdImage: active_layer, image_resources, global_layer_resources, has_transparency_data. На Layer: channel_information, layer_mask_data, layer_blending_ranges_data. Считайте их только для получения — не присваивайте им значения.

Непрозрачность слоя выглядит неправильно после её установки

Layer.opacity обычно представляет значение от 0 до 255, а не дробь 0.0-1.0 или процент:

layer.opacity = 200  # approximately 78% opaque, not 200%

Удаление слоя не вступает в силу

PsdImage.layers имеет работающий сеттер на уровне коллекции, но отдельные элементы списка нельзя просто удалить на месте — переприсвоить весь отфильтрованный список:

image.layers = [l for l in image.layers if l.name != "Unwanted Layer"]

Проблемы с установкой

Пакет не найден

Подтвердите точную идентификацию пакета:

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

Диагностический чек-лист

Прежде чем открывать запрос в поддержку, пройдите этот чек-лист:

  1. Подтвердите, что файл действительно PSD/PSB — a PsdLoadException о неподдерживаемой версии обычно означает, что файл не является настоящим документом PSD/PSB.
  2. Проверьте NotSupportedException — возможно, вы устанавливаете одно из 7 свойств только для чтения, перечисленных выше, вместо того чтобы читать его.
  3. Verify opacity находится в диапазоне 0-255, а не 0.0-1.0 или 0-100.
  4. Сохраняйте строковые значения менее 255 байт перед сохранением, чтобы избежать PsdSaveException.
  5. Call image.save после каждого редактирования — изменения в Layer экземпляры не сохраняются до тех пор, пока документ не будет сохранён.

См. также:

 Русский