Voila j'ai une fonction qui doit prendre deux images , les comparer et creer une image delta pour cibler les différence entre les deux images. Mon probleme c'est que ca fonctionne tres bien sur mon pc l'image se modifie mais quand j'arrive sur un lecteur réseau partager d'un autre poste (les droits me semble correct) je réussit à creer mon image delta mais pas a modifier les pixel avec la fonction fwrite.
Pourtant la fonction fwrite ne m'envoit pas de message d'erreur et le comportement du programme est le même quand je suis sur mon pc ou sur le réseau.
Quelqu'un a une idée pour moi ?
void CreateDelta(const std::string sFichierAbsolut1,const std::string sFichierAbsolut2,
const std::string sRepertoireDelta,const std::string sFichier1)
{
BITMAPFILEHEADER bmfh1;
BITMAPFILEHEADER bmfh2;
BITMAPFILEHEADER bmfhDelta;
int i;
int j=0;
std::string sFichierDelta;
FILE *image1;
FILE *image2;
FILE *imagedelta;
sFichierDelta=sRepertoireDelta + "\\Delta-" + sFichier1;
CopyFile (sFichierAbsolut1.c_str(), sFichierDelta.c_str(), true);
//Ouverture des deux fichiers
image1=fopen(sFichierAbsolut1.c_str(),"r+b");
image2=fopen(sFichierAbsolut2.c_str(),"r+b");
imagedelta=fopen(sFichierDelta.c_str(),"r+b");
cout << imagedelta << endl;
fseek(image1, SEEK_SET, 0) ;
fseek(image2, SEEK_SET, 0) ;
fseek(imagedelta, SEEK_SET, 0) ;
fread(&bmfh1, sizeof(bmfh1), 1, image1) ;
fread(&bmfh2, sizeof(bmfh2), 1, image2) ;
fread(&bmfhDelta, sizeof(bmfhDelta), 1, imagedelta);
unsigned char* pixel1;
unsigned char* pixel2;
unsigned char* pixelDelta;
pixel1 = new unsigned char [bmfh1.bfSize];
pixel2 = new unsigned char [bmfh2.bfSize];
pixelDelta = new unsigned char [bmfhDelta.bfSize];
//Lecture et stockage de l'image dans la variable pixel
fread(pixel1,1,bmfh1.bfSize,image1);
fread(pixel2,1,bmfh2.bfSize,image2);
fread(pixelDelta,1,bmfhDelta.bfSize,imagedelta);
//Parce que la définition des pixel commence a 40 (avant c'est l'entete)
i=40;
//Boucle pour faire tout les pixel
while(i<=(bmfh1.bfSize))
{
//Si les pixel sont différent
if((pixel1[i]!=pixel2[i])||(pixel1[i+1]!=pixel2[i+1])||(pixel1[i+2]!=pixel2[i+2]))
{
pixelDelta[i]=0x5A;
pixelDelta[i+1]=0xA5;
pixelDelta[i+2]=0xA9;
}
i+=3;
}
fseek(imagedelta,14, 0) ;
fwrite(pixelDelta,sizeof(pixelDelta),bmfh1.bfSize,imagedelta);
//Ferme les trois fichiers
fclose(image1);
fclose(image2);
fclose(imagedelta);
//Delete
delete pixel1;
delete pixel2;
delete pixelDelta;
}