Bon ca avance mais ca plante toujour !!!
Tout d'abord faut savoir que ca va boucler environ 300 000 fois donc déja en partant ...
Le code suivant marche pas
//Cette fonction compte le nombre de pixel différent entre deux images recu en parametre
int ComptePixelDifferent(const std::string sFichierAbsolut1,const std::string sFichierAbsolut2)
{
BITMAPFILEHEADER bmfh1;
BITMAPFILEHEADER bmfh2;
int i;
FILE *image1;
FILE *image2;
//Ouverture des deux fichiers
image1=fopen(sFichierAbsolut1.c_str(),"r+b");
image2=fopen(sFichierAbsolut2.c_str(),"r+b");
fseek(image1, SEEK_SET, 0) ;
fseek(image2, SEEK_SET, 0) ;
fread(&bmfh1, sizeof(bmfh1), 1, image1) ;
fread(&bmfh2, sizeof(bmfh2), 1, image2) ;
unsigned char* pixel1;
unsigned char* pixel2;
pixel1 = new unsigned char [bmfh1.bfSize];
pixel2 = new unsigned char [bmfh2.bfSize];
fread(pixel1,1,bmfh1.bfSize,image1);
fread(pixel2,1,bmfh2.bfSize,image2);
//Boucle pour faire tout les pixel
for(i=1;i<bmfh1.bfSize-bmfh1.bfOffBits-2;i+=3)
{
if((pixel1[i]!=pixel2[i])||(pixel1[i+1]!=pixel2[i+1])||(pixel1[i+2]!=pixel2[i+2]))
{
printf("\nT");
}
}
//Ferme les deux fichiers
fclose(image1);
fclose(image2);
//Delete
delete pixel1;
delete pixel2;
//Retour du nombre de pixel différent
return 0;
}
Ce code marche mais fait pas ce qu'il faut
//Cette fonction compte le nombre de pixel différent entre deux images recu en parametre
int ComptePixelDifferent(const std::string sFichierAbsolut1,const std::string sFichierAbsolut2)
{
BITMAPFILEHEADER bmfh1;
BITMAPFILEHEADER bmfh2;
int i;
FILE *image1;
FILE *image2;
//Ouverture des deux fichiers
image1=fopen(sFichierAbsolut1.c_str(),"r+b");
image2=fopen(sFichierAbsolut2.c_str(),"r+b");
fseek(image1, SEEK_SET, 0) ;
fseek(image2, SEEK_SET, 0) ;
fread(&bmfh1, sizeof(bmfh1), 1, image1) ;
fread(&bmfh2, sizeof(bmfh2), 1, image2) ;
unsigned char* pixel1;
unsigned char* pixel2;
pixel1 = new unsigned char [bmfh1.bfSize];
pixel2 = new unsigned char [bmfh2.bfSize];
fread(pixel1,1,bmfh1.bfSize,image1);
fread(pixel2,1,bmfh2.bfSize,image2);
//Boucle pour faire tout les pixel
for(i=1;i<bmfh1.bfSize-bmfh1.bfOffBits-2;i+=3)
{
if((pixel1[i]!=pixel2[i])||(pixel1[i+1]!=pixel2[i+1])||(pixel1[i+2]!=pixel2[i+2]))
{
}
printf("\nT");
}
//Ferme les deux fichiers
fclose(image1);
fclose(image2);
//Delete
delete pixel1;
delete pixel2;
//Retour du nombre de pixel différent
return 0;
}
Si on remarque bien , la seul différence est que le printf est en dehors du if...