获取BMP图像的信息简易例子
Posted coding码场
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取BMP图像的信息简易例子相关的知识,希望对你有一定的参考价值。
文件头
typedef struct tag_OSD_BITMAPFILEHEADER
HI_U32 bfSize;
HI_U16 bfReserved1;
HI_U16 bfReserved2;
HI_U32 bfOffBits;
OSD_BITMAPFILEHEADER;
typedef struct tag_OSD_BITMAPINFO
OSD_BITMAPINFOHEADER bmiHeader;
OSD_RGBQUAD bmiColors[1];
OSD_BITMAPINFO;
typedef struct tag_OSD_BITMAPINFOHEADER
HI_U16 biSize;
HI_U32 biWidth;
HI_S32 biHeight;
HI_U16 biPlanes;
HI_U16 biBitCount;
HI_U32 biCompression;
HI_U32 biSizeImage;
HI_U32 biXPelsPerMeter;
HI_U32 biYPelsPerMeter;
HI_U32 biClrUsed;
HI_U32 biClrImportant;
OSD_BITMAPINFOHEADER;
typedef struct tag_OSD_RGBQUAD
HI_U8 rgbBlue;
HI_U8 rgbGreen;
HI_U8 rgbRed;
HI_U8 rgbReserved;
OSD_RGBQUAD;
HI_S32 GetBmpInfo(const char* filename, OSD_BITMAPFILEHEADER* pBmpFileHeader
, OSD_BITMAPINFO* pBmpInfo)
FILE* pFile;
HI_U16 bfType;
if (NULL == filename)
printf("OSD_LoadBMP: filename=NULL\\n");
return -1;
if ((pFile = fopen((char*)filename, "rb")) == NULL)
printf("Open file faild:%s!\\n", filename);
return -1;
(void)fread(&bfType, 1, sizeof(bfType), pFile);
if (bfType != 0x4d42)
printf("not bitmap file\\n");
fclose(pFile);
return -1;
(void)fread(pBmpFileHeader, 1, sizeof(OSD_BITMAPFILEHEADER), pFile);
(void)fread(pBmpInfo, 1, sizeof(OSD_BITMAPINFO), pFile);
fclose(pFile);
return 0;
GetBmpInfo接口完成打开文件,读开头的两个字节,判断是不是BM开头的,不是的话就退出了。然后再读取文件头,估计大小的,看看文件有多大,再读bmp信息,宽高,位深这些关键信息。
以上是关于获取BMP图像的信息简易例子的主要内容,如果未能解决你的问题,请参考以下文章