获取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图像的信息简易例子的主要内容,如果未能解决你的问题,请参考以下文章

获取BMP图像的信息简易例子

获取BMP图像的信息简易例子

BMP 图像标题 - biXPelsPerMeter

用C或C++怎样提取出bmp图像的像素点信息值?用LSB算法做信息隐藏,位图是24位的。

将字节数组转换/显示为 bmp/jpeg 图像

已有一个bmp图片用标准c获取其任意点(给定坐标)像素信息?