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:
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
4 représente le nombre de colonnes et 1 représente le nombre de lignes
fichier après rotation (255 le nombre de pixels maximum)

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
remarquez que c'est l'inverse qui devra se produire

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.

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";
}
mon probleme reside dans comment je pourrais manipuler les informations dans ce vecteur.

Merci.