gdImageGifAnimAdd |
Ajout d'une image de Gif animé |
---|---|
LibGD |
Syntaxe
void gdImageGifAnimAdd(gdImagePtr im, FILE *outFile, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm); |
Paramètre
Nom | Description |
---|---|
im | Ce paramètre permet d'indiquer l'image à ajouter. |
outfile | Ce paramètre permet d'indiquer le fichier de sortie FILE* en cours d'écriture. |
LocalCM | Ce paramètre permet d'indiquer le drapeau. Si 1, utilisez une palette de couleurs locale pour cette image. |
LeftOfs | Ce paramètre permet d'indiquer le déplacement gauche de l'image dans le cadre. |
TopOfs | Ce paramètre permet d'indiquer le déplacement supérieur de l'image dans le cadre. |
Delay | Ce paramètre permet d'indiquer le délai avant la prochaine image (en 1/100 secondes). |
Disposal | Ce paramètre permet d'indiquer le MODE : Comment traiter cette image lorsque la suivante se charge. |
previm | Ce paramètre permet d'indiquer NULL ou un pointeur vers l'image précédente écrite. |
Retour
Rien
Description
Cette fonction permet d'ajouter une image à une animation GIF existante.
Remarques
- Cette fonction écrit des images d'animation GIF dans une animation GIF, ayant été initialisée avec gdImageGifAnimBegin. Avec LeftOfs et TopOfs, vous pouvez placer cette image dans un décalage différent de (0,0) à l'intérieur de l'écran d'image tel que défini dans gdImageGifAnimBegin. Le délai entre l'image précédente et cette image est en unités de 1/100 s. Disposal est généralement gdDisposalNone, ce qui signifie que les pixels modifiés par cette image doivent rester sur l'écran lorsque l'image suivante commence à s'afficher, mais peut également être gdDisposalUnknown (non recommandé), gdDisposalRestoreBackground (restaure la première couleur allouée de la palette globale) ou gdDisposalRestorePrevious (restaure l'apparence de la zone affectée avant le rendu de l'image). Seul gdDisposalNone est un choix judicieux pour la première image. Si previm est passé, l'optimiseur GIF intégré utilisera toujours gdDisposalNone quel que soit le paramètre Disposal.
- La définition de l'indicateur LocalCM sur 1 ajoute une palette locale pour cette image à l'animation. Sinon, la palette globale est supposée et l'utilisateur doit s'assurer que les palettes correspondent. Utilisez gdImagePaletteCopy pour le faire.
- L'optimisation automatique est activée en donnant l'image précédente comme paramètre. Cette fonction compare ensuite les images et écrit uniquement les pixels modifiés dans la nouvelle image de l'animation. Le paramètre Disposal pour les animations optimisées doit être défini sur 1, également pour la première image. Les paramètres LeftOfs et TopOfs sont ignorés pour les images optimisées. Pour obtenir une bonne optimisation, il est généralement préférable d'utiliser une seule carte de couleurs globale. Pour permettre à gdImageGifAnimAdd de compresser les pixels inchangés via l'utilisation d'une couleur transparente, l'image doit inclure une couleur transparente.
Variantes
gdImageGifAnimAddCtx génère ses données via une structure gdIOCtx.
gdImageGifAnimAddPtr génère ses données dans une mémoire tampon qu'il renvoie.
Exemple
- {
- gdImagePtr im, im2, im3;
- int black, white, trans;
- FILE *out;
-
- im = gdImageCreate(100, 100); /* Créer l'image */
- white = gdImageColorAllocate(im, 255, 255, 255); /* Attribuer l'arrière-plan */
- black = gdImageColorAllocate(im, 0, 0, 0); /* Attribuer la couleur du dessin */
- trans = gdImageColorAllocate(im, 1, 1, 1); /* trans vide pour la compression */
- gdImageRectangle(im, 0, 0, 10, 10, black); /* Dessiner un rectangle */
-
- out = fopen("anim.gif", "wb"); /* Ouvrir le fichier de sortie en mode binaire */
- gdImageGifAnimBegin(im, out, 1, 3); /* Écrire un GIF hdr, une carte clr globale, des boucles */
- /* Écrire la première image. Pas de palette de couleurs locale. Délai = 1 s */
- gdImageGifAnimAdd(im, out, 0, 0, 0, 100, 1, NULL);
-
- /* construire le deuxième cadre */
- im2 = gdImageCreate(100, 100);
- (void)gdImageColorAllocate(im2, 255, 255, 255); /* Fond blanc */
- gdImagePaletteCopy (im2, im); /* Assurez-vous que la palette est identique */
- gdImageRectangle(im2, 0, 0, 15, 15, black); /* Dessine quelque chose */
- /* Autoriser la compression d'animation avec des pixels transparents */
- gdImageColorTransparent (im2, trans);
- gdImageGifAnimAdd(im2, out, 0, 0, 0, 100, 1, im); /* Ajouter un deuxième cadre */
-
- /* construire le troisième cadre */
- im3 = gdImageCreate(100, 100);
- (void)gdImageColorAllocate(im3, 255, 255, 255); /* fond blanc */
- gdImagePaletteCopy (im3, im); /* Assurez-vous que la palette est identique */
- gdImageRectangle(im3, 0, 0, 15, 20, black); /* Dessine quelque chose */
- /* Autoriser la compression d'animation avec des pixels transparents */
- gdImageColorTransparent (im3, trans);
- /* Ajoutez le troisième cadre en le compressant par rapport au deuxième */
- gdImageGifAnimAdd(im3, out, 0, 0, 0, 100, 1, im2);
- gdImageGifAnimEnd(out); /* Marqueur de fin, identique à putc(';', out); */
- fclose(out); /* Ferme le fichier */
-
- /* Détruire les images */
- gdImageDestroy(im);
- gdImageDestroy(im2);
- gdImageDestroy(im3);
- }
Dernière mise à jour : Mercredi, le 29 Janvier 2025