I am trying to write a program that outputs a bmp file. The code compiles, and runs, but the .bmp won't open! Where am I going wrong?
Here is my code for generating the bitmap...
Code:
void generateImage(int **grid, int gridsize){
int bytesPerLine,i,j;
bmpHeader header;
FILE* image;
int count=0;
int test;
memset ((char *)&header,0,sizeof(bmpHeader));
memcpy (header.bm,"BM",2);
header.headerSize = 54L;
header.infoSize = 0x28L;
header.width = gridsize;
header.height = gridsize;
header.planes = 1;
header.bits = 24;
header.compression = 0L;
bytesPerLine = header.width * 3;
if (bytesPerLine & 0x0003){
bytesPerLine |= 0x0003;
++bytesPerLine;
}
header.filesize = header.headerSize + (long)bytesPerLine * header.height;
image = fopen("generatedPattern.bmp","w");
fwrite(&header,1,sizeof(header),image);
char* arrayLine;
arrayLine = (char*)malloc(bytesPerLine);
for (j=gridsize;j>0;j--) {
memset((char*)arrayLine,0,bytesPerLine);
for (i=0;i<(3*gridsize);i=i+3) {
if (grid[j-1][i/3] !=0) {
arrayLine[i] = 255;
arrayLine[i+1] = 255;
arrayLine[i+2] = 255;
}
else {
arrayLine[i] = 0;
arrayLine[i+1] = 0;
arrayLine[i+2] = 0;
}
}
test=fwrite(arrayLine,1,bytesPerLine,image);
if (!test) printf("Write failed");
}
fclose(image);
}