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 buildSchritt 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.