Hoe te werken met de Aspose.PSD FOSS Core API in .NET
Aspose.PSD FOSS voor .NET laadt en inspecteert de PSD/PSB documentstructuur via PsdImage, een subklasse van Image. Dit artikel behandelt het laden van een document, het lezen van de header en afbeeldingsbronnen, en het opslaan ervan terug naar schijf.
Stapsgewijze handleiding
Stap 1: Installeer het pakket
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildStap 2: Importeer vereiste klassen
using Aspose.PSD.FileFormats.Psd;Stap 3: Laad een PSD/PSB Document
PsdImage.Load opent een document vanaf een bestandspad of een stream:
using var image = PsdImage.Load("input.psd");Stap 4: Inspecteer de documentheader
PsdImage toont headervelden die zijn gelezen uit het geparseerde document: Width, Height, BitsPerChannel, ColorMode (een ColorModes waarde), en Compression (een CompressionMethod waarde):
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 waarden omvatten Bitmap, Grayscale, Indexed, Rgb en Cmyk, onder andere (Multichannel, Duotone, Lab). CompressionMethod waarden zijn Raw, RLE, ZipWithoutPrediction en een ZIP-met-prediction variant.
Stap 5: Lees afbeeldingsresourceblokken
ImageResources retourneert de geparseerde ResourceBlock items van het document. Elk blok toont ID, Name en Size:
foreach (var resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}ImageResources is alleen-lezen in deze FOSS-build — toewijzen eraan gooit een fout NotSupportedException (zie Bekende beperkingen in de FAQ).
Stap 6: Sla het document op
image.Save("output.psd");Veelvoorkomende problemen en oplossingen
PsdLoadException bij het laden van een bestand. De invoer is geen geldig PSD/PSB-document, of de header is niet gevalideerd. Bevestig dat het bestand een echt PSD/PSB-bestand is voordat je het laadt.
NotSupportedException bij het instellen ImageResources or GlobalLayerResources. Deze setters worden niet ondersteund in deze FOSS-build. Beschouw ImageResources als alleen-lezen.
ColorMode or Compression wordt afgedrukt als een numerieke waarde in plaats van een naam. Cast de eigenschap expliciet naar zijn enum-type, of gebruik .ToString(), om de leesbare naam te krijgen (ColorModes.Rgb, niet 3).
Veelgestelde vragen
Kan ik een PSD-bestand laden vanuit een stream in plaats van een bestandspad?
Ja — PsdImage.Load heeft een overload die een Stream accepteert.
Bevat ImageResources laaggegevens?
Nee. ImageResources bevat resourceblokken op documentniveau (geparseerd uit de PSD-afbeeldingsresourcesectie). Laagniveau-gegevens worden gelezen via PsdImage.Layers — zie Werken met lagen.
Is PsdImage.Version de versie van het PSD-bestandsformaat?
Nee. PsdImage.Version geeft een interne Aspose.PSD-compatibele API-versienummer weer (momenteel 6) — het heeft niets te maken met of het geladen bestand PSD of PSB is.