Bevezetés
Aspose.PSD FOSS a .NET számára betölti, ellenőrzi és menti a PSD és PSB dokumentumokat egy kis osztálykészleten keresztül. Ez a bejegyzés a API magjának részeit vizsgálja, amelyeket az úintro bejegyzés nem fedett le részletesen: a Image/PsdImage öröklődési kapcsolatot, a könyvtárban használt geometriai értéktípusokat, valamint azt, hogy a könyvtár hogyan jelenti a betöltési és mentési hibákat.
Mi van benne
Kép és PsdImage
Image az absztrakt alaposztály, és elérhetővé teszi a Width, Height, Bounds, Load(), Save() és Dispose() elemeket. PsdImage a lezárt, konkrét megvalósítás, amelyet a Image.Load() ad vissza PSD/PSB bemenethez — az eredmény PsdImage-re való átkonvertálása feltárja a dokumentum további felületét: ColorMode, Version, Layers, Compression, BitsPerChannel és továbbiak.
using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}"); // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}"); // PsdImage-specific
Geometriai értéktípusok
Point, Size, Rectangle és RectangleF azok a értéktípusok, amelyeket a API határainak és koordinátáinak kezelésére használnak — Layer.Bounds és Image.Bounds egyaránt Rectangle, a PsdImage.Size pedig egy Size. Rectangle valós geometriai metódusokat tartalmaz: Contains(), Intersect(), Union(), Inflate() és FromLeftTopRightBottom(), többek között.
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}");
Erőforrásblokkok és kivételek
PsdImage.ImageResources visszaadja a feldolgozott ResourceBlock[] tömböt — minden blokk elérhetővé teszi a ID, DataSize, Name és Signature attribútumokat. Ebben a FOSS változatban a ImageResources, GlobalLayerResources, ActiveLayer és HasTransparencyData csak olvasható, de nem rendelhető újra — mindegyiknek van egy beállítója, ami NotSupportedException-t dob, ha meghívják, ezért tekintsd őket csak olvashatónak, még ha tulajdonságként is jelennek meg.
A betöltési és mentési hibák két dedikált kivételtípusban jelennek meg: PsdLoadException, ha a dokumentumot nem lehet feldolgozni, és PsdSaveException, ha a dokumentumot nem lehet visszaírni.
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}");
}
Gyors kezdés
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}");
}
Támogatott formátumok
| Formátum | Kiterjesztés | Olvasás | Írás |
|---|---|---|---|
| Photoshop-dokumentum | psd | ✓ | ✓ |
| Photoshop nagy dokumentum | psb | ✓ | ✓ |
Nyílt forráskód és licencelés
Aspose.PSD FOSS a .NET számára MIT licenc alatt áll, és kereskedelmi termékekben használható jogdíj nélkül, értékelési vízjel vagy felhasználási korlát nélkül.
A csomag a 1.0.0 verzióban van, és csak .NET 10.0-t igényel futásidőben — nincs más harmadik féltől származó függősége.