24位bmp文件的读取&存储
我采用的方法是将图像文件读取,存储到一维数组中,以便后期的操作。
void checkFileExist(FILE * fpbmp) { //打开图片文件 按照二进制读取 if (fpbmp == NULL) { printf("当前打开的文件不存在!\n"); exit(1); } } void readFile(FILE * pfInput, BITMAPFILEHEADER &fileHeader, BITMAPINFOHEADER &infoHeader) { //ReadtheBitmapfileheader; fread(&fileHeader, sizeof(BITMAPFILEHEADER), 1, pfInput); //ReadtheBitmapinfoheader; fread(&infoHeader, sizeof(BITMAPINFOHEADER), 1, pfInput); } void checkInput(BITMAPINFOHEADER infoHeader, BITMAPFILEHEADER fileHeader) { if (fileHeader.bfType != BM) { printf("This file is not bmp file.!!!\n"); exit(1); } if (infoHeader.biBitCount != 24) { printf("当前打开的文件不是24位的bmp图,请检查后重启!\n"); printf("当前的位数为:%d\n", infoHeader.biBitCount); exit(1); } else { printf("当前输入文件为:24位bmp图片\n"); } } void readWidthHeight(FILE *bfIn, BITMAPINFOHEADER infoHeader, int &original_width, int &original_height) { original_width = infoHeader.biWidth; original_height = infoHeader.biHeight; } void bfWriteHead(FILE *bfIn, FILE *bfOut, BITMAPFILEHEADER &fileHeader) { //位图头文件 fseek(bfIn, 0L, SEEK_SET); fseek(bfOut, 0L, SEEK_SET); fwrite(&fileHeader, sizeof(BITMAPFILEHEADER), 1, bfOut); } v