详说如何用C,C++语言和JAVA 读入位图和保存位图.pdfVIP

详说如何用C,C++语言和JAVA 读入位图和保存位图.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
详说如何用 C ,C ++语言和JAVA 读入位图和保存位图 作者:彭千贺 邮件:pengqianhe@ 博客: 声明:本篇文章由彭千贺原创,禁止任何形式的修改,如有发现,即追究其相关的法律责 任。但是,任何人均可以自由传播本文章的副本。如需要修改,请邮件联系我。 我这里要说的主要是如何读入 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 各分量所排列的顺序

文档评论(0)

tcpe + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档