void Create_Image(){
FILE *fp;
int i,j;
unsigned char c, d;
BITMAPFILEHEADER *bitmapFileHeader;
BITMAPINFOHEADER *bitmapInfoHeader;
if((fp=fopen("b_1.bmp", "wb")) == NULL){
fprintf(stderr, "file cannot open\n");
exit(1);
}
/* 结构体指针初始化 */
bitmapFileHeader=(BITMAPFILEHEADER *)malloc(sizeof(BITMAPFILEHEADER));
bitmapInfoHeader=(BITMAPINFOHEADER *)malloc(sizeof(BITMAPINFOHEADER));
/*定义位图头文件数据结构*/
bitmapFileHeader->bfType = ('M'<<8)|'B';
bitmapFileHeader->bfReserved1 = 0x0000;
bitmapFileHeader->bfReserved2 = 0x0000;
//位图起始位置
bitmapFileHeader->bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
/*定义位图信息数据结构*/
bitmapInfoHeader->biSize = sizeof(BITMAPINFOHEADER);
int rate = 2;
bitmapInfoHeader->biWidth = IMAGE_X/rate;
bitmapInfoHeader->biHeight = IMAGE_Y/rate;
bitmapInfoHeader->biPlanes = 0x0001;
bitmapInfoHeader->biBitCount = 0x0018; //24位图
bitmapInfoHeader->biCompression = 0x0000; //不压缩
/*每像素由RGB24位构成,即3字节*/
bitmapInfoHeader->biSizeImage = bitmapInfoHeader->biWidth*bitmapInfoHeader->biHeight * 3;
/*位图文件大小*/
bitmapFileHeader->bfSize = bitmapFileHeader->bfOffBits + bitmapInfoHeader->biSizeImage;
/*位图头文件结构写入文件*/
fwrite((unsigned char *)bitmapFileHeader, sizeof(BITMAPFILEHEADER), 1, fp);
/*位图信息结构写入文件*/
fwrite((unsigned char *)bitmapInfoHeader, sizeof(BITMAPINFOHEADER), 1, fp);
/*RGB颜色写入文件*/
for(j=IMAGE_Y-1;j>=0;j-=rate){
for(i=0;i<IMAGE_X;i+=rate){
c=(IMAGE[j*IMAGE_X + i])*1;
fprintf(fp, "%c%c%c",c,c,c); /* RGB */
}
}
free(bitmapFileHeader);
free(bitmapInfoHeader);
fclose(fp);
}
创建BMP图像
最新推荐文章于 2023-01-15 11:05:29 发布