文档详情

数字图像处理MFC显示BMP图片..docx

发布:2017-01-29约8.01千字共9页下载文档
文本预览下载声明
【数字图像处理】一.MFC详解显示BMP格式图片 标签: 图像处理BMP格式详解BMP图片显示MFC 2014-01-14 19:31 5250人阅读 评论(8) 收藏 举报 分类: MFC图像知识(11) 数字图像处理(6) 版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~本文主要是讲述《数字图像处理》系列栏目中的第一篇文章.主要详细介绍了BMP图片格式,同时使用C++和MFC显示BMP格式,主要结合自己的《数字图像处理》课程和以前的项目叙述讲解.一.BMP图片格式定义BMP文件格式是Windows操作系统推荐和支持的标准图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,故称位图(bitmap),其扩展名为BMP.BMP图像通常有4个部分组成:位图文件头、位图信息头、颜色表、位图数据.如下图所示:第一部分为位图文件头BITMAPFILEHEADER.位图文件头结构长度固定为14个字节,包含文件的类型、大小、位图文件保留字、位图数据距文件头的偏移量.其中WORD为无符号16位整数(2byte),DWORD为无符号32位整数(4byte).具体结构体定义如下://位图文件头typedef struct tagBITMAPFILEHEADER {WORDbfType; //位图文件的类型,必须为BM 0x424d 表示.bmpDWORDbfSize; //位图文件的大小,以字节为单位 包括该14字节WORD bfReserved1; //位图文件保留字,必须为0WORD bfReserved2; //位图文件保留字,必须为0 DWORDbfOffBits; //位图数据距文件头的偏移量,以字节为单位 即前三部分和} BITMAPFILEHEADER;第二部分为位图信息头BITMAPINFOHEADER,该结构也固定为40个字节,用于说明位图的尺寸、宽高、像素、分辨率、颜色表等信息.具体结构定义如下://位图信息头typedef struct tagBITMAPINFOHEADER {DWORDbiSize; //本结构所占用字节数 40字节 LONGbiWidth; //位图的宽度,以像素为单位LONGbiHeight; //位图的高度,以像素为单位WORDbiPlanes; //目标设备的级别,必须为1WORDbiBitCount; //每个像素所需的位数,必须是1(双色)、 //4(16色)、8(256色)或24(真彩色)之一DWORDbiCompression; //位图压缩类型,必须是 0(BI_RGB不压缩)、 //1(BI_RLE8压缩类型)或2(BI_RLE压缩类型)之一DWORDbiSizeImage; //位图的大小,以字节为单位LONGbiXPelsPerMeter; //位图水平分辨率,每米像素数LONGbiYPelsPerMeter; //位图垂直分辨率,每米像素数DWORDbiClrUsed; //位图实际使用的颜色表中的颜色数DWORDbiClrImportant; //位图显示过程中重要的颜色数 } BITMAPINFOHEADER;第三部分为颜色表或调色板(Palette).有些位图需要调色板,有些位图如真彩色图(biBitCount=24)不需要调色板,它们的BITMAPINFOHEADER后面直接是位图数据.调色板实际是一个数组,共有biClrUsed个元素(如果该值为零,则有2的biBitCount次幂个元素).数组中每个元素的类型是一个RGBQUAD结构,占4字节.定义如下://位图颜色表typedef struct tagRGBQUAD{ BYTErgbBlue; //蓝色的亮度(值范围为0~255) BYTErgbGreen; //绿色的亮度(值范围为0~255) BYTErgbRed; //红色的亮度(值范围为0~255) BYTErgbReserved; //保留,必须为0} RGBQUAD;第四部分就是实际的图像数据.对于真彩色图(24位位图 biBitCount=24),图像数据就是实际的RGB值;对于用到调色板的位图,图像数据就是该像素颜色在调色板中的索引值.下面对2色、16色、256色和真彩色位图分别介绍:(1).2色位图:当biBitCount=1时,用1位就可以表示该像素的颜色(0表示黑,1表示白),所以8个像素占1个字节;(2).16色位图:当biBitCount=4时,用
显示全部
相似文档