C语言读取语言读取BMP图像数据的源码图像数据的源码
代码如下:
/* File name: bmpTest.c
Author: WanChuan XianSheng
Date: Oct 01, 2011
Description: Show all Info a bmp file has. including
FileHeader Info, InfoHeader Info and Data Part.
Reference: BMP图像数据的C语言读取源码
*/
#include <stdio.h>
#include <stdlib.h>
#define BITMAPFILEHEADERLENGTH 14 // The bmp FileHeader length is 14
#define BM 19778 // The ASCII code for BM
/* Test the file is bmp file or not */
void bmpFileTest(FILE* fpbmp);
/* To get the OffSet of header to data part */
void bmpHeaderPartLength(FILE* fpbmp);
/* To get the width and height of the bmp file */
void BmpWidthHeight(FILE* fpbmp);
/* Show bmp file tagBITMAPFILEHEADER info */
void bmpFileHeader(FILE* fpbmp);
/* Show bmp file tagBITMAPINFOHEADER info */
void bmpInfoHeader(FILE* fpbmp);
/* Show the Data Part of bmp file */
void bmpDataPart(FILE* fpbmp);
unsigned int OffSet = 0; // OffSet from Header part to Data Part
long BmpWidth = 0; // The Width of the Data Part
long BmpHeight = 0; // The Height of the Data Part
int main(int argc, char* argv[])
{
/* Open bmp file */
FILE *fpbmp = fopen(“lena.bmp”, “r+”);
if (fpbmp == NULL)
{
fprintf(stderr, “Open lena.bmp failed!!!”);
return 1;
}
bmpFileTest(fpbmp); //Test the file is bmp file or not
bmpHeaderPartLength(fpbmp); //Get the length of Header Part
BmpWidthHeight(fpbmp); //Get the width and width of the Data Part
//bmpFileHeader(fpbmp); //Show the FileHeader Information
//bmpInfoHeader(fpbmp); //Show the InfoHeader Information
bmpDataPart(fpbmp); //Reserve the data to file
fclose(fpbmp);
return 0;
}