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

Podporované formáty

FormátPříponaČístZapsat
Dokument Photoshopupsd✓✓
Velký dokument Photoshopupsb✓✓

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.


Začínáme

Související zdroje