Section courante

A propos

Section administrative du site

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

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 :

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

gdImagePtr gdImageCreateFromGd(FILE *inFile);

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

  1. gdImagePtr im;
  2. FILE *in;
  3. in = fopen("mygd.gd", "rb");
  4. im = gdImageCreateFromGd(in);
  5. fclose(in);
  6. /* ... Utiliser l'image ... */
  7. gdImageDestroy(im);

gdImageCreateFromGdPtr

gdImagePtr gdImageCreateFromGdPtr(int size, void *data);

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.

gdImageCreateFromGdCtx

gdImagePtr gdImageCreateFromGdCtx(gdIOCtxPtr in);

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.

gdImageGdPtr

void * gdImageGdPtr(gdImagePtr im, int *size);

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