Salut à tous,
Cela fait maintenant quelques jours que j'essaie de résoudre un petit problème mais je n'y parviens toujours pas et je viens demander un peu d'aide aux âmes charitables se trouvant sur ce forum.
J'ai déjà fait maints et maints recherches (google et autres et même sur ce forum) sans trouver une réponse appropriée.
Voilà mon problème:
J'ai besoin de charger un fichier PGM dans une zone mémoire afin de faire des traitements d'image dessus.
Pour cela, j'ouvre un fstream sur mon image, je lit l'entête qui se compose ainsi
P5
x y
z
avec P5 = format du fichier (ici : contient de l'ASCII)
x et y la taille de l'image (ex : 640 480)
z la plage de codage du niveau de gris (généralement 255)
Ensuite viennent les données ...
Je les charge mais mon flot se coupe au milieu du chargement.
J'ai regardé a l'aide d'un éditeur héxa jusqu'a quel moment il parvient à charger et il plante lorsqu'il rencontre le caractère 1B ou 0D qui correspondent aussi aux codes ESC et CR (echap et retour à la ligne)
Comment faire pour éviter que ces caractères soit considerer comme ESC et CR mais juste leur valeur correspondant en décimal ... ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ifstream fichier(filename); string trash; unsigned int nbc, nbl; if (fichier) { fichier>>trash; if (trash != "P5") { cout<<"Format non reconnu, abandon !"<<endl; exit(0); } fichier>>nbc; fichier>>nbl; fichier>>trash; allocate(nbc, nbl); // Méthode d'allocation de zone mémoire fichier.read((char *)((*this)[0]),nc*nl*sizeof(T)); // T etant le type de données (ici unsigned char) fichier.close(); }
Partager