Вступ
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 buildusing 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}");
}
Підтримувані формати
| Формат | Розширення | Читати | Запис |
|---|---|---|---|
| Документ Photoshop | psd | ✓ | ✓ |
| Великий документ Photoshop | psb | ✓ | ✓ |
Відкритий код та ліцензування
Aspose.PSD FOSS для .NET має ліцензію MIT і може використовуватися у комерційних продуктах без роялті, без водяного знака оцінки чи обмеження використання.
Пакет має версію 1.0.0 і вимагає лише .NET 10.0 під час виконання — інших сторонніх залежностей немає.