使用C++读取8位BMP位图

本文介绍了如何使用C++读取和存储8位BMP位图,涉及微软位图数据结构、四字节对齐、调色板原理,以及在处理8位图时需要注意的字节对齐问题。通过示例代码,阐述了如何忽略填充字节,并展示了主调函数及转换效果。
摘要由CSDN通过智能技术生成

使用C++读取8位BMP位图

一、 基础知识

  1. 微软的图像库关于位图的数据结构BITMAPFILEHEADERBITMAPINFOHEADER
  2. 位图存储时候的四字节对齐
  3. 调色板的理解

二、八位图片的读取

细节见代码和注释。需要注意的是我们实际读的时候忽略了填充的字节(没必要)。


BYTE *RmwRead8BitBmpFile2Img(const char * filename,int *width,int *height){
    FILE *binFile;
    BYTE *pImg=NULL;
    BITMAPFILEHEADER fileHeader;
    BITMAPINFOHEADER bmpHeader;
    BOOL isRead=TRUE;
    int linenum,ex; //linenum:一行像素的字节总数,包括填充字节 

    //open file
    if((binFile=fopen(filename,"rb"))==NULL) return NULL;

    //read struts
    if(fread((void *)&fileHeader,1,sizeof(fileHeader),binFile)!=sizeof(fileHeader)) isRead=FALSE;
    if(fread((void *)&bmpHeader,1,sizeof(b
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值