Les entrées/sorties GD
Le LibGD propose un système appelé GD IO facilitant les opérations d'entrée/sortie pour la manipulation des images. GD IO repose
sur des structures et des fonctions personnalisées permettant de gérer les données d'image en mémoire, dans des fichiers ou via des flux spécifiques. Cela permet de travailler
avec des sources non conventionnelles, comme des données stockées en mémoire tampon, des sockets ou d'autres types de flux. L'élément central de ce système est la structure
gdIOCtx, agissant comme une interface pour lire, écrire et manipuler les données des images de manière flexible.
La structure gdIOCtx est conçue pour être extensible et personnalisable. Elle contient des pointeurs vers des fonctions définissant comment les
données sont lues ou écrites. Ces fonctions incluent des opérations de lecture, d'écriture, de recherche (seek) et de fermeture, permettant ainsi à l'utilisateur de créer des
implémentations sur mesure adaptées à des flux spécifiques. Par exemple, un développeur peut utiliser GD IO pour lire des images à partir d'une mémoire tampon au lieu d'un
fichier physique, ou pour transmettre des images directement sur un réseau via un socket.
L'une des principales utilisations de GD IO est la lecture et l'écriture des données des images dans des formats supportés par LibGD, tels
que PNG, JPEG, BMP ou GIF, sans nécessiter d'accès direct au système de fichiers. Cela est particulièrement utile dans des environnements où l'écriture
de fichiers est restreinte, comme les serveurs Web ou les applications embarquées. Les fonctions telles que gdImagePngCtx ou
gdImageCreateFromJpegCtx utilisent GD IO pour gérer les données des images via des contextes personnalisés, permettant un
contrôle granulaire sur les opérations d'entrée/sortie.
Le GD IO dans LibGD est un puissant mécanisme d'abstraction élargissant les possibilités de manipulation d'images au-delà des fichiers
standards. En offrant la flexibilité d'utiliser des contextes personnalisés pour lire et écrire des données, GD IO s'adapte à une grande variété de cas d'utilisation, allant de
la manipulation d'images en mémoire tampon à leur transfert via des flux réseau. Cette modularité en fait un outil précieux pour les développeurs cherchant à intégrer des
fonctionnalités graphiques avancées dans leurs applications.
Le format d'image GD est un format d'image propriétaire de LibGD. Il doit être considéré comme obsolète et ne doit être utilisé qu'à des fins
de développement et de test.
Structure d'un fichier image GD
- Entête de fichier
- Entête de couleur (couleurs vraies ou palette)
- Données d'image
Tous les nombres sont entreposés au format big-endian. Notez que toutes les sorties GD sont effectuées au format GD 2.x (à ne pas confondre avec
le format GD2), mais les entrées peuvent également être au format GD 1.x.
Structure de l'entête du fichier GD 1.x
Champ |
Taille |
width |
1 mot |
height |
1 mot |
Entête de couleur GD 1.x (palette uniquement)
Champ |
Taille |
count |
1 octet (le nombre de couleurs de palette utilisées) |
transparent |
1 mot (257 signale l'absence de transparence) |
palette |
256 x 3 octets (RGB triplets) |
Structure de l'entête du fichier GD 2.x
Champ |
Taille |
signature |
1 mot («\xFF\xFE» pour truecolor, «\xFF\xFF» pour palette) |
width |
1 mot |
height |
1 mot |
Entête de couleur d'image truecolor GD 2.x
Champ |
Taille |
truecolor |
1 octet (toujours «\001») |
transparent |
1 dword (couleur ARGB); «\377\377\377\377» signifie qu'aucune couleur transparente n'est définie |
Entête de couleur de l'image de la palette GD 2.x
Champ |
Taille |
truecolor |
1 octet (toujours «\0») |
count |
1 mot (le nombre de couleurs de palette utilisées) |
transparent |
1 double mot (index de palette); « \377\377\377\377 » signifie qu'aucune couleur transparente n'est définie |
palette |
256 doubles mots (couleurs RGBA) |
Données d'image
Données de pixels séquentielles ; rangée principale de haut en bas, de gauche à droite :
- 1 octet par pixel pour les images en palette
- 1 double mot (ARGB) par pixel pour les images en vraies couleurs
Liste des fonctions
Nom |
Description |
gdImageCreateFromGd |
Cette fonction est utilisée pour charger une image à partir d'un fichier au format GD. Elle lit les données d'un fichier GD existant et crée une nouvelle image compatible avec LibGD. Cela permet de manipuler et de modifier les images précédemment enregistrées dans le format natif de la bibliothèque. Le format GD est principalement utilisé pour stocker des images compressées tout en maintenant leur compatibilité avec la bibliothèque. |
gdImageCreateFromGdPtr |
Cette fonction est similaire à la précédente, mais elle charge une image à partir de données en mémoire au lieu d'un fichier. Cela est particulièrement utile lorsque les données GD sont stockées dans des flux ou des tampons en mémoire, comme lors de la manipulation d'images téléchargées ou reçues via un réseau. |
gdImageCreateFromGdCtx |
Cette fonction permet de lire une image GD via un contexte d'entrée/sortie personnalisé (gdIOCtx). Le contexte gdIOCtx peut être utilisé pour lire des données GD provenant de sources personnalisées, comme un socket réseau ou un flux de données non standard. Cela offre une flexibilité supplémentaire en abstraction des sources d'entrée. |
gdImageGd |
Cette fonction permet d'enregistrer une image au format GD dans un fichier. Après avoir manipulé une image avec LibGD, vous pouvez utiliser cette fonction pour la sauvegarder dans le format GD, qui est compact et efficace pour certaines utilisations internes ou pour réimporter plus tard dans LibGD. |
gdImageGdPtr |
Cette fonction est utilisée pour obtenir une image GD sous forme de données en mémoire. Elle renvoie un pointeur vers un tampon contenant les données GD, ainsi que la taille de ce tampon. Cela permet de transmettre ou d'entreposer les données sans passer par un fichier physique. |
gdImageCreateFromGd est appelé pour charger des images à partir de fichiers au format GD. Appelez gdImageCreateFromGd avec un pointeur
déjà ouvert vers un fichier contenant l'image souhaitée au format de fichier GD, qui est spécifique à GD et destiné à un chargement très rapide. (Il n'est pas destiné à
la compression ; pour la compression, utilisez PNG ou JPEG.)
gdImageCreateFromGd renvoie un gdImagePtr à 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 au format GD). gdImageCreateFromGd 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.
Variantes
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
- gdImagePtr im;
- FILE *in;
- in = fopen("mygd.gd", "rb");
- im = gdImageCreateFromGd(in);
- fclose(in);
- /* ... Utiliser l'image ... */
- gdImageDestroy(im);
Paramètre
Nom |
Description |
size |
Ce paramètre permet d'indiquer la taille des données GD en octets. |
data |
Ce paramètre permet d'indiquer les données GD (c'est-à-dire le contenu d'un fichier GIF). |
Lit les données GD depuis la mémoire. Voir gdImageCreateFromGd.
Lit une image GD via une structure gdIOCtx. Voir gdImageCreateFromGd.
gdImageGd
void gdImageGd(gdImagePtr im, FILE *outFile);
|
Cette fonction permet d'enregistrer une image au format GD dans un fichier. Après avoir manipulé une image avec LibGD, vous pouvez utiliser
cette fonction pour la sauvegarder dans le format GD, qui est compact et efficace pour certaines utilisations internes ou pour réimporter plus tard dans LibGD.
Cette fonction est utilisée pour obtenir une image GD sous forme de données en mémoire. Elle renvoie un pointeur vers un tampon contenant les
données GD, ainsi que la taille de ce tampon. Cela permet de transmettre ou d'entreposer les données sans passer par un fichier physique.
Dernière mise à jour : Mardi, le 8 octobre 2024