Úvod
Aspose.PSD FOSS for .NET načítá, kontroluje a ukládá PSD a PSB dokumenty pomocí malé sady tříd. Tento příspěvek se zabývá částmi jádra API, které úvodní příspěvek neprobral do hloubky: dědické vztahy Image/PsdImage, typy hodnot geometrie používané v celé knihovně a tím, jak knihovna hlásí chyby při načítání a ukládání.
Co je zahrnuto
Obrázek a PsdImage
Image je abstraktní základní třída a vystavuje Width, Height, Bounds, Load(), Save() a Dispose(). PsdImage je uzavřená, konkrétní implementace vrácená Image.Load() pro vstup PSD/PSB — přetypování výsledku na PsdImage odhalí zbytek rozhraní dokumentu: ColorMode, Version, Layers, Compression, BitsPerChannel a další.
using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}"); // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}"); // PsdImage-specific
Typy hodnot geometrie
Point, Size, Rectangle a RectangleF jsou typy hodnot používané pro ohraničení a souřadnice napříč API — Layer.Bounds a Image.Bounds jsou oba Rectangle a PsdImage.Size je Size. Rectangle obsahuje skutečné geometrické metody: Contains(), Intersect(), Union(), Inflate() a FromLeftTopRightBottom(), mimo jiné.
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}");
Bloky zdrojů a výjimky
PsdImage.ImageResources vrací parsované ResourceBlock[] pole — každý blok vystavuje ID, DataSize, Name a Signature. V této FOSS verzi lze ImageResources, GlobalLayerResources, ActiveLayer a HasTransparencyData číst, ale nelze je přepsat — každý má setter, který při volání vyhodí NotSupportedException, takže s nimi zacházejte jako s jen pro čtení, i když se jeví jako vlastnosti.
Chyby načítání a ukládání se projevují jako dva dedikované typy výjimek: PsdLoadException, když dokument nelze parsovat, a PsdSaveException, když dokument nelze znovu zapsat.
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}");
}
Rychlý start
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}");
}
Podporované formáty
| Formát | Přípona | Číst | Zapsat |
|---|---|---|---|
| Dokument Photoshopu | psd | ✓ | ✓ |
| Velký dokument Photoshopu | psb | ✓ | ✓ |
Open source & licencování
Aspose.PSD FOSS pro .NET je licencován pod MIT a může být používán v komerčních produktech bez poplatků, bez vodotisku pro hodnocení ani omezení používání.
Balíček je ve verzi 1.0.0 a vyžaduje pouze .NET 10.0 za běhu — nemá žádné další závislosti třetích stran.