MFC开发位图BitMap图像的读取与存储.pdf

MFC开发位图BitMap图像的读取与存储.pdf

ID:49822816

大小:72.32 KB

页数:3页

时间:2020-03-04

MFC开发位图BitMap图像的读取与存储.pdf_第1页
MFC开发位图BitMap图像的读取与存储.pdf_第2页
MFC开发位图BitMap图像的读取与存储.pdf_第3页
资源描述:

《MFC开发位图BitMap图像的读取与存储.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MFC开发位图BitMap图像的读取与存储做图像处理时的源文件一般要用无损的图像文件格式,位图(BitMap)是windows系统下可存储无压缩图像的文件格式。要实现位图文件的读取和存储,首先要明白位图文件的的存储数据结构。位图文件由四部分依序组成:BITMAPFILEHEADER,BITMAPINFOHEADER,调色板,ImageData。1)BITMAPFILEHEADER结构的长度是固定的14个字节,描述文件的有关信息。其数据结构是:[cpp]viewplaincopy01.typedefstructtagBITMAPFILEHEADER{02.WOR

2、DbfType;//mustbe0x4D42.03.DWORDbfSize;//thesizeofthewholebitmapfile.04.WORDbfReserved1;05.WORDbfReserved2;06.DWORDbfOffBits;//thesumbitsofBITMAPFILEHEADER,BITMAPINFOHEADERandRGBQUAD;theindexbyteoftheimagedata.07.}BITMAPFILEHEADER,FAR*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;2)BITMAPINF

3、OHEADER结构的长度是固定的40个字节,描述图像的有关信息。其数据结构是:[cpp]viewplaincopy01.typedefstructtagBITMAPINFOHEADER{02.DWORDbiSize;//thesizeofthisstruct.itis40bytes.03.LONGbiWidth;//thewidthofimagedata.theunitispixel.04.LONGbiHeight;//theheightofimagedata.theunitispixel.05.WORDbiPlanes;//mustbe1.06.WORDbi

4、BitCount;//thebitcountofeachpixel.usuallybe1,4,8,or24.07.DWORDbiCompression;//isthisimagecompressed.0indicatesnocompression.08.DWORDbiSizeImage;//thesizeofimagedata.09.LONGbiXPelsPerMeter;10.LONGbiYPelsPerMeter;11.DWORDbiClrUsed;12.DWORDbiClrImportant;13.}BITMAPINFOHEADER,FAR*LPBITM

5、APINFOHEADER,*PBITMAPINFOHEADER;值得注意的是,其中biSizeImage指的是实际图像数据的大小,以字节为单位。其计算公式是:宽*高。其中宽必须是4的整数倍。如果不是整数倍,则取大于宽的离4的整数倍最近的数值。这个要求可能是因为现在的计算机大都是32位4字节的,计算机每次读取4字节,这样每行的像素可以整数次读取完成。3)调色板:现在的计算机大都是32位或是更高,于是图像数据可用真彩色24位表达的,即每个像素均由24bit表示,每8bit表示RGB三色中的一色。但以前的计算机处理能力较差,图像用1位、4位或8位,即BITMAPIN

6、FOHEADER中的biBitCount不是24,这时又想表达出RGB色彩就需要调色板,调色板即使将图像数据中使用的一种颜色对应到RGB颜色中,这样图像数据中的像素值就是一个索引值,真正的像素值是这个索引值对应的调色板中的值。调色板是一个数组,数组中每个元素就是一个rgb颜色,对于8位图像,最多可表达256种颜色,调色板的大小就是256。调色板数组中每个元素的数据结构:[cpp]viewplaincopy01.typedefstructtagRGBQUAD{02.BYTErgbBlue;03.BYTErgbGreen;04.BYTErgbRed;05.BYTE

7、rgbReserved;06.}RGBQUAD;07.typedefRGBQUADFAR*LPRGBQUAD;4)图像数据对于1位图像,1个像素用1bit存储,对于24位图像,1个像素用24bit存储。位图文件的数据是从下而上,从左而右存储的。所以说,读取的时候,最先读到的是图像左下方的像素,最后读取的是图像右上方的图像。用c++写的位图文件的读取与存储方法:类结构(BitMap.h):[cpp]viewplaincopy01.#include02.classBitMap03.{04.public:05.BitMap();06.~BitMap();07.pro

8、tected:08.BITMAPFIL

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

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

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