etudinge
Messages postés1Date d'inscriptionjeudi 5 janvier 2012StatutMembreDernière intervention 5 janvier 2012
-
5 janv. 2012 à 18:20
jmwurth
Messages postés2933Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention23 juin 2013
-
8 janv. 2012 à 10:56
Bonjour, mon professeur d'info m'a fournit le code c++ suivant qui a pour but de modifier une mage en format pgm. Mon problème est le suivant lorsque l'image modifier a étét enregistrer elle apparait comme sans format et je suis donc dans l'incapacité de visionner l'image modifier.
//initialisation des diffÈrentes fonctions
string ident;
int largeur, hauteur, pixel_maxi, i, j, tab[600][600];
//fonction lecture
void lecture(){
string nom_image; //variable du nom de l'image
cout << "Entrez le nom de l'image" << endl;
cin >> nom_image;
ifstream fin (nom_image.c_str());
fin >> ident;
fin >> largeur >> hauteur;
fin >> pixel_maxi;
for (i = 0; i<hauteur ;i++){
for (j = 0; j<largeur; j++){
fin >> tab[i][j];
}
}
cout<<"Image chargee"<<endl;
}
// fonction ecrire
void ecrire(){
string image_sauvegardee;
cout << "Entrez le nom du fichier de sauvegarde" << endl;
cin >> image_sauvegardee;
ofstream fout (image_sauvegardee.c_str());
fout << ident << endl;
fout << largeur << " " << hauteur << endl;
fout << pixel_maxi << endl;
for (i=0 ; i<hauteur ; i++){
for (j=0 ; j<largeur ; j++){
fout << tab[i][j] << " ";
}
fout<<endl;
}
}
//fonction luminositÈ
void luminosite(){
int degre;
cout<<"Introduisez la valeur de votre changement de luminosite " << endl;
cout<<"(Introduisez un nombre negatif si vous voulez noircir.)" << endl;
cin>> degre;
for (i=0 ; i<hauteur ; i++){ //avec ces deux boucles for on va pouvoir rajouter ou enlever un certain nombre # tous les pixels
for (j=0 ; j<largeur ; j++){
tab[i][j]=tab[i][j] + degre;
if (tab[i][j]<0){
tab[i][j]=0;
}
else if (tab[i][j]>255)
tab[i][j]=255;
}
}
}
//fonction decoupe
void decoupe(){
int x,y;
// x = position en x # partir de laquelle la matrice sera dÈcoupÈe
//y = position en y # partir de laquelle la matrice sera dÈcoupÈe
cout<<"Le processus de decoupage se fait ainsi :"<<endl;
cout<<"1) Vous choisissez le point sur la matrice a partir duquel aura lieu la decoupe (x et y)"<<endl;
cout<<"2) Vous indiquez la largeur en valeur absolue qu'aura votre matrice (de gauche a droite a partir du point choisit plus haut)."<<endl;
cout<<"3) Vous indiquez la hauteur en valeur absolue qu'aura votre matrice (de haut en bas a partir du point choisit plus haut)."<<endl<<endl;
cout<<"Introduisez l'endroit o? commencer la dÈcoupe (x,y)"<<endl;
cin >> x >> y;
cout<<"Introduisez la largeur et la hauteur de la nouvelle image"<<endl;
cin >> largeur >> hauteur;
for (i=y ; i<(y+hauteur) ; i++){
for (j=x ; j<(x+hauteur) ;j++){
tab[i-y][j-x]=tab[i][j];
}
}
cout<<"Image decoupee!"<<endl;
}
//fonction principale
int main (int argc, char * const argv []) {
int numero;
// numero = le chiffre entrÈ par l'utilisateur en fonction de son choix dans le menu
cin >> numero;
switch (numero){
case 0: lecture (); cout << endl; break; // on fait appel # la fonction lecture
case 1: ecrire(); cout<< endl; break; // on fait appel # la fonction ecrire
case 2: luminosite(); cout << endl; break; // on fait appel # la fonction luminosite
case 3: decoupe(); cout << endl; break; // on fait appel # la fonction decoupe
case 4: negatif(); cout << endl; break; // on fait appel # la fonction negatif
case 5: quitter(); cout << endl; break; // on fait appel # la fonction quitter
}
if (numero>5 || numero<0){
cout << "vous avez tappe un mauvais chiffre" <<endl;
cout << endl;
}
} while (numero != 5);
system("pause");
return 0;
}