J'ai fait le programme suivant : je veux sauver au format bmp 24 bits le contenu du tableau colors (592*446 pixels - couleurs RGB ) . Le programme ne marche pas: il cree un fichier bmp mais lataille n'est pas bonne, il fait 792516 bytes au lieu de 792150 bytes. Je peux pas le lire.
Si quelqu'un pouvait me dire ou est mon erreur- je pense que c'est au niveua du header que ca chie.
Merci
typedef struct {
char id[2];
long filesize;
int reserved[2];
long headersize;
long infoSize;
long width;
long depth;
short biPlanes;
short bits;
long biCompression;
long biSizeImage;
long biXPelsPerMeter;
long biYPelsPerMeter;
long biClrUsed;
long biClrImportant;
} BMPHEAD;
BMPHEAD bh;
memset ((char *)&bh,0,sizeof(BMPHEAD)); /* sets everything to 0 */
memcpy (bh.id,"BM",2);
bh.filesize = 592*446*3+54 ;
bh.headersize = 54L ;
bh.infoSize = 0x28L ;
bh.width = 592 ;
bh.depth = 446 ;
bh.biPlanes = 1 ;
bh.bits = 24 ;
FILE *bmpfile = fopen("name.bmp", "wb" );
int bytesPerLine = 1776; //3*592
fwrite(&bh, 1, sizeof (bh), bmpfile);
int *linebuf;
linebuf=(int *)calloc(10000,sizeof(*linebuf));
for (i=446;i>0;i--)
{ for (int k=0;k<592;k++)
{ linebuf[3*k]=GetBValue(colors[k][i]) ;
linebuf[3*k+1]=GetGValue(colors[k][i]) ;
linebuf[3*k+2]=GetRValue(colors[k][i]) ;
}
fwrite(linebuf, 1, bytesPerLine, bmpfile);
}
fclose(bmpfile);
EndPaint(hwnd1,&ps);
}