在我的上一篇博客中,提到了如何截图的问题,不过留了一个疑问,就是通过程序截图出来的bmp文件是属于32位的,也就是说存储的内容包括alpha,RGB,而我在软件中设计的对bmp图像的处理方式都是针对32位的,这该怎么办呢?ok,下面听我慢慢说来。
其实处理方式很简单,在LZ的软件当中,对bmp图像的处理方式专门有一个类叫做bmp,其实主要用到的就是bmp类的open函数,因此,LZ采用的处理方式就是将bmp类的open函数稍加改动,也就是在打开图片加载图片的时候就将alpha通道去除掉。
32位bmp图片的存储方式是透蓝绿红,24位bmp的存储方式是蓝绿红。因此,在将图片数据流保存到数组中的时候,其实是color颜色层的第一层不要,保留后面的三层,废话不多说,具体代码实现如下:
bool Bmp::Open(const char* FileName)//打开图片
{
if(Exist())
{
Close();
}
FILE *fp=NULL;//建立文件指针
//fopen_s(&fp,FileName,"rb");//以二进制方式读取文件
fp=fopen(FileName,"rb");//以二进制方式读取文件
//fp=fopen("F:\\132.bmp","rb");//以二进制方式读取文件
if(!fp)