Вступ

Aspose.PSD FOSS для .NET завантажує, інспектує та зберігає PSD і PSB документи за допомогою невеликого набору класів. У цій статті розглядаються частини ядра API, які у вступному дописі не були докладно охоплені: успадкування Image/PsdImage, типи значень геометрії, що використовуються по всій бібліотеці, та те, як бібліотека повідомляє про помилки завантаження та збереження.


Що включено

Зображення та PsdImage

Image — це абстрактний базовий клас, який надає Width, Height, Bounds, Load(), Save() та Dispose(). PsdImage — це запечатана конкретна реалізація, яку повертає Image.Load() для вхідних даних PSD/PSB — приведення результату до PsdImage відкриває решту поверхні документа: ColorMode, Version, Layers, Compression, BitsPerChannel та інше.

using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}");       // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}");  // PsdImage-specific

Типи значень геометрії

Point, Size, Rectangle та RectangleF — це типи значень, які використовуються для меж та координат у всьому API — Layer.Bounds і Image.Bounds є обидва Rectangle, а PsdImage.Size — це Size. Rectangle містить реальні геометричні методи: Contains(), Intersect(), Union(), Inflate() та FromLeftTopRightBottom(), серед інших.

Rectangle layerBounds = image.Layers[0].Bounds;
Rectangle imageBounds = image.Bounds;

bool fullyInside = imageBounds.Contains(layerBounds);
Rectangle overlap = Rectangle.Intersect(imageBounds, layerBounds);
Console.WriteLine($"Layer fits inside image: {fullyInside}, overlap: {overlap}");

Блоки ресурсів та виключення

PsdImage.ImageResources повертає розпарсений масив ResourceBlock[] — кожен блок надає ID, DataSize, Name та Signature. У цій FOSS збірці ImageResources, GlobalLayerResources, ActiveLayer та HasTransparencyData можна лише читати, а не переназначати — у кожного є сеттер, який викидає NotSupportedException, якщо його викликати, тому розглядайте їх як лише для читання, хоча вони виглядають як властивості.

Помилки завантаження та збереження відображаються у вигляді двох спеціалізованих типів виключень: PsdLoadException, коли документ не вдається розпарсити, та PsdSaveException, коли документ не вдається записати назад.

try
{
    using var image = (PsdImage)Image.Load(inputPath);
    foreach (ResourceBlock resource in image.ImageResources)
    {
        Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
    }
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}

Швидкий старт

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

try
{
    using var image = (PsdImage)Image.Load("input.psd");
    Console.WriteLine($"Bounds: {image.Bounds}, ColorMode: {image.ColorMode}");
    Console.WriteLine($"ImageResources: {image.ImageResources.Length}");
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Load failed: {ex.Message}");
}

Підтримувані формати

ФорматРозширенняЧитатиЗапис
Документ Photoshoppsd✓✓
Великий документ Photoshoppsb✓✓

Відкритий код та ліцензування

Aspose.PSD FOSS для .NET має ліцензію MIT і може використовуватися у комерційних продуктах без роялті, без водяного знака оцінки чи обмеження використання.

Пакет має версію 1.0.0 і вимагає лише .NET 10.0 під час виконання — інших сторонніх залежностей немає.


Початок роботи

Пов’язані ресурси