_Musca
Touriste
Bonjour à tous,
Dans le cadre d'un cours d'informatique à l'ULB, on doit faire un petit programme en c++, les profs nous demandent de pouvoir charger une image .pgm, de pouvoir la sauvergarder, de faire son négatif, de la découper, et d'augmenter ou diminuer la luminosité.
Donc voilà j'ai fais mon programme, il fonctionne tout à fait bien, mais je sais pas si je l'ai fais de la meilleure façon.
Donc si vous pouviez jeter un petit coup d'oeil pour voir ce que je pourrais changer afin de l'améliorer
Merci beaucoup
Dans le cadre d'un cours d'informatique à l'ULB, on doit faire un petit programme en c++, les profs nous demandent de pouvoir charger une image .pgm, de pouvoir la sauvergarder, de faire son négatif, de la découper, et d'augmenter ou diminuer la luminosité.
Donc voilà j'ai fais mon programme, il fonctionne tout à fait bien, mais je sais pas si je l'ai fais de la meilleure façon.
Donc si vous pouviez jeter un petit coup d'oeil pour voir ce que je pourrais changer afin de l'améliorer
Merci beaucoup
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//initialisation des différentes fonctions
string ident;
int largeur, hauteur, pixel_maxi, i, j, tab[600][600];
//ident = Variable de début des fichiers pgm ou ppm
//largeur = largeur de la matrice du fichier pgm
//hauteur = hauteur de la matrice du fichier pgm
// pixel_maxi = chuiffre maximum qu'un pixel peut avoir
//i = ligne de la matrice
//j = colone de la matrice
//tab = tableau dans lequel on va placer les chiffres des pixels
//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[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[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[j]=tab[j] + degre;
if (tab[j]<0){
tab[j]=0;
}
else if (tab[j]>255)
tab[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[j];
}
}
cout<<"Image decoupee!"<<endl;
}
//fonction negatif
void negatif(){
for (i=0 ; i<hauteur ; i++){
for (j=0 ; j<largeur ; j++){
tab[j] = (255)-(tab[j]);
}
}
cout << "Negatif produit" << endl;
}
//fonction quitter
void quitter() {
cout << "Au revoir" << 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
do {
cout << "\t \t Menu" << endl;
cout << endl;
cout << "0) Charger une image" << endl;
cout << "1) Sauvegarder une image" << endl;
cout << "2) Changer la luminosite" << endl;
cout << "3) Decouper l'image" << endl;
cout << "4) Produire le negatif" << endl;
cout << "5) Quitter" << endl;
cout <<endl;
cout << " Choisissez votre numero" << endl;
cout << endl;
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;
}