- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC6.0讀取位图显示位图与保存位图之全攻略
作者:彭军
一、了解位图的文件结构
我这里要说的主要是如何读入8位或24位位图。因为这两种格式的位图更加具有代表性。如32位位图也只是多了一个透明度的分量罢了。其跟24位位图的格式相比变化不大。
我们常说进行数字图像处理,其实主要是处理位图的像素数据和采用何种算法去处理像素数据。可是,要想处理像素数据,首先就是要读入位图的数据。不然,处理从何谈起。
下面我将详细的说明BMP位图的文件结构,相信看完之后,对于读入位图就不是什么难事了。当然,我这里的前提是你熟悉如何读入文件。好了,废话不多说了。我们开始吧。
BMP位图的第一部分就是文件头。下面是它的结构:
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
上面的这个文件头的结构体是摘自MSDN。它的各项的含义如下:bfType代表的是文件格式,就是“BM”,用十六进制的数表示是0x4d42,用十进制的数表示就是19778。所以,从BMP文件的前两个字节我们就可以判断我们要打开的图片是不是位图,如果不是的话,我们就可以不用读了。bfSize代表的是该位图文件的大小(包含文件头、信息头、调色板(如果有)、像素数据)。它是一个DWORD类型,占4个字节。bfReserved1和bfReserved2都是保留量,因此它们应该都为0。它们合起来占4个字节。bfOffBits代表的是像素数据距离文件头的位置,也就是偏移地址。如果我们想直接读像素数据的话,可以把文件指针偏移bfOffBits个字节,然后读取就可以了,知道读到文件结尾。这样算起来,文件头一共占了2+4+2+2+4=14字节。所以,这个文件头的大小固定是14字节的。而且,还有重要的一点是,其实在保存BMP文件的时候,保存的顺序也是按照bfType、bfSize、bfReserved1、bfReserved2、bfOffBits的顺序的。因此,如果我们不想用微软的这个结构体的话,你可以按照上面的顺序依次的读入各项,用不用这个结构体,关系不是很大。不过只是说,用结构体的话,可能会带来一些方便罢了。这一点,在当你用C或Java来读取的时候,会感觉更深刻。因为在C或Java中没有微软提供的这个结构体,要么自己构造这个结构体,要么你就按找顺序和字节数依次读出各项的值。后面有我的C和Java读入位图的例子,你可以参看下。
BMP位图的第二部分就是信息头。下面是它的结构:
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
当然了,这个结构体还是来自MSDN的。biSize代表的是该结构体的大小,即40字节。biWidth代表的是位图的宽度,以像素为单位。biHeight代表的是位图的高度,以像素为单位。biPlanes代表的位图的平面数,平面数不同,RGB各分量所排列的顺序不一样。一般常见的是1,也就是RGB各分量是按照BGR的顺序在像素数据中排列的。biBitCount代表的是位图的位数,有1、16、8、24、32等。biCompression代表是位图的压缩方法,由于BMP位图是没有压缩的,所以通常情况下它的值都为0。biSizeImage代表的是位图像素数据的大小,就是高度乘上每行像素所占的字节数。biXPelsPerMeter代表的是水平方向的分辨率,以米为单位。这个参数没有什么太大的意义,至少现在我还没发现。所以,它通常情况下都为0,不是0也没有关系。biYPelsPerMeter代表的是垂直方向的分辨率,以米为单位,通常为0。biClrUsed代表的是位图用到的颜色数,可以设置为0,代表的是全部用到了。biClrImportant代表的是位图中重要的颜色数,可以设置为0,代表的是全部都很重要。LONG和DWORD都占4个字节,WORD占2个字节,因此,该结构体(也就是信息头)共占40字节。还要说明的一点
您可能关注的文档
- u盤量产教程.doc
- U盤量产问题解决办法.doc
- V-M雙闭环不可逆直流调速系统设计.doc
- V11TMSH命令行操作手冊.doc
- V-Ray_For_Sketchup基礎学习.doc
- V1公司重大風险解决方案(模板).doc
- V26營销策划方案.doc
- V1514V1515V1502設备吊装方案(1000T吊车)(宋2012822).doc
- VAR含義方法.doc
- varian中級微观经济学复习大纲.doc
- 专题06 经济体制(我国的社会主义市场经济体制)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题11 世界多极化与经济全球化-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 专题03 经济发展与社会进步-5年(2020-2024)高考1年模拟政治真题分类汇编(浙江专用)(解析版).docx
- 专题09 文化传承与文化创新-5年(2020-2024)高考1年模拟政治真题分类汇编(北京专用)(原卷版).docx
- 5年(2020-2024)高考政治真题分类汇编专题08 社会进步(我国的个人收入分配与社会保障)(原卷版).docx
- 专题07 探索世界与把握规律-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 5年(2020-2024)高考政治真题分类汇编专题06 经济体制(我国的社会主义市场经济体制)(原卷版).docx
- 专题11 全面依法治国(治国理政的基本方式、法治中国建设、全面推进依法治国的基本要求)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题17 区域联系与区域协调发展-【好题汇编】十年(2015-2024)高考地理真题分类汇编(解析版).docx
- 专题01 中国特色社会主义-5年(2020-2024)高考1年模拟政治真题分类汇编(原卷版).docx
最近下载
- NB_T 31083-2016风电场控制系统功能规范.pdf
- 德兴隆_PVC胶粒_A2190072365101001_2019.4.11_REACH检测报告英文版.pdf VIP
- 输液港植入术术后护理.pptx VIP
- 血液系统疾病(西安交通大学)中国大学MOOC慕课章节测验答案(课程ID:1462060167).pdf
- GB 1499.2-2024 钢筋混凝土用钢 第2部分:热轧带肋钢筋.pdf
- 征信简版电子版PDF个人信用报告必威体育精装版版2024年可编辑带水印模板.pdf
- 《高中64篇必考古诗文》.doc VIP
- Rota润唐 RTBR-601馒头面包机 馒头魔法盒说明书用户手册.pdf
- 《洋流》教学设计-优秀教案.docx
- 新人音版高中音乐必修“音乐鉴赏”《高山流水志家国——流水》说课稿.doc
文档评论(0)