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

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

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

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


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

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

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

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Not a valid PSD/PSB file: {ex.Message}");
}

PsdLoadException о длине секции, превышающей границу

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


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

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

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

layer.Name = layer.Name.Length > 255 ? layer.Name[..255] : layer.Name;
image.Save("output.psd");

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

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

Некоторые свойства являются только для чтения в этой сборке FOSS. На PsdImage: ActiveLayer, ImageResources, GlobalLayerResources, HasTransparencyData. На Layer: ChannelInformation, LayerMaskData, LayerBlendingRangesData. Рассматривайте их как только для чтения — не присваивайте им значения.

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

Layer.Opacity — это byte в диапазоне 0-255, а не дробь 0.0-1.0 или процент:

layer.Opacity = 200; // approximately 78% opaque, not 200%

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

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

image.Layers = image.Layers.Where(l => l.Name != "Unwanted Layer").ToArray();

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

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

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

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build

Контрольный список диагностики

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

  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 экземпляр не сохраняется, пока документ не будет сохранён.

См. также:

 Русский