cs_mavric
Messages postés13Date d'inscriptiondimanche 6 janvier 2002StatutMembreDernière intervention28 septembre 2003
-
6 mars 2002 à 12:08
Croqmort
Messages postés95Date d'inscriptionmercredi 5 décembre 2001StatutMembreDernière intervention27 juin 2006
-
7 mars 2002 à 09:10
bonjour ,
je cherche a comparer 2 fichiers bmp ,mais de facon optimisé , pour le moment mon prog mais environ 20 sec et il faudrait qui mette moins de 1 (une ) sec .
Vous trouverez si dessous le source ,il faut absolument que je test les octets et non pas les pixels (faute a un seuil de tolerance ds les nivo de gris ).
Le mieux etant un traitement en memoire ss avoir besoin d'ouvrir a chaque fois les bmp.
merci d'avance pour vos suggestion .
void CBmpcompareDlg::OnCompare()
{
FILE *bmp1,*bmp2;
char *deb1[4],*deb2[4];
char *oct1[1],*oct2[1];
int test,eof1,eof2;
float pix1,pix2;
float pixel;
fpos_t ptr;
CString mess,txt,txt1,txt2,tst1,tst2;
pix1=pix2=pixel=0;
bmp1=fopen("test.bmp","rb");
if (bmp1==NULL)MessageBox("Ouverture du bmp1 impossible");
bmp2=fopen("test1.bmp","rb");
if (bmp2==NULL)MessageBox("Ouverture du bmp2 impossible");
fseek(bmp1,0xa,SEEK_SET);
fread(deb1,4,1,bmp1);
fseek(bmp2,0xa,SEEK_SET);
fread(deb2,4,1,bmp2);
mess.Format("%x",*deb1);
test=((long)*deb1);
MessageBox(mess);
fseek(bmp1,test,SEEK_SET);
mess.Format("%x",*deb2);
test=((long)*deb2);
MessageBox(mess);
fseek(bmp2,test,SEEK_SET);
do
{
eof1=fread(oct1,1,1,bmp1);
tst1.Format("%X",*oct1);
eof2=fread(oct2,1,1,bmp2);
tst2.Format("%X",*oct2);
pix1++;
if((*oct1<*oct2-10)||(*oct1>*oct2+10))
Croqmort
Messages postés95Date d'inscriptionmercredi 5 décembre 2001StatutMembreDernière intervention27 juin 2006 7 mars 2002 à 09:10
pkoi n'utilise tu pas ce que je t'ai indiquer :
http://www.cppfrance.com/forum.asp?Article=2385 je pense que la comparaison prend moins d'1 seconde
pasque là tu ne stoque pas tout de suite ton fichier entierement en memoire !
et puis
char *deb1[4],*deb2[4];
char *oct1[1],*oct2[1];
c laid pasque tu ne declare pas des pointeur vers des tableau de la taille que tu as specifier, mais des tableau de pointeur vers du vide, vaut mieux faire :
char deb1[4],deb2[4];
char oct1[1],oct2[1];
ça sera un peu moins le bordel !