sbbtn KanYenNamar - YaMalabar | skeye a écrit :
Code :
- int
- CImage::readPGM(char * filename)
- {
- FILE * f;
-
- //ouverture du fichier
- if(!(f = fopen(filename, "r" )))
- {
- printf("error loading file %s\n", filename);
- return 0;
- }
-
- //buffer de lecture
- char *buff = (char *)malloc(BUFFER_SIZE * sizeof(char));
- //lecture du magic number
- readline(buff,f);
-
- //lecture des dimensions
- readline(buff,f);
- int h,l;
- sscanf(buff, "%d %d", &l, &h);
- this->setHeight(h);
- this->setLength(l);
- this->val = (int*)malloc(l * h * sizeof(int));
-
- //Lecture de la valeur max
- int max;
- readline(buff,f);
- sscanf(buff, "%d\n", &max);
- this->max = max;
-
- //Lecture des donnees
- for(int i = 0; i < this->getSize(); i++)
- {
- readline(buff,f);
- this->setVal(i, atoi(buff));
- }
- fclose(f);
- return 1;
- }
|
C'est un bout de code que j'utilise pour faire quelques tests...
A toi de deviner comment sont foutues la classe CImage et l fonction readline.
Attention, c'est pas forcément exempt de tout défaut!C'est juste un exemple qui devrait marcher pas trop mal.
Pour le PPM c'est pareil sauf que tu lis 3 lignes par pixel...
[edit]
Attention pour le readline, il peut y avoir des commentaires dans le fichier (par ex. gimp en met systématiquement).
Ils sont identifiés par le caractère # en début de ligne.
|
Ok, c cool, je vais me creuser 1 peu la tete
|