不迎不送,来去自便,无茶无酒,谈笑随缘

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

     看到网上不少帖子介绍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个。

posted on 2007-07-29 17:15  wude  阅读(1118)  评论(0编辑  收藏  举报