Wie man mit dem Aspose.PSD FOSS Core API in .NET arbeitet

Wie man mit dem Aspose.PSD FOSS Core API in .NET arbeitet

Aspose.PSD FOSS für .NET lädt und inspiziert die PSD/PSB Dokumentstruktur über PsdImage, eine Unterklasse von Image. Dieser Artikel behandelt das Laden eines Dokuments, das Lesen seines Headers und seiner Bildressourcen sowie das Speichern zurück auf die Festplatte.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build

Schritt 2: Erforderliche Klassen importieren

using Aspose.PSD.FileFormats.Psd;

Schritt 3: Ein PSD/PSB-Dokument laden

PsdImage.Load öffnet ein Dokument von einem Dateipfad oder einem Stream:

using var image = PsdImage.Load("input.psd");

Schritt 4: Dokumentkopf prüfen

PsdImage gibt Header-Felder aus, die aus dem geparsten Dokument gelesen wurden: Width, Height, BitsPerChannel, ColorMode (ein ColorModes-Wert) und Compression (ein CompressionMethod-Wert):

Console.WriteLine($"{image.Width}x{image.Height}, {image.BitsPerChannel} bpc");
Console.WriteLine($"Color mode: {image.ColorMode}");   // e.g. ColorModes.Rgb
Console.WriteLine($"Compression: {image.Compression}"); // e.g. CompressionMethod.RLE
Console.WriteLine($"Flattened: {image.IsFlatten}");

ColorModes-Werte umfassen Bitmap, Grayscale, Indexed, Rgb und Cmyk, unter anderem (Multichannel, Duotone, Lab). CompressionMethod-Werte sind Raw, RLE, ZipWithoutPrediction und eine ZIP-mit-Vorhersage-Variante.


Schritt 5: Bild-Ressourcenblöcke lesen

ImageResources liefert die geparsten ResourceBlock-Einträge des Dokuments. Jeder Block gibt ID, Name und Size aus:

foreach (var resource in image.ImageResources)
{
    Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}

ImageResources ist in diesem FOSS-Build schreibgeschützt — das Zuweisen wirft NotSupportedException (siehe Bekannte Einschränkungen im FAQ).


Schritt 6: Dokument speichern

image.Save("output.psd");

Häufige Probleme und Lösungen

PsdLoadException beim Laden einer Datei. Die Eingabe ist kein gültiges PSD/PSB Dokument, oder ihr Header hat die Validierung nicht bestanden. Bestätigen Sie, dass die Datei eine echte PSD/PSB Datei ist, bevor Sie sie laden.

NotSupportedException beim Setzen ImageResources or GlobalLayerResources. Diese Setter werden in diesem FOSS-Build nicht unterstützt. Behandeln Sie ImageResources als schreibgeschützt.

ColorMode or Compression wird als numerischer Wert anstelle eines Namens ausgegeben. Wandeln Sie die Eigenschaft explizit in ihren Enum-Typ um, oder verwenden Sie .ToString(), um den lesbaren Namen zu erhalten (ColorModes.Rgb, nicht 3).

Häufig gestellte Fragen

Kann ich eine PSD-Datei aus einem Stream anstelle eines Dateipfads laden?

Ja — PsdImage.Load hat eine Überladung, die ein Stream akzeptiert.

Enthält ImageResources Layer-Daten?

Nein. ImageResources enthält dokumentenbezogene Ressourcenblöcke (geparst aus dem PSD-Bildressourcen-Abschnitt). Ebenenbezogene Daten werden gelesen über PsdImage.Layers — siehe Arbeiten mit Ebenen.

Ist PsdImage.Version die PSD-Dateiformat-Version?

Nein. PsdImage.Version gibt eine interne, Aspose.PSD-kompatible API-Versionsnummer aus (derzeit 6) — sie steht in keinem Zusammenhang damit, ob die geladene Datei PSD oder PSB ist.

Siehe auch

 Deutsch