关于13年多媒体设计师下午题的一道BMP位图计算

2015-05-19 00:00:00 by 【6yang】, 1639 visits, 收藏 | 返回
写下,关于13年多媒体设计师下午题的一道BMP位图计算,很多人不知道这题,于是该年难倒了多少英雄好汉;
来让我一一来解下:



好大的图!

1.求该位图文件调色板部分占多少个字节;

首先:
了解下调色板是什么? 我们常见的photoshop里经常调色来用;这张RGB的表,就是我们常说的调色板(Palette);调色板是指一块区域,一个大的结构数组,数组中每个元素由 RGBQ 构成,R存放红色值,类推,Q是保留位,一般不用。而调色板的图像数据是颜色的索引  简:调色板其实就是一个索引表。16色位图有16行,256色位图有256行

其次:
了解下位图里的结构BitMapInfoHeader
biWidth: 位图的宽度,单位为像素点
biHeight:位图的高度,单位为像素点
biBitCount: 像素的位素(1,4,8,24),则表项为(2, 16,256, 24没有颜色表项)
biCompression: 压缩方式(0表示不压缩)

那么我什么 来求下调色板占多少个字节:
这里的biBitCount 为8 ,那就是表项256; 那结果就出来了: 256*4(调色板的每个表项占4个字节)  = 1024 = 1K;

2. 求该位图文件中实际图像数据部分占多少个字节
要了解题目的提示: 这里说该文件格式还规定图像的每一个扫描行所占的字节数必须是4的整数倍,不足的部份以0填充 ,而我们这里biWidth是250,不是4的整数倍,那就补到4的整数倍 最近的是252;
这里可以理解为求这个图像的一个块或是面积
biWidth * biHight * biCount  = 252 * 100 * 8/8 = 25200Byte

3. 求整个位图文件的大小是多少字节?
这题只需要把整个位图文件相关的数据求和

调色板 + 实际图像数据部分 + 位图文件头BiteMapFileHeader 14Byte + 位图信息头BitMapInfoHeader 40Byte = 1024 + 25200 + 14 + 40 = 26278 Byte;

总结:

这题需要了解的是 a, 每一个扫描行所占的字节数必须是4的整数倍 b, 表项的理解, c, BitMapInfoHeader 中biWidth, biHeigh,biBitCount, biCompression的理解;
分享到:
share

    图片原图

    loading

    loading