Как работать с 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.