Comment travailler avec le Aspose.PSD FOSS Core API dans .NET

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.

Voir aussi

 Français