{
//以二進制寫入模式打開文件。
FILE *fp=fopen(bmpName,“WB”);
if(fp==0)返回0;
int w = 1;
int h = 1;
int bibitcount = 4;
int line byte = 4;
int colortablesize = 64
BITMAPFILEHEADER文件頭;
filehead . BF type = 0x4d 42;
filehead . bfreserved 1 = 0;
file head . BF reserved 2 = 0;
file head . bfsize = sizeof(bitmapfile header)+sizeof(BITMAPINFOHEADER)+colortablesize+line byte * h;
//bfOffBits是圖像文件前三部分所需空間的總和。
filehead . bfoffbits = 14+40+color tablesize;
//將文件頭寫入文件
fwrite(& amp;filehead,sizeof(BITMAPFILEHEADER),1,FP);
BITMAPINFOHEADER頭;
head.biBitCount = bibitcount
head . bicl important = 0;
head . biclrsered = 0;
head . bicompression = 0;
head . BIH height = h;
head . biplanes = 1;
head.biSize = 40
head . bisize image = line byte * h;
head . bi width = w;
head . bixpelspermeter = 0;
head . biypelspermeter = 0;
//將位圖信息寫入內存。
fwrite(& amp;head,sizeof(BITMAPINFOHEADER),1,FP);
RGBQUAD * pcolortable
pcolortable = new RGBQUAD[16];
int t = 15;
for(int I = 0;我& lt16;i++)
{
pcolortable[i]。rgbReserved = 0;
pcolortable[i]。RGB blue = I * t;
pcolortable[i]。RGB green = 0;
pcolortable[i]。rg bred = I * t;
}
fwrite(pcolortable,sizeof(RGBQUAD),16,FP);
無符號char * pbmpbuf
pbmpbuf = new unsigned char[line byte * h];
pbmpbuf[0]= 35;
pbmpbuf[1]= 35;
//pbmpbuf[4]= 69;
//pbmpbuf[5]= 103;
//pbmpbuf[8]= 137;
//pbmpbuf[9]= 171;
//pbmpbuf[12]= 205;
//pbmpbuf[13]= 239;
//for(I = 0;我& lt16;i++)
//pbmpbuf[I]= 199;
//將位圖數據寫入文件
fwrite(pbmpbuf,h*linebyte,1,FP);
//關閉文件
fclose(FP);
返回1;
}
我要去上課了,不看妳的節目了。以上是我寫的壹個寫BMP文件的程序。看,這沒問題。
//寫文件頭
fout . write((char *)& amp;bitmapInfoHead,sizeof(bitmapfile header));
妳錯了,是寫文件頭信息BITMAPINFOHEADER。