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 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}");
}

Támogatott formátumok

FormátumKiterjesztésOlvasásÍrás
Photoshop-dokumentumpsd✓✓
Photoshop nagy dokumentumpsb✓✓

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.


Első lépések

Kapcsolódó erőforrások