黑白BMP位图行补位和位图文件大小计算

     看到网上不少帖子介绍BMP图像行像素数需要是4的倍数,毫无疑问对于任何颜色数BMP位图,这个条件都是成立的,但是在黑白位图中,行像素数仅仅以4的倍数来补位,生成或读取的BMP图像却不一定正确。因为单色BMP图像一个二进制位表示一个像素,因此行像素数不足8的时候会被自动补充成为一个完整的字节,因此在读取单色的BMP图像时需要注意对补位部分的程序进行特殊处理。各颜色位数的BMP图像文件容量的计算公式总结如下:

     黑白:文件头(14字节)+信息头(40字节)+2个调色板(共8字节)+Height(图像高度)*(Width+8-Width%8)/8    

     16色:文件头(14字节)+信息头(40字节)+16个调色板(共64字节)+Height(图像高度)*(Width+4-Width%4)/2    

     256色:文件头(14字节)+信息头(40字节)+256个调色板(共1024字节)+Height(图像高度)*(Width+4-Width%4)

     16位色:文件头(14字节)+信息头(40字节)+Height(图像高度)*(Width+4-Width%4)*2 (由于每个像素由两个字节表示)

     24位色:文件头(14字节)+信息头(40字节)+Height(图像高度)*(Width+4-Width%4)*3 (由于每个像素由三个字节表示)

注:BMP文件的结构一般由14个字节的BITMAPFILEHEADER,40个字节的BITMAPINFOHEADER ,调色板组成、数据组成。16位(不含)以下的位图需要调色板索引得到像素RGB分量,调色板为一组RGBQUAD的结构体组成,其中,单色图有2个RGBQUAD,4位色有16个,8位色有256个。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值