Как работать с Aspose.PSD FOSS Core API в .NET

Как работать с Aspose.PSD FOSS Core API в .NET

Aspose.PSD FOSS for .NET загружает и проверяет структуру документа PSD/PSB через PsdImage, подкласс Image. Эта статья охватывает загрузку документа, чтение его заголовка и ресурсов изображений, а также сохранение его обратно на диск.

Пошаговое руководство

Шаг 1: Установите пакет

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

Шаг 2: Импортируйте необходимые классы

using Aspose.PSD.FileFormats.Psd;

Шаг 3: Загрузите документ PSD/PSB

PsdImage.Load открывает документ из пути к файлу или потока:

using var image = PsdImage.Load("input.psd");

Шаг 4: Проверьте заголовок документа

PsdImage предоставляет поля заголовка, считанные из разобранного документа: Width, Height, BitsPerChannel, ColorMode (значение ColorModes), и Compression (значение CompressionMethod):

Console.WriteLine($"{image.Width}x{image.Height}, {image.BitsPerChannel} bpc");
Console.WriteLine($"Color mode: {image.ColorMode}");   // e.g. ColorModes.Rgb
Console.WriteLine($"Compression: {image.Compression}"); // e.g. CompressionMethod.RLE
Console.WriteLine($"Flattened: {image.IsFlatten}");

ColorModes значения включают Bitmap, Grayscale, Indexed, Rgb и Cmyk, среди прочих (Multichannel, Duotone, Lab). Значения CompressionMethod — это Raw, RLE, ZipWithoutPrediction и вариант ZIP-with-prediction.


Шаг 5: Чтение блоков ресурсов изображений

ImageResources возвращает разобранные записи ResourceBlock документа. Каждый блок предоставляет ID, Name и Size:

foreach (var resource in image.ImageResources)
{
    Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}

ImageResources является только для чтения в этой FOSS-сборке — попытка присвоить значение вызывает ошибку NotSupportedException (см. Known Limitations в FAQ).


Шаг 6: Сохранить документ

image.Save("output.psd");

Распространённые проблемы и решения

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

NotSupportedException при установке ImageResources or GlobalLayerResources. Эти сеттеры не поддерживаются в этой FOSS-сборке. Рассматривайте ImageResources как только для чтения.

ColorMode or Compression выводится как числовое значение вместо имени. Приведите свойство к типу его перечисления явно, или используйте .ToString(), чтобы получить читаемое имя (ColorModes.Rgb, а не 3).

Часто задаваемые вопросы

Можно ли загрузить файл PSD из потока вместо пути к файлу?

Да — у PsdImage.Load есть перегрузка, принимающая Stream.

Включает ли ImageResources данные слоёв?

Нет. ImageResources содержит блоки ресурсов уровня документа (разобранные из секции ресурсов изображений PSD). Данные уровня слоёв читаются через PsdImage.Layers — см. Работа со слоями.

Является ли PsdImage.Version версией формата файла PSD?

Нет. PsdImage.Version сообщает внутренний номер версии API, совместимый с Aspose.PSD (в настоящее время 6) — это не связано с тем, является ли загруженный файл PSD или PSB.

См. также:

 Русский