Comment travailler avec le Aspose.PSD FOSS Core API dans .NET
Aspose.PSD FOSS pour .NET charge et inspecte la structure du document PSD/PSB via PsdImage, une sous-classe de Image. Cet article couvre le chargement d’un document, la lecture de son en-tête et de ses ressources image, et son enregistrement sur le disque.
Guide étape par étape
Étape 1: installer le paquet
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildÉtape 2: importer les classes requises
using Aspose.PSD.FileFormats.Psd;Étape 3: charger un document PSD/PSB
PsdImage.Load ouvre un document à partir d’un chemin de fichier ou d’un flux:
using var image = PsdImage.Load("input.psd");Étape 4: Inspecter l’en-tête du document
PsdImage expose les champs d’en-tête lus à partir du document analysé: Width, Height, BitsPerChannel, ColorMode (une valeur ColorModes), et Compression (une valeur CompressionMethod):
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}");Les valeurs ColorModes incluent Bitmap, Grayscale, Indexed, Rgb et Cmyk, entre autres (Multichannel, Duotone, Lab). Les valeurs CompressionMethod sont Raw, RLE, ZipWithoutPrediction et une variante ZIP-avec-prediction.
Étape 5: Lire les blocs de ressources d’image
ImageResources renvoie les entrées ResourceBlock analysées du document. Chaque bloc expose ID, Name et Size:
foreach (var resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}ImageResources est en lecture seule dans cette version FOSS — l’assignation génère une exception NotSupportedException (voir les Limitations connues dans le FAQ).
Étape 6: Enregistrer le document
image.Save("output.psd");Problèmes courants et solutions
PsdLoadException lors du chargement d’un fichier. L’entrée n’est pas un document PSD/PSB valide, ou son en-tête a échoué la validation. Confirmez que le fichier est un véritable fichier PSD/PSB avant de le charger.
NotSupportedException lors de la définition ImageResources or GlobalLayerResources. Ces setters ne sont pas pris en charge dans cette version FOSS. Traitez ImageResources comme en lecture seule.
ColorMode or Compression s’affiche sous forme de valeur numérique au lieu d’un nom. Convertissez explicitement la propriété en son type enum, ou utilisez .ToString(), pour obtenir le nom lisible (ColorModes.Rgb, pas 3).
Foire aux questions
Puis-je charger un fichier PSD à partir d’un flux au lieu d’un chemin de fichier?
Oui — PsdImage.Load possède une surcharge qui accepte un Stream.
Le ImageResources inclut-il les données de calque?
Non. ImageResources contient les blocs de ressources au niveau du document (analysés à partir de la section des ressources d’image PSD). Les données au niveau du calque sont lues via PsdImage.Layers — voir Travailler avec les calques.
Le PsdImage.Version est-il la version du format de fichier PSD?
Non. PsdImage.Version indique un numéro de version interne compatible Aspose.PSD de API (actuellement 6) — cela n’a aucun lien avec le fait que le fichier chargé soit un PSD ou un PSB.