Les entrées/sorties JPEG
Le LibGD offre une prise en charge complète de l'entrée et de la sortie des fichiers au format JPEG, un format populaire pour les images compressées. Grâce aux fonctions intégrées, il est possible de lire des fichiers JPEG existants, de modifier leur contenu, puis de les sauvegarder. La bibliothèque permet également de manipuler la qualité de compression pour optimiser la taille du fichier ou la qualité visuelle de l'image. Ce support est utile pour les applications nécessitant de traiter des fichiers d'images de manière dynamique, notamment les sites Web, les outils de retouche d'image et les systèmes de gestion multimédia.
Les fonctions d'importation JPEG
Le LibGD fournit plusieurs fonctions pour charger des images JPEG, comme gdImageCreateFromJpeg, permettant de lire un fichier JPEG directement depuis un disque. Si les données JPEG sont disponibles en mémoire, les fonctions comme gdImageCreateFromJpegPtr ou gdImageCreateFromJpegCtx sont utilisées pour charger des images à partir de pointeurs ou de contextes de flux. Ces options offrent une grande flexibilité, permettant aux développeurs de traiter des images provenant de diverses sources, que ce soit des fichiers locaux ou des données issues de téléchargements réseau.
L'exportation des images en format JPEG
Pour enregistrer des images au format JPEG, LibGD propose plusieurs fonctions adaptées aux besoins variés des développeurs. Par exemple, gdImageJpeg écrit une image dans un fichier avec une qualité par défaut, tandis que gdImageJpegEx offre des paramètres supplémentaires comme la qualité de compression, spécifiée par un pourcentage. Ces fonctions permettent également d'exporter des images vers des contextes de flux (via gdImageJpegCtx), ou directement dans des blocs de mémoire (via gdImageJpegPtr), ce qui simplifie l'intégration dans des applications nécessitant des réponses rapides, comme les serveurs Web.
Options avancées pour le format JPEG
Le LibGD permet aux développeurs d'ajuster les paramètres spécifiques à l'écriture d'images JPEG, comme la qualité et le niveau de compression. La qualité peut être modifiée pour optimiser le rapport entre la taille du fichier et la fidélité visuelle de l'image. Une faible qualité réduit la taille du fichier mais peut dégrader l'image, tandis qu'une haute qualité préserve les détails mais augmente la taille. Ces options, combinées aux fonctions de lecture et d'écriture flexibles, font du support JPEG dans LibGD un outil puissant pour les projets nécessitant une gestion dynamique et efficace des images.
Les fonctions
Nom | Description |
---|---|
gdImageJpeg | Cette fonction permet d'écrire une image spécifiée dans un fichier au format JPEG. Elle prend en entrée une image et un fichier cible, et génère un fichier JPEG à partir des données de l'image. |
gdImageJpegPtr | Identique à gdImageJpeg, cette fonction génère les données JPEG, mais au lieu d'écrire dans un fichier, elle retourne un pointeur vers une zone mémoire contenant les données JPEG. Cela est utile pour travailler directement avec des données en mémoire, par exemple pour les envoyer via un réseau. |
gdImageJpegCtx | Cette fonction écrit l'image sous forme de données JPEG via un objet gdIOCtx. Cela permet de gérer des contextes de flux personnalisés, comme l'écriture dans un flux réseau ou dans une base de données, au lieu d'un simple fichier sur disque. |
gdImageCreateFromJpeg | Cette fonction est utilisée pour lire une image au format JPEG à partir d'un fichier et la charger dans un objet image GD. Elle permet de manipuler facilement des fichiers JPEG existants. |
gdImageCreateFromJpegEx | Variante avancée de gdImageCreateFromJpeg, cette fonction permet de charger une image JPEG avec des options supplémentaires. Elle est conçue pour charger des images en couleur réelle (truecolor) et peut être utilisée dans des cas nécessitant des personnalisations avancées. |
gdImageCreateFromJpegPtr | Cette fonction charge une image JPEG à partir d'un pointeur vers des données en mémoire, au lieu d'un fichier sur disque. Cela est utile pour traiter des images reçues via des téléchargements ou des flux réseau. |
gdImageCreateFromJpegPtrEx | Similaire à gdImageCreateFromJpegPtr, cette fonction offre des options supplémentaires pour le chargement des images, notamment pour les images en truecolor, offrant une plus grande flexibilité dans des cas avancés. |
gdImageCreateFromJpegCtx | Cette fonction lit une image JPEG via un contexte gdIOCtx, au lieu d'utiliser un fichier ou un pointeur en mémoire. Cela est utile pour intégrer des flux de données personnalisés. |
gdImageCreateFromJpegCtxEx | Variante avancée de gdImageCreateFromJpegCtx, cette fonction offre des options supplémentaires pour charger des images JPEG à partir d'un contexte, notamment pour manipuler des images en truecolor ou appliquer des configurations personnalisées. |
gdImageJpeg
void gdImageJpeg(gdImagePtr im, FILE *outFile, int quality); |
gdImageJpeg génère l'image spécifiée dans le fichier spécifié au format JPEG. 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. gdImageJpeg ne ferme pas le fichier ; votre code doit le faire.
Si la qualité est négative, la valeur de qualité JPEG par défaut d'IJG (devant donner un bon compromis qualité/taille générale dans la plupart des situations) est utilisée. Sinon, pour des raisons pratiques, la qualité doit être une valeur comprise entre 0 et 95, les valeurs de qualité supérieures impliquant généralement à la fois une qualité supérieure et des tailles d'image plus grandes.
Si vous avez défini l'entrelacement d'images à l'aide de gdImageInterlace, cette fonction interprétera cela comme signifiant que vous souhaitez générer un JPEG progressif. Certains programmes (par exemple, les navigateurs Web) peuvent afficher les JPEG progressifs de manière incrémentielle; cela peut être utile lors de la navigation sur une liaison de communication relativement lente, par exemple. Les fichiers JPEG progressifs peuvent également être légèrement plus petits que les fichiers JPEG séquentiels (non progressifs).
Variantes
gdImageJpegCtx entrepose l'image à l'aide d'une structure gdIOCtx.
gdImageJpegPtr entrepose l'image dans la RAM.
Paramètre
Nom | Description |
---|---|
im | Ce paramètre permet d'indiquer l'image à sauvegarder. |
outFile | Ce paramètre permet d'indiquer le pointeur FILE vers lequel écrire. |
quality | Ce paramètre permet de qualité de compression (0 à 95, 0 signifie utiliser la valeur par défaut). |
Retour
Rien
Exemple
- gdImagePtr im;
- int black, white;
- FILE *out;
- /* Créer l'image */
- im = gdImageCreate(100, 100);
- /* Attribuer l'arrière-plan */
- white = gdImageColorAllocate(im, 255, 255, 255);
- /* Attribuer la couleur du dessin */
- black = gdImageColorAllocate(im, 0, 0, 0);
- /* Dessiner un rectangle */
- gdImageRectangle(im, 0, 0, 99, 99, black);
- /* Ouvrir le fichier de sortie en mode binaire */
- out = fopen("rect.jpg", "wb");
- /* Écrire au format JPEG en utilisant la qualité par défaut */
- gdImageJpeg(im, out, -1);
- /* Fermer le fichier */
- fclose(out);
- /* Détruire l'image */
- gdImageDestroy(im);
gdImageJpegPtr
void * gdImageJpegPtr(gdImagePtr im, int * size, int quality); |
Identique à gdImageJpeg, sauf qu'il renvoie un pointeur vers une zone mémoire contenant les données JPEG. 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(). En effet, il n'est pas garanti que LibGD utilisera la même implémentation de malloc, free, ... que votre programme.
Le paramètre «size» reçoit la taille totale du bloc de mémoire.
Paramètre
Nom | Description |
---|---|
im | Ce paramètre permet d'indiquer l'image à écrire. |
size | Ce paramètre permet d'indiquer la taille de l'image de sortie résultante. |
quality | Ce paramètre permet d'indiquer la qualité de compression. |
Retour
Valeur | Description |
---|---|
Pointeur | Un pointeur vers les données JPEG ou NULL si une erreur s'est produite. |
gdImageJpegCtx
void gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality); |
Écrire l'image sous forme de données JPEG via un gdIOCtx. Voir gdImageJpeg pour plus de détails.
Paramètre
Nom | Description |
---|---|
im | Ce paramètre permet d'indiquer l'image à écrire. |
outfile | Ce paramètre permet d'indiquer le fichier de sortie. |
quality | Ce paramètre permet d'indiquer la qualité de l'image. |
gdImageCreateFromJpeg
gdImagePtr gdImageCreateFromJpeg(FILE * inFile); |
Voir gdImageCreateFromJpegEx.
gdImageCreateFromJpegEx
gdImagePtr gdImageCreateFromJpegEx(FILE * inFile, int ignore_warning); |
gdImageCreateFromJpegEx est appelé pour charger des images en vraies couleurs à partir de fichiers au format JPEG. Appelez gdImageCreateFromJpegEx avec un pointeur déjà ouvert vers un fichier contenant l'image souhaitée. gdImageCreateFromJpegEx renvoie un gdImagePtr vers la nouvelle image en vraies couleurs, 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 JPEG). gdImageCreateFromJpegEx 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.
L'image renvoyée est toujours une image en vraies couleurs.
Variantes
gdImageCreateFromJpegPtrEx crée une image à partir de données JPEG déjà en mémoire.
gdImageCreateFromJpegCtxEx lit ses données via les pointeurs de fonction dans une structure gdIOCtx.
gdImageCreateFromJpeg, gdImageCreateFromJpegPtr et gdImageCreateFromJpegCtx sont équivalents à l'appel de leurs homologues nommés Ex avec un ignore_warning défini sur 1 (c'est-à-dire TRUE).
Paramètre
Nom | Description |
---|---|
infile | Ce paramètre permet d'indiquer le pointeur de fichier d'entrée. |
ignore_warning | Ce paramètre permet d'indiquer le drapeau. Si la valeur est vraie, ignore les avertissements récupérables. |
Retour
Valeur | Description |
---|---|
NULL | Une erreur s'est produite. |
Pointeur | Un pointeur vers la nouvelle image en vraies couleurs. Celui-ci devra être détruit avec gdImageDestroy une fois qu'il ne sera plus nécessaire. |
Exemple
gdImageCreateFromJpegPtr
gdImagePtr gdImageCreateFromJpegPtr(int size, void *data); |
Paramètre
Nom | Description |
---|---|
size | Ce paramètre permet d'indiquer la taille des données JPEG en octets. |
data | Ce paramètre permet d'indiquer le pointeur vers les données JPEG. |
Voir gdImageCreateFromJpegEx.
gdImageCreateFromJpegPtrEx
gdImagePtr gdImageCreateFromJpegPtrEx(int size, void * data, int ignore_warning); |
Paramètre
Nom | Description |
---|---|
size | Ce paramètre permet d'indiquer la taille des données JPEG en octets. |
data | Ce paramètre permet d'indiquer un pointeur vers les données JPEG. |
ignore_warning | Ce paramètre permet d'indiquer s'il est vrai, d'ignorer les avertissements récupérables. |
Voir gdImageCreateFromJpegEx.
gdImageCreateFromJpegCtx
gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx * infile); |
Voir gdImageCreateFromJpeg.
gdImageCreateFromJpegCtxEx
gdImagePtr gdImageCreateFromJpegCtxEx(gdIOCtx *infile, int ignore_warning); |
Voir gdImageCreateFromJpeg.