Як працювати з Aspose.PSD FOSS Core API у .NET

Як працювати з Aspose.PSD FOSS Core API у .NET

Aspose.PSD FOSS для .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-з-прогнозом.


Крок 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 (див. Відомі обмеження у FAQ).


Крок 6: Зберегти документ

image.Save("output.psd");

Поширені проблеми та виправлення

PsdLoadException при завантаженні файлу. Вхід не є дійсним документом PSD/PSB, або його заголовок не пройшов валідацію. Переконайтеся, що файл є справжнім файлом PSD/PSB перед завантаженням.

NotSupportedException при встановленні ImageResources or GlobalLayerResources. Ці сеттери не підтримуються у цьому FOSS збірці. Розглядайте ImageResources як лише для читання.

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

Часто задавані питання

Чи можна завантажити файл PSD з потоку замість шляху до файлу?

Так — PsdImage.Load має перегрузку, яка приймає Stream.

Чи включає ImageResources дані шарів?

Ні. ImageResources містить блоки ресурсів рівня документа (розпарсені з розділу ресурсів зображень PSD). Дані рівня шарів читаються через PsdImage.Layers — дивіться Робота з шарами.

Чи є PsdImage.Version версією формату файлу PSD?

Ні. PsdImage.Version повідомляє внутрішній номер версії API, сумісний з Aspose.PSD (на даний момент 6) — це не має відношення до того, чи завантажений файл є PSD або PSB.

Дивіться також

 Українська