Introducere
Aspose.PSD FOSS pentru .NET încarcă, inspectează și salvează documente PSD și PSB printr-un mic set de clase. Acest articol analizează părți ale nucleului API pe care articolul introductiv nu le-a acoperit în profunzime: relația de moștenire Image/PsdImage, tipurile de valori geometrice utilizate în întreaga bibliotecă și modul în care biblioteca raportează erorile de încărcare și salvare.
Ce este inclus
Imagine și PsdImage
Image este clasa de bază abstractă și expune Width, Height, Bounds, Load(), Save() și Dispose(). PsdImage este implementarea concretă, sigilată, returnată de Image.Load() pentru intrarea PSD/PSB — convertirea rezultatului la PsdImage expune restul suprafeței documentului: ColorMode, Version, Layers, Compression, BitsPerChannel și altele.
using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}"); // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}"); // PsdImage-specific
Tipuri de valori geometrice
Point, Size, Rectangle și RectangleF sunt tipurile de valori utilizate pentru limite și coordonate în întregul API — Layer.Bounds și Image.Bounds sunt ambele Rectangle, iar PsdImage.Size este un Size. Rectangle conține metode reale de geometrie: Contains(), Intersect(), Union(), Inflate() și FromLeftTopRightBottom(), printre altele.
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}");
Blocuri de resurse și excepții
PsdImage.ImageResources returnează matricea ResourceBlock[] analizată — fiecare bloc expune ID, DataSize, Name și Signature. În această construcție FOSS, ImageResources, GlobalLayerResources, ActiveLayer și HasTransparencyData pot fi citite, dar nu pot fi reatribuite — fiecare are un setter care aruncă NotSupportedException dacă este apelat, așadar tratați-le ca fiind doar pentru citire, chiar dacă apar ca proprietăți.
Erorile de încărcare și salvare apar ca două tipuri de excepții dedicate: PsdLoadException când un document nu poate fi analizat și PsdSaveException când un document nu poate fi scris înapoi.
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}");
}
Pornire rapidă
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}");
}
Formate suportate
| Format | Extensie | Citește | Scrie |
|---|---|---|---|
| Document Photoshop | psd | ✓ | ✓ |
| Document Photoshop mare | psb | ✓ | ✓ |
Open Source & Licențiere
Aspose.PSD FOSS pentru .NET este licențiat sub MIT și poate fi utilizat în produse comerciale fără redevențe, fără filigran de evaluare sau limită de utilizare.
Pachetul este la versiunea 1.0.0 și necesită doar .NET 10.0 la rulare — nu are alte dependențe terțe.