vc6.0读取位图、显示位图与保存位图之全攻略

vc6.0读取位图、显示位图与保存位图之全攻略

ID:29622840

大小:57.50 KB

页数:9页

时间:2018-12-21

vc6.0读取位图、显示位图与保存位图之全攻略_第1页
vc6.0读取位图、显示位图与保存位图之全攻略_第2页
vc6.0读取位图、显示位图与保存位图之全攻略_第3页
vc6.0读取位图、显示位图与保存位图之全攻略_第4页
vc6.0读取位图、显示位图与保存位图之全攻略_第5页
资源描述:

《vc6.0读取位图、显示位图与保存位图之全攻略》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、作者:彭军一、了解位图的文件结构我这里要说的主要是如何读入8位或24位位图。因为这两种格式的位图更加具有代表性。如32位位图也只是多了一个透明度的分量罢了。其跟24位位图的格式相比变化不大。我们常说进行数字图像处理,其实主要是处理位图的像素数据和采用何种算法去处理像素数据。可是,要想处理像素数据,首先就是要读入位图的数据。不然,处理从何谈起。下面我将详细的说明BMP位图的文件结构,相信看完之后,对于读入位图就不是什么难事了。当然,我这里的前提是你熟悉如何读入文件。好了,废话不多说了。我们开始吧。BMP位图的第一部分就是文件头。下面是

2、它的结构:typedefstructtagBITMAPFILEHEADER{WORDbfType;DWORDbfSize;WORDbfReserved1;WORDbfReserved2;DWORDbfOffBits;}BITMAPFILEHEADER,*PBITMAPFILEHEADER;上面的这个文件头的结构体是摘自MSDN。它的各项的含义如下:bfType代表的是文件格式,就是“BM”,用十六进制的数表示是0x4d42,用十进制的数表示就是19778。所以,从BMP文件的前两个字节我们就可以判断我们要打开的图片是不是位图,如果不

3、是的话,我们就可以不用读了。bfSize代表的是该位图文件的大小(包含文件头、信息头、调色板(如果有)、像素数据)。它是一个DWORD类型,占4个字节。bfReserved1和bfReserved2都是保留量,因此它们应该都为0。它们合起来占4个字节。bfOffBits代表的是像素数据距离文件头的位置,也就是偏移地址。如果我们想直接读像素数据的话,可以把文件指针偏移bfOffBits个字节,然后读取就可以了,知道读到文件结尾。这样算起来,文件头一共占了2+4+2+2+4=14字节。所以,这个文件头的大小固定是14字节的。而且,还有重

4、要的一点是,其实在保存BMP文件的时候,保存的顺序也是按照bfType、bfSize、bfReserved1、bfReserved2、bfOffBits的顺序的。因此,如果我们不想用微软的这个结构体的话,你可以按照上面的顺序依次的读入各项,用不用这个结构体,关系不是很大。不过只是说,用结构体的话,可能会带来一些方便罢了。这一点,在当你用C或Java来读取的时候,会感觉更深刻。因为在C或Java中没有微软提供的这个结构体,要么自己构造这个结构体,要么你就按找顺序和字节数依次读出各项的值。后面有我的C和Java读入位图的例子,你可以参看

5、下。BMP位图的第二部分就是信息头。下面是它的结构:typedefstructtagBITMAPINFOHEADER{DWORDbiSize;LONGbiWidth;LONGbiHeight;WORDbiPlanes;WORDbiBitCount;DWORDbiCompression;DWORDbiSizeImage;LONGbiXPelsPerMeter;LONGbiYPelsPerMeter;DWORDbiClrUsed;DWORDbiClrImportant;}BITMAPINFOHEADER,*PBITMAPINFOHEAD

6、ER;当然了,这个结构体还是来自MSDN的。biSize代表的是该结构体的大小,即40字节。biWidth代表的是位图的宽度,以像素为单位。biHeight代表的是位图的高度,以像素为单位。biPlanes代表的位图的平面数,平面数不同,RGB各分量所排列的顺序不一样。一般常见的是1,也就是RGB各分量是按照BGR的顺序在像素数据中排列的。biBitCount代表的是位图的位数,有1、16、8、24、32等。biCompression代表是位图的压缩方法,由于BMP位图是没有压缩的,所以通常情况下它的值都为0。biSizeImage

7、代表的是位图像素数据的大小,就是高度乘上每行像素所占的字节数。biXPelsPerMeter代表的是水平方向的分辨率,以米为单位。这个参数没有什么太大的意义,至少现在我还没发现。所以,它通常情况下都为0,不是0也没有关系。biYPelsPerMeter代表的是垂直方向的分辨率,以米为单位,通常为0。biClrUsed代表的是位图用到的颜色数,可以设置为0,代表的是全部用到了。biClrImportant代表的是位图中重要的颜色数,可以设置为0,代表的是全部都很重要。LONG和DWORD都占4个字节,WORD占2个字节,因此,该结构体

8、(也就是信息头)共占40字节。还要说明的一点是,在保存位图的时候,我们也可以按照上面的结构体中各项的顺序来保存位图。在读入位图的时候,也可以按字节和上面的顺序来依次读入各项。用不用结构体,关系不大。还是那句话,当你用C或Java读入信

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。