Les entrées/sorties PNG
La gestion des images PNG dans LibGD, appelée "PNG IO", constitue une partie essentielle de cette bibliothèque graphique en raison de la popularité du format PNG. LibGD permet de lire, écrire et manipuler des images au format PNG avec un haut niveau de flexibilité. Le format PNG étant sans perte et supportant la transparence grâce à un canal alpha, il est couramment utilisé pour les graphiques nécessitant une qualité élevée. Avec les fonctions "PNG IO", les développeurs peuvent facilement générer des images dynamiques ou charger des fichiers existants pour les traiter dans des applications Web ou locales.
Le LibGD offre plusieurs fonctions pour écrire des fichiers PNG. Par exemple, la fonction gdImagePng permet de générer une image PNG à partir d'une image GD et de l'enregistrer dans un fichier. Pour les cas où le fichier n'est pas nécessaire, la fonction gdImagePngPtr retourne un pointeur vers la zone mémoire contenant les données PNG, idéale pour les flux HTTP ou d'autres scénarios en mémoire. Une autre variante, gdImagePngCtx, permet d'écrire l'image via un contexte gdIOCtx, rendant la sortie flexible pour des destinations comme les bases de données, les flux réseau ou les systèmes de fichiers personnalisés.
La lecture des fichiers PNG est tout aussi bien supportée dans LibGD. Les fonctions telles que gdImageCreateFromPng ou gdImageCreateFromPngPtr permettent de charger une image PNG à partir d'un fichier ou d'une zone mémoire. Cela est utile pour des applications devant traiter des images téléchargées par les utilisateurs ou récupérées à partir de flux réseau. Pour les cas plus complexes, comme les contextes de flux personnalisés, gdImageCreateFromPngCtx peut être utilisée. Ces fonctions permettent de créer un objet image GD manipulable, offrant des possibilités de modification et de traitement après chargement.
Une caractéristique importante de la gestion PNG dans LibGD est son support pour les images avec transparence. Les fichiers PNG avec un canal alpha ou une couleur transparente peuvent être lus et traités sans problème, ce qui permet de produire des images visuellement attrayantes avec des arrière-plans transparents. Par exemple, une image PNG avec un logo transparent peut être utilisée pour des filigranes ou superposée à d'autres images. Grâce à ces fonctionnalités avancées, combinées à l'efficacité de LibGD, les développeurs ont à leur disposition des outils puissants pour travailler avec des images PNG dans des projets variés.
Nom | Description |
---|---|
gdImageCreateFromPng | Cette fonction est utilisée pour charger des images à partir de fichiers au format PNG. |
gdImageCreateFromPngPtr | Identique à gdImageCreateFromPng, mais elle travaille avec des données PNG provenant d'une zone mémoire. |
gdImageCreateFromPngCtx | Identique à gdImageCreateFromPng, mais elle lit les données PNG via une structure gdIOCtx. |
gdImagePngEx | Cette fonction permet d'enregistrer l'image spécifiée dans un fichier au format PNG, en offrant des options de personnalisation comme le niveau de compression. |
gdImagePng | Équivalent à gdImagePngEx, mais avec un niveau de compression par défaut de -1. |
gdImagePngPtr | Équivalent à gdImagePngPtrEx, mais avec un niveau de compression par défaut de -1. |
gdImagePngPtrEx | Similaire à gdImagePngEx, sauf qu'elle retourne un pointeur vers une zone mémoire contenant les données de l'image PNG. |
gdImagePngCtx | Équivalent à gdImagePngCtxEx, mais avec un niveau de compression par défaut de -1. |
gdImagePngCtxEx | Permet d'enregistrer une image au format PNG via une structure gdIOCtx, au lieu de l'enregistrer directement dans un fichier. |
gdImageCreateFromPng
gdImagePtr gdImageCreateFromPng(FILE * inFile); |
gdImageCreateFromPng est appelé pour charger des images à partir de fichiers au format PNG. Appelez gdImageCreateFromPng avec un pointeur déjà ouvert vers un FILE contenant l'image souhaitée. gdImageCreateFromPng renvoie un gdImagePtr vers la nouvelle image, ou NULL s'il est impossible de charger l'image (le plus souvent parce que le fichier est corrompu ou ne contient pas d'image PNG). gdImageCreateFromPng ne ferme pas le fichier. Vous pouvez inspecter les membres sx et sy de l'image pour déterminer sa taille. L'image doit éventuellement être détruite à l'aide de gdImageDestroy().
Si l'image PNG en cours de chargement est une image en vraies couleurs, le gdImagePtr résultant fera référence à une image en vraies couleurs. Si l'image PNG en cours de chargement est une image en palette ou en niveaux de gris, le gdImagePtr résultant fera référence à une image en palette. GD ne conserve que 8 bits de résolution pour chacun des canaux rouge, vert et bleu, et seulement 7 bits de résolution pour le canal alpha. La première restriction n'affecte qu'une poignée d'images PNG couleur 48 bits et niveaux de gris 16 bits très rares. La deuxième restriction affecte toutes les images PNG semi-transparentes, mais la différence est essentiellement invisible à l'oeil nu. 7 bits de résolution de canal alpha, c'est, en pratique, beaucoup.
Variantes
gdImageCreateFromPngPtr crée une image à partir de données PNG (c'est-à-dire le contenu d'un fichier PNG) déjà en mémoire.
gdImageCreateFromPngCtx lit une image à l'aide des fonctions d'une structure gdIOCtx.
gdImageCreateFromPngSource est similaire à gdImageCreateFromPngCtx mais utilise l'ancienne interface gdSource. Elle est obsolète.
Paramètre
Nom | Description |
---|---|
infile | Ce paramètre permet d'indiquer le pointeur de fichier d'entrée. |
Retour
Valeur | Description |
---|---|
Pointeur | Un pointeur vers la nouvelle image ou NULL si une erreur s'est produite. |
Exemple
gdImageCreateFromPngPtr
gdImagePtr gdImageCreateFromPngPtr(int size, void * data); |
Voir gdImageCreateFromPng.
gdImageCreateFromPngCtx
gdImagePtr gdImageCreateFromPngCtx(gdIOCtx * infile); |
Voir gdImageCreateFromPng.
gdImagePngEx
void gdImagePngEx(gdImagePtr im, FILE * outFile, int level); |
gdImagePngEx génère l'image spécifiée dans le fichier spécifié au format PNG. Le fichier doit être ouvert pour l'écriture. Sous MS-DOS et toutes les versions de Windows, il est important d'utiliser «wb» plutôt que simplement «w» comme mode lors de l'ouverture du fichier, et sous Unix, il n'y a aucune pénalité pour cela. gdImagePngEx ne ferme pas le fichier ; votre code doit le faire.
De plus, gdImagePngEx permet de spécifier le niveau de compression. Un niveau de compression de 0 signifie «aucune compression». Un niveau de compression de 1 signifie «compressé, mais aussi rapidement que possible». Un niveau de compression de 9 signifie «compressé autant que possible pour produire le fichier le plus petit possible». Un niveau de compression de -1 utilisera le niveau de compression par défaut au moment où zlib a été compilé sur votre système.
Variantes
gdImagePng équivaut à appeler gdImagePngEx avec une compression de -1.
gdImagePngCtx et gdImagePngCtxEx écrivent via un gdIOCtx au lieu d'un descripteur de fichier.
gdImagePngPtr et gdImagePngPtrEx entreposent le fichier image en mémoire.
Paramètre
Nom | Description |
---|---|
im | Ce paramètre permet d'indiquer l'image à écrire. |
outFile | Ce paramètre permet d'indiquer l'objet de sortie FILE*. |
level | Ce paramètre permet d'indiquer le niveau de compression : 0 → aucun, 1 à 9 → niveau, -1 → par défaut. |
Retour
Rien
Exemple
- gdImagePtr im;
- int black, white;
- FILE *out;
-
- im = gdImageCreate(100, 100); /* Créer l'image */
- white = gdImageColorAllocate(im, 255, 255, 255); /* Contexte d'allocation */
- black = gdImageColorAllocate(im, 0, 0, 0); /* Attribuer la couleur du dessin */
- gdImageRectangle(im, 0, 0, 99, 99, black); /* Dessiner un rectangle */
- out = fopen("rect.png", "wb"); /* Ouvrir le fichier de sortie (binaire) */
- gdImagePngEx(im, out, 9); /* Écrire en PNG, compression maximale */
- fclose(out); /* Fermer le fichier */
- gdImageDestroy(im); /* Détruire l'image */
gdImagePng
void gdImagePng(gdImagePtr im, FILE * outFile); |
Équivalent à l'appel de gdImagePngEx avec une compression de -1.
Paramètre
Nom | Description |
---|---|
im | Ce paramètre permet d'indiquer l'image à sauvegarder. |
outFile | Ce paramètre permet d'indiquer le fichier de sortie FILE*. |
Retour
Rien
gdImagePngPtr
void * gdImagePngPtr(gdImagePtr im, int *size); |
Équivalent à l'appel de gdImagePngPtrEx avec une compression de -1.
Voir gdImagePngEx pour plus d'informations.
Paramètre
Nom | Description |
---|---|
im | Ce paramètre permet d'indiquer que l'image à sauvegarder. |
size | Ce paramètre permet d'indiquer la taille de la sortie en octets du résultat. |
Retour
Valeur | Description |
---|---|
Pointeur | Un pointeur vers la mémoire contenant les données de l'image ou NULL en cas d'erreur. |
gdImagePngPtrEx
void * gdImagePngPtrEx(gdImagePtr im, int *size, int level); |
Identique à gdImagePngEx, sauf qu'il renvoie un pointeur vers une zone mémoire contenant les données PNG. Cette mémoire doit être libérée par l'appelant lorsqu'elle n'est plus nécessaire. **L'appelant doit invoquer gdFree(), et non free()**
Le paramètre «size» reçoit la taille totale du bloc de mémoire.
Voir gdImagePngEx pour plus d'informations.
Paramètre
Nom | Description |
---|---|
im | Ce paramètre permet d'indiquer l'image à sauvegarder. |
size | Ce paramètre permet d'indiquer taille de la sortie en octets du résultat. |
level | Ce paramètre permet d'indiquer le niveau de compression : 0 → aucun, 1 à 9 → niveau, -1 → par défaut. |
Retour
Valeur | Description |
---|---|
Pointeur | Un pointeur vers la mémoire contenant les données de l'image ou NULL en cas d'erreur. |
gdImagePngCtx
void gdImagePngCtx(gdImagePtr im, gdIOCtx *outfile); |
Équivalent à l'appel de gdImagePngCtxEx avec une compression de -1. Voir gdImagePngEx pour plus d'informations.
Paramètre
Nom | Description |
---|---|
im | Ce paramètre permet d'indiquer l'image à sauvegarder. |
outfile | Ce paramètre permet d'indiquer le gdIOCtx sur lequel écrire. |
Retour
Rien
gdImagePngCtxEx
void gdImagePngCtxEx(gdImagePtr im, gdIOCtx *outfile, int level); |
Génère l'image donnée sous forme de données PNG, mais en utilisant un gdIOCtx au lieu d'un fichier. Voir gdImagePngEx.
Paramètre
Nom | Description |
---|---|
im | Ce paramètre permet d'indiquer l'image à sauvegarder. |
outfile | Ce paramètre permet d'indiquer le gdIOCtx sur lequel écrire. |
level | Ce paramètre permet d'indiquer le niveau de compression : 0 → aucun, 1 à 9 → niveau, -1 → par défaut. |
Retour
Rien