1、bmp是微软提供的位图,是其他格式图片的基础。编程中用到的多是bitmap,而其他则是占用磁盘空间小的,进行了压缩技术的图片格式
2、bmp格式有单色,16色,256色,16位,24位,32位格式。
3、单色,16色。。指的是颜色空间,即色域,色深。其中单色只有黑白2色,1位即可表示。而16位中有1R5G5B5或者R5G6B5两种格式。一般采用位移的方法来取出每个通道的值。32位则是在24位基础上加上了alpha通道。其在内存中存储是B8G8R8A8格式。一般的图片查看软件看带有alpha通道的bmp时,一般透明的背景还是白色。但是在具体的比如flash中或者游戏的应用程序中,可以解析出alpha通道的值。用windows的GDI+中的alphablend可以进行透明度bmp绘制(此bmp必须是带有alpha通道的才能解析)。
4、单色、16色、256色有调色板,其中在bmp的数据域存放的是调色板的索引,其调色板采用的是R8G8B8RES8,其色深已经相当广了,已经有很多颜色人为辨别不出区别了。所以调色板中是选取了部分颜色作为需要的色域。而16位,24位,32位则不需要颜色表。在ps中可以查看bmp的颜色表。单击模式->颜色表
5、16位采用的是1R5G5B5或者R5G6B5,对于1R5G5B5来说1位高位是预留的,red,green和blue的位数均为5位,那么表示的最大值为31,则作为三原色来说,其每个分量的最大值表示的就是这个值的颜色,即(r:31,g:0,b:0)表示红色,(r:0,g:31,b:0)表示绿色,(r:0,g:0,b:31)表示蓝色,(r:0,g:0,b:0)表示黑色,(r:31,g:31,b:31)表示白色。将每个分量组合成word类型的rgb,那么则是进行位移操作进行运算得到。(十六进制:$03e0),
6、24位是B8G8R8,在内存中表示是blue、green、red。
7、32位在24为基础上,在最低位加入了alpha一个字节。在ps中可以查看三原色以及alpha通道。程序或者ps都可以实现在24位不能透明显示的bmp格式上增加透明的功能。
8、bmp数据结构中,fileheader中的offbit表示数据区