Einleitung

Aspose.PSD FOSS für .NET lädt, inspiziert und speichert PSD- und PSB-Dokumente über einen kleinen Satz von Klassen. Dieser Beitrag betrachtet Teile des Kern-API, die im einleitenden Beitrag nicht ausführlich behandelt wurden: die Image/PsdImage-Vererbungshierarchie, die für die gesamte Bibliothek verwendeten Geometrie-Wertetypen und wie die Bibliothek Lade- und Speicherfehler meldet.


Was enthalten ist

Bild und PsdImage

Image ist die abstrakte Basisklasse und stellt Width, Height, Bounds, Load(), Save() und Dispose() bereit. PsdImage ist die versiegelte, konkrete Implementierung, die von Image.Load() für PSD/PSB-Eingaben zurückgegeben wird — das Casten des Ergebnisses zu PsdImage legt den Rest der Dokumentoberfläche frei: ColorMode, Version, Layers, Compression, BitsPerChannel und mehr.

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

Geometrie-Wertetypen

Point, Size, Rectangle und RectangleF sind die Wertetypen, die für Begrenzungen und Koordinaten im gesamten API verwendet werden — Layer.Bounds und Image.Bounds sind beide Rectangle, und PsdImage.Size ist ein Size. Rectangle enthält echte Geometriemethoden: Contains(), Intersect(), Union(), Inflate() und FromLeftTopRightBottom(), unter anderem.

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

Ressourcenblöcke und Ausnahmen

PsdImage.ImageResources gibt das geparste ResourceBlock[]-Array zurück — jeder Block stellt ID, DataSize, Name und Signature bereit. In diesem FOSS-Build können ImageResources, GlobalLayerResources, ActiveLayer und HasTransparencyData gelesen, aber nicht neu zugewiesen werden — jeder hat einen Setter, der NotSupportedException wirft, wenn er aufgerufen wird, behandeln Sie sie also als schreibgeschützt, obwohl sie als Eigenschaften erscheinen.

Lade- und Speicherfehler treten als zwei dedizierte Ausnahmetypen auf: PsdLoadException, wenn ein Dokument nicht geparst werden kann, und PsdSaveException, wenn ein Dokument nicht zurückgeschrieben werden kann.

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

Schnellstart

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

Unterstützte Formate

FormatErweiterungLesenSchreiben
Photoshop-Dokumentpsd✓✓
Photoshop großes Dokumentpsb✓✓

Open Source & Lizenzierung

Aspose.PSD FOSS für .NET ist unter der MIT-Lizenz veröffentlicht und kann in kommerziellen Produkten ohne Lizenzgebühren verwendet werden, ohne Evaluations-Wasserzeichen oder Nutzungslimit.

Das Paket hat die Version 1.0.0 und erfordert zur Laufzeit nur .NET 10.0 — es hat keine weiteren Drittanbieter-Abhängigkeiten.


Erste Schritte

Verwandte Ressourcen