GdipSaveImageToFile()



Syntaxe
Resultat.i = GdipSaveImageToFile(*image, filename.p-unicode, @clsidEncoder.CLSID, @encoderParams.EncoderParameters)

Paramètres

*image

[in] Pointeur sur un objet image.

filename.p-unicode

[in] Pointeur sur une chaîne Unicode terminée par un caractère nul qui indique le nom du fichier où l'image sera sauvegardée.

clsidEncoder.CLSID

[in] Variable de type CLSID qui spécifie l'encodeur utilisé pour sauvegarder l'image. Cet identifiant peut être retrouvé par la procédure du wrapper GetEncoderClsid().

encoderParams.EncoderParameters

[in] Variable de type EncoderParameters qui contient les paramètres à utiliser par l'encodeur. Si ce paramètre n'est pas utilisé, il doit être mis à 0.

Description

Cette fonction permet d'enregistrer une image dans un fichier en spécifiant le format parmi ceux gérés par GDI+.
Les format gérés par GDI+ sont les suivants :
Format nécessitant un encodeur/décodeur :
BMP, GIF, JPEG, PNG, TIFF
Format ne nécessitant pas d'encodeur/décodeur :
WMF, EMF, ICON


Les fonctions GdipLoadImageFromFile(), GdipLoadImageFromFileICM(), GdipCreateBitmapFromFile() ou GdipCreateBitmapFromFileICM() peuvent être utilisées pour créer une image ou un bitmap depuis les fichiers images. Les séquences d'images au format TIFF sont supportées.

Gdi+ 1.0 ne supporte pas les gif à séquence d'images (images multiples).

Le paramètre *image est un identifiant GDI+ retournée par une des fonctions de création d'image. Cette image sera celle qui sera enregistrée dans le fichier.
Le second paramètre est le nom du fichier.

Le troisième paramètre est une identifiant CLSID sur le type de l'encodeur voulu. La procédure GetEncoderClsid(format.s, *Clsid.CLSID) permet de retrouver cette valeur et est définie dans le fichier gdiplus.pbi.

Le dernier paramètre (encoderParams.EncoderParameters) est une variable de type EncoderParameters.

Le premier élément de la structure EncoderParameters est le nombre d'éléments EncoderParameter contenu dans le tableau (2ème paramètre de la structure EncoderParameters).
Le tableau EncoderParameter sera rempli comme ceci :
L'élément Guid sera rempli avec la valeur de l'identifiant pour le type de format voulu (les différentes valeurs sont définies dans le fichier PB des GUID).
Ce paramètre est rempli avec la commande PB CopyMemory().
L'élément EncoderParameter\NumberOfValues est le nombre d'éléments pointé par le membre *value de la structure.
L'élément EncoderParameter\Type vaut une des constantes de l'énumération
EncoderParameterValueType.
L'élément EncoderParameter\Value (pointeur) dépend du type défini par le paramètre EncoderParameter\Type. Par exemple, cette valeur peut être l'adresse d'une variable de type long dont la valeur est une des valeurs de l'énumération EncoderValue permettant de définir par exemple le type de compression.

Le premier exemple charge une image au format PNG, affiche une réduction de l'image et permet de sélectionner le format du fichier à enregistrer (BMP, TIFF, JPG et GIF). En appuyant sur le bouton, on ouvre une fenêtre permettant d'entrer le nom du fichier voulu (sans extension!) au format voulu sans compression. Le CLSID de l'encodeur correspondant est retrouvé; le fichier est sauvegardé. Le dernier paramètre de la fonction (encoderParams.EncoderParameters) est mis à 0 car on ne spécifie aucun renseignement pour l'encodeur (compression, transformation ou autre). L'encodeur sera utilisé tel quel.
Un autre exemple est disponible avec la fonction GdipSaveAddImage(), cet exemple enregistre un fichier TIFF avec une séquence d'images (multi-frame). Les explications sont données sur la page de la fonction GdipSaveAddImage().

Résultat de la fonction

Si la fonction réussit, elle retourne #Ok qui est une constante de l'énumération status.
Si la fonction échoue, elle retourne une des autres valeurs de l'énumération status.

PB - OS

PureBasic v4.30 bêta 4 (Windows - x86)
Testé avec Windows Vista édition familiale Premium