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);}