Bonjour,
je voudrais modifier l'ordre de données contenues dans fichier .ppm (fichier image contenant des pixels).
Il faut une méthode pour que le nombre de colonnes devienne le nombre de lignes et vice-verca.
exemple d'un fichier original:
4 représente le nombre de colonnes et 1 représente le nombre de lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 P3 4 1 255 10 11 12 20 21 22 30 31 32 40 41 42
fichier après rotation (255 le nombre de pixels maximum)
remarquez que c'est l'inverse qui devra se produire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 P3 1 4 255 10 11 12 20 21 22 30 31 32 40 41 42
quelle est la procédure a suivre pour que ce changement de colonnes se fasse pour n'importe quel fichier donnée ? que faudra-t-il utiliser ?
j'ai écris la fonction de lecture qui récupère les 3 premières valeures dans une structure, et enregistre le contenu dans un vecteur.
mon probleme reside dans comment je pourrais manipuler les informations dans ce vecteur.
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
23
24 PPM_Primitive *read_PPM(string fn){ PPM_Primitive p; vector <string> lines(0); ifstream infile (fn.c_str()); string s; int i; if (infile.is_open()){ infile >> p.p3 >> p.rows >> p.cols >> p.maxpixel; if (p.p3=="p3" || p.p3 =="P3"){ while (!infile.eof()) { getline(infile, s); if (!infile.fail()) lines.push_back(s); } cerr << "p3: "<< p.p3<< "\nrows: " << p.rows << "\ncols: "<< p.cols << "\nmaxpixel: "<< p.maxpixel<<"\n"; for (i = 0; i <= lines.size()-1; i++) { cout << lines[i] << endl; } } else cerr <<"Bad PPM file - first word is not P3\n"; } else cerr << "Couldn't open " << fn << ".\n"; }
Merci.
Partager