Introduktion
Aspose.PSD FOSS för .NET läser in, inspekterar och sparar PSD- och PSB-dokument via en liten uppsättning klasser. Detta inlägg granskar delar av kärnan API som det inledande inlägget inte täckte i detalj: Image/PsdImage-arvförhållandet, geometrivärdetyperna som används i hela biblioteket, och hur biblioteket rapporterar inläsnings- och sparfel.
Vad som ingår
Bild och PsdImage
Image är den abstrakta basklassen och exponerar Width, Height, Bounds, Load(), Save() och Dispose(). PsdImage är den förseglade, konkreta implementationen som returneras av Image.Load() för PSD/PSB-indata — att kasta resultatet till PsdImage exponerar resten av dokumentsurfacedelen: ColorMode, Version, Layers, Compression, BitsPerChannel och mer.
using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}"); // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}"); // PsdImage-specific
Geometrivärdetyper
Point, Size, Rectangle och RectangleF är de värdetyper som används för gränser och koordinater i hela API — Layer.Bounds och Image.Bounds är båda Rectangle, och PsdImage.Size är en Size. Rectangle innehåller riktiga geometrimetoder: Contains(), Intersect(), Union(), Inflate() och FromLeftTopRightBottom(), bland annat.
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}");
Resursblock och undantag
PsdImage.ImageResources returnerar den analyserade ResourceBlock[] arrayen — varje block exponerar ID, DataSize, Name och Signature. I denna FOSS-byggnad kan ImageResources, GlobalLayerResources, ActiveLayer och HasTransparencyData läsas men inte tilldelas — var och en har en setter som kastar NotSupportedException om den anropas, så behandla dem som skrivskyddade även om de visas som egenskaper.
Läs- och skrivfel visas som två dedikerade undantagstyper: PsdLoadException när ett dokument inte kan analyseras, och PsdSaveException när ett dokument inte kan skrivas tillbaka.
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}");
}
Snabbstart
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}");
}
Stödda format
| Format | Filändelse | Läs | Skriv |
|---|---|---|---|
| Photoshop-dokument | psd | ✓ | ✓ |
| Photoshop Stort dokument | psb | ✓ | ✓ |
Öppen källkod & licensiering
Aspose.PSD FOSS för .NET är licensierad under MIT och får användas i kommersiella produkter utan royalties, utan utvärderingsvattenstämpel eller användningsgräns.
Paketet är i version 1.0.0 och kräver endast .NET 10.0 vid körning — det har inga andra tredjepartsberoenden.