图像文件头解析.docVIP

  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文档。上传文档
查看更多
图像文件头解析

文件在计算机中是以二进制存放的,文本、图像、音频、视频对于计算机来说都是一段二进制数字。那计算机怎么来区分这些不同类型的文件呢? 首先是通过文件的扩展名,但文件可以没有扩展名,而且扩展名也不一定与文件类型匹配,例如把一个txt文件扩展名改为bmp后,它还是一个文本文件而不是图片。其实大多文件的类型信息都存储在文件开头的一段二进制中,计算机程序通过这些信息判断出文件的类型,进行后续的操作。 具体到图像部分,图像又分为多种类型,如.bmp .jpg .gif .tiff等。这些不同的类型就是通过文件开头的二进制信息来区分的。下面举例来看一下: lena.bmp 用二进制文件查看器打开,左侧为16进制形式,两位对应一个字节,右侧为每个字节对应的字符: 我们看到.bmp格式的图像开头的二进制对应的内容是BM,这是位图格式文件的统一规定。其实每一种文件都有自己的标识,用于区别于其它文件类型,当开发一种新的文件类型时,就要设计一套之前没有过的标识。 在文件类型确定后,BM后面的一部分文件头信息用于描述这种类型的文件。其中前几位的用处如下: typedef struct tagBITMAPFILEHEADER { ? ? WORD bfType;//位图文件的类型,必须为BM(1-2字节) ? ? DWORD bfSize;//位图文件的大小,以字节为单位(3-6字节,低位在前) ? ? WORD bfReserved1;//位图文件保留字,必须为0(7-8字节) ? ? WORD bfReserved2;//位图文件保留字,必须为0(9-10字节) ? ? DWORD bfOffBits;//位图数据的起始位置,以相对于位图(11-14字节,低位在前) ? ? //文件头的偏移量表示,以字节为单位 }BITMAPFILEHEADER; 具体.bmp文件头部还包含什么信息,可以参考百度。 下面我们再来看一下.jpg格式的文件: lena.jpg 十六进制形式为: 我们看到.jpg与.bmp格式的图像文件头信息差别很大,表示的信息也不同,所以读取时也要区别对待。其实很多图像类库都提供了统一的读取函数,不同类型的图像读进内存后是统一的格式,在此基础上进行处理,不用我们再去分类读取。 常见的图像类库有: MFC中的CBitmap 、CImage opencv中的IplImage 、Mat CxImage FreeImage Cimg 等,具体都有什么样的特点,可以参考百度。 如果自己也想开发一套图像类库的话,就要区分不同的类型,解析不同的压缩方式,这个工作量是很大的。但是如果只是想了解一下图像内部结构的话,可以用CFile读取位图,因为位图一般没有经过压缩,易于理解。

文档评论(0)

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

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

1亿VIP精品文档

相关文档