cs_mano972
Messages postés7Date d'inscriptiondimanche 13 mars 2011StatutMembreDernière intervention26 avril 2011
-
22 avril 2011 à 20:19
cs_mano972
Messages postés7Date d'inscriptiondimanche 13 mars 2011StatutMembreDernière intervention26 avril 2011
-
26 avril 2011 à 11:46
Bonjour c'est assez urgent, je bloque pour un fonction qui est de réduire la taille de l'image par 2.
Je vous montre ceux que j'ai déjà fais.
unsigned short int x,y; // variables d'itération
float valeur;
unsigned short int Largeur;
unsigned short int Hauteur;
string Fichiers,Fichierss,ligne;
t_image ppm;
cout << "Entrer le nom de l'image ";
cin >>Fichiers;
ifstream fichier(Fichiers.c_str()); // ouverture du fichier en lecture
if(fichier) // si l'ouverture a réussi
{ //on recupere les information du fichier(hauteur,largeur etc..)
getline(fichier,ligne);
ppm.chaine1=ligne;
getline(fichier,ligne);
ppm.chaine2=ligne;
fichier>>ppm.largeur;
Largeur=ppm.largeur;
fichier>>ppm.hauteur;
Hauteur=ppm.hauteur;
fichier>>ppm.valmax;
for( y=0; y>valeur;
ppm.pixel[x][y].r=valeur;
fichier>>valeur;
ppm.pixel[x][y].v=valeur;
fichier>>valeur;
ppm.pixel[x][y].b=valeur;
}
}
cout <<"\n" << "Lecture de l'image terminee !\n" ;
fichier.close();
}
else
{
cerr << "le fichier est introuvable !" << endl;
}
cout<<"enregistrer en quel nom"<< endl;
cin >> Fichierss;
ofstream fichiers(Fichierss.c_str()); //déclaration du flux et ouverture du fichier
if(fichiers) // si l'ouverture a réussi
{ // instruction,les variale que je vais mettre dans le "fichiers"
fichiers<<ppm.chaine1<<endl;
fichiers<<ppm.chaine2<<endl;
fichiers<<ppm.largeur<<endl;
fichiers<<ppm.hauteur<<endl;
fichiers<<ppm.valmax<<endl;
for (y = 0; y < ppm.hauteur; y++)
{
for (x = 0; x < ppm.largeur; x++)
{ // ici le code concernant le traitement d'images
fichiers<<ppm.pixel[x][y].r<<endl;
fichiers<<ppm.pixel[x][y].v<<endl;
fichiers<<ppm.pixel[x][y].b<<endl;
}
}
fichiers.close(); // on referme le fichier
}
else
cerr << "Desole, mais le fichier ne peut etre ouvert en ecriture..." << endl;
}
J'ai tenté de divisé par 2 le ppm.largeur et le ppm.hauteur , sa marche mais le résultat donné n'est pas ceux que je voulais car au final l'image ne ressemble a rien, j'aimerais garder les même proportion. J'ai essayé de cherché sur internet mais je ne comprenais pas.
Donc comment puis je manipulé les variables.Merci.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 26 avril 2011 à 11:17
Salut,
Si tu divises par 2 la largeur et la longueur de ton image, tu garderas les mêmes proportions...
Il suffit donc d’écrire un pixel sur deux en x et en y...
fichiers<<ppm.chaine1<<endl;
fichiers<<ppm.chaine2<<endl;
fichiers<<ppm.largeur/2<<endl;
fichiers<<ppm.hauteur/2<<endl;
fichiers<<ppm.valmax<<endl;
for (y = 0; y < ppm.hauteur; y+=2)
{
for (x = 0; x < ppm.largeur; x+=2)
{ // ici le code concernant le traitement d'images
fichiers<<ppm.pixel[x][y].r<<endl;
fichiers<<ppm.pixel[x][y].v<<endl;
fichiers<<ppm.pixel[x][y].b<<endl;