Manipulation d'un fichier de donnees
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:
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:
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:
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.