Inleiding

Aspose.PSD FOSS voor .NET laadt, inspecteert en slaat PSD- en PSB-documenten op via een kleine set klassen. Deze post bekijkt delen van de kern API die de inleidende post niet uitvoerig behandelde: de Image/PsdImage erfenisrelatie, de geometrische waardetypen die door de bibliotheek heen worden gebruikt, en hoe de bibliotheek laad- en slaffouten rapporteert.


Wat er inbegrepen is

Afbeelding en PsdImage

Image is de abstracte basisklasse en biedt Width, Height, Bounds, Load(), Save() en Dispose(). PsdImage is de verzegelde, concrete implementatie die wordt geretourneerd door Image.Load() voor PSD/PSB invoer — het casten van het resultaat naar PsdImage onthult de rest van het documentoppervlak: ColorMode, Version, Layers, Compression, BitsPerChannel, en meer.

using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}");       // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}");  // PsdImage-specific

Geometrische waardetypen

Point, Size, Rectangle en RectangleF zijn de waardetypen die worden gebruikt voor grenzen en coördinaten in de hele API — Layer.Bounds en Image.Bounds zijn beide Rectangle, en PsdImage.Size is een Size. Rectangle bevat echte geometrische methoden: Contains(), Intersect(), Union(), Inflate() en FromLeftTopRightBottom(), onder andere.

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

Resourceblokken en Uitzonderingen

PsdImage.ImageResources retourneert de geparseerde ResourceBlock[] array — elk blok exposeert ID, DataSize, Name en Signature. In deze FOSS-build kunnen ImageResources, GlobalLayerResources, ActiveLayer en HasTransparencyData worden gelezen maar niet opnieuw toegewezen — elk heeft een setter die NotSupportedException werpt indien aangeroepen, dus behandel ze als alleen-lezen hoewel ze als eigenschappen verschijnen.

Laad- en opslaffouten komen naar voren als twee speciale exceptietypen: PsdLoadException wanneer een document niet kan worden geparseerd, en PsdSaveException wanneer een document niet kan worden weggeschreven.

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

Snelstart

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

Ondersteunde formaten

FormaatExtensieLezenSchrijven
Photoshop-documentpsd✓✓
Photoshop Groot Documentpsb✓✓

Open source & licenties

Aspose.PSD FOSS voor .NET is MIT-gelicentieerd en mag worden gebruikt in commerciële producten zonder royalty’s, zonder evaluatiewatermerk of gebruikslimiet.

Het pakket is versie 1.0.0 en vereist alleen .NET 10.0 tijdens runtime — het heeft geen andere third-party afhankelijkheden.


Aan de slag

Gerelateerde bronnen