1

Apres une petite recherche sur internet, j'ai réussi à trouver une explication du format GIF 256 couleurs non animé, que j'ai réussi à mettre en place, a part un seul point : le block dans lequel les données (les unsigned char du numéro de la couleur pour chaque pixel de l'image) sont compressées en LZW... Quelqu'un aurait-il une bonne routine rapide retournant une liste d'unsigned char (ou un pointeur vers une liste) correspondant à des unsigned char compréssé en LZW ?
préssée en LZW           // à rajouter      fclose(fptr);      return true; } pour ceux que ca interesse, le reste de ma procédure de sauvergarde de gif est ici : // Fonction écrite par Laurent Minguet // width   : lareur de l'image  // height  : hauteur de l'image // fname   : nom du fichier de destination // image   : pointeur vers un tableau contenant pour chaque pixel le numéro de la couleur associée // palette : pointeur vers un tableau contenant pour chaque couleur les composantes RVB // indice de la couleur transparente bool SaveGifFile(long width, long height, char * fname, unsigned char * image, unsigned char * palette, unsigned char c_trans) {      FILE *fptr;      unsigned long x, y;      long s,ss;      // Ouverture du fichier      if ((fptr = fopen(fname,"wb")) == NULL) { return false; }      // Format GIF      fprintf(fptr,"GIF");      // Version 89a      fprintf(fptr,"89a");      // Block Descripteur logique           // Largeur           s = width;           ss=char(s-long(floor(s/256))*256);s = long(floor(s/256));fprintf(fptr,"%c",ss);           ss=char(s-long(floor(s/256))*256);s = long(floor(s/256));fprintf(fptr,"%c",ss);           // Hauteur           s = height;           ss=char(s-long(floor(s/256))*256);s = long(floor(s/256));fprintf(fptr,"%c",ss);           ss=char(s-long(floor(s/256))*256);s = long(floor(s/256));fprintf(fptr,"%c",ss);                 // Indicateur de résolution.           // Bit 7     1=palette de couleur globale disponible.           // Bit 6-4     Profondeur de couleur -1            // Bit 3     Réservé (0)            // Bit 2-0     Nombre de bits/pixel -1 (8 bits car 256 couleurs -> 111)           fprintf(fptr,"%c",135);     // 0b10000111           // Couleur de fond (dans la palette)           fprintf(fptr,"%c",c_trans);           // Bit 7     Ordre de classement de la palette globale            // Bit 6-0     Pixel aspect ratio ?            fprintf(fptr,"%c",0);     // 0b00000000      // Palette 256 couleurs      for (x=0;x<256*3;x++)           fprintf(fptr,"%c",palette[x]);      // Block Descripteur d'image           // début du block           fprintf(fptr,"%c",0x2C);           //Abscisse X du coin supérieur gauche de l'écran logique.            fprintf(fptr,"%c%c",0, 0);           //Abscisse Y du coin supérieur gauche de l'écran logique.            fprintf(fptr,"%c%c",0, 0);           // Largeur           s = width;           ss=char(s-long(floor(s/256))*256);s = long(floor(s/256));fprintf(fptr,"%c",ss);           ss=char(s-long(floor(s/256))*256);s = long(floor(s/256));fprintf(fptr,"%c",ss);           // Hauteur           s = height;           ss=char(s-long(floor(s/256))*256);s = long(floor(s/256));fprintf(fptr,"%c",ss);           ss=char(s-long(floor(s/256))*256);s = long(floor(s/256));fprintf(fptr,"%c",ss);                 // Indicateur.            // Bit 7          1=palette locale disponible            // Bit 6          1=image entrelacée            // Bit 5          ordre de placement de la palette locale.            // Bit 3-4          Réservé (0)            // Bit 0-2          Nombre de bits/pixel -1            fprintf(fptr,"%c",0);     // 0b00000000      // Image com

merci d'avance
Ancien pseudo : lolo

2

personne ne peut m'aider ? HELP
Ancien pseudo : lolo

3

je ne suis pas sûr que bcp de monde se soit amusé à implémenter la décompression LZW du GIF (p-ê des variantes, mais probablement celle utilisée spécifiquement dedans)

et qu'est-ce qui ne te convient pas dans les libs de décompression GIF existantes ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

4

et aussi... pourquoi GIF ?
So much code to write, so little time.

5

en fait, premier point, je ne cherche pas à decompresser du gif, mais à le compresser...

deuxième point : j'ai besoin du gif car il me faut un format d'image en 256 couleurs avec une couleur transparente, rapide à charger d'un point de vue internet, et sans perte -> il n'y a que le GIF

enfin, pourquoi faire : j'ai créé un site, et je suis en train de développer un logiciel de création de skin. Il est fini, a part l'exportation des imgs en gif... voili voilou

EN fait, je suis tout a fait prenneur de toute librairie permetant de sauver direct du gif, mais j'en ai pas trouvé qui parchait correctement... snif....
Ancien pseudo : lolo

6

lolo
: deuxième point : j'ai besoin du gif car il me faut un format d'image en 256 couleurs avec une couleur transparente, rapide à charger d'un point de vue internet, et sans perte -> il n'y a que le GIF

Le PNG, tu connais? Ça compresse mieux et ça gère tout ce que tu veux (et plus). Le GIF est obsolète.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

Kevin Kofler
: Le GIF est obsolète.

rotfl
en tout cas les animations GIF sont les seules à être vaguement supportées...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

8

lolo
: EN fait, je suis tout a fait prenneur de toute librairie permetant de sauver direct du gif, mais j'en ai pas trouvé qui parchait correctement... snif....

c'est tout-à-fait possible que ça se trouve difficilement, étant donné que c'était protégé par un brevet jusqu'à récemment... les trucs genre gimp permettent pas de sauver en gif ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

9

je ne sais pas

en fait, j'essaye de compresser en LZW, mais le pb, ce que je n'ai pas bien compris combien de bits on avait droit pour définir le dico dans le LZW utilisé par le gif(sur certains sites, ils disent 12, d'autres 10, et enccore dans d'autres, ils disent que c'est au choix mais qu'il faut l'indiquer dans l'entete du gif, alors que je n'ai pas vu ou...)... il ne me manque que cette donnée, et normalement j'aurais fini ma fnc de sauvegarde de gif

HELP ?
Ancien pseudo : lolo

10

euh par contre des libs de DEcompression gif open-source tu dois en trouver un paquet, donc tu dois pouvoir en déduire quelle est la taille du dico, où c'est dit dans le header, etc...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

11

po bete... LoL... fo que je trouve ca... ca doit y être sur CCP France... Let's Go !
Ancien pseudo : lolo

12

fait chier, j'ai bien trouvé des prgms, mais ils utilisent des librairies déjà compréssées -> impossible de savoir comment elles marchent...
Ancien pseudo : lolo

13

reverse ingeenering
happy> décompile, trace les dll etc.
(sosu win, y'a âs une fct api qui et permet de créer des gif ?)

14

lolo> euh, ça m'étonnerait très très très très très très très très très franchement qu'il n'y ait pas la moindre lib de décompression GIF open-source... regarde ce qu'utilisent mozilla ou konqueror, par exemple...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

15

ca y est, c bon, g réussi à finir ma classe de sauvegarde GIF... j'ai trouvé mon pb : le dico du LZW utilisé n'est pas à n° de bit fixe mais évolutif suivant le besoin de l'img au cours de l'encodage ...
LoL

ben merci à tous pour votre aide wink
Ancien pseudo : lolo

16

Ceci dit je sui d'accord avec kevin: le PNG est plus efficace, permet plus de choses, il est totalement libre et tu n'auras aucune difficulté a trouver une lib : libpng
avatar

17

c bon, merci, g réussit à coder ma librairie de sauvegarde gif smile
Ancien pseudo : lolo

18

Y'a le PNG, mais aussi le MNG (PNG animé avec sous-commandes façon Flash) et le JNG, JPEG avec transparence :

PNG : http://www.libpng.org
MNG/JNG : http://www.libmng.com

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

19

T'as pas juste un peu l'impression d'avoir remonté un topic de 1 mois dont la discussion est terminée pour poster quelque chose qui ne répond même pas au problème là ? neutral
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

20

./14 > ben c'est ce que fait libungif non ? c'est une des libs standard linux...
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#