读写TIFF图像函数原理.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二.读取tiff/tif文件 1.tiff/tif文件结构: 1.tiff/tif文件结构: TIF图由四部分构成:图像文件头(IFH),图像文件目录(IFD),目录入口(DE),图像数据; IFH数据结构包含3个成员共计8个字节。 第一个成员Byte order可能是“MM”(0x4d4d)或“II”(0x4949),0x4d4d表示该TIFF图是摩托罗拉整数格式 0x4949表示该图是Intel整数格式;当Byte order为”MM”时,则之后的由16或32位数组成的数据都是从高字节到低字节顺序存储的,如果为”II”,则字节存储顺序相反; 第二个成员Version总是包含十进制42(0x2a),它用于进一步校验该文件是否为TIF格式,实际上,42这个数大概永远不会变化; 第三个成员是第一个IFD相对文件开始处的偏移量(最小为8,因为IFH结构已经占据8bytes)。 IFD是TIF图中最重要的数据结构,它包含了一个TIF文件中最重要的信息,一个TIF图可能有一个或多个IFD,这说明文件中有一个或多个图像,每个IFD标识1个图像的基本属性。 IFD结构中包含了三类成员。 第一类(个)成员Directory Entry Count(2bytes)指出该结构里面有多少个目录入口; 第二类成员就是N个线性排列的DE(12bytes)序列,数量不定(这就是 为什么称TIF格式文件为可扩充标记的文件,甚至用户可以添加自定义的标记属性),每个DE标识了图像的某一个属性; 最后就是一类(个)偏移量(4bytes), 标识下一个文件目录相对于文件开始处的位置,当然,如果该TIF文件只包含了一幅图像,那么就只有一个IFD,显然,这个偏移量就等于0; DE共12字节,一个DE就是一幅图像的某一个属性。例如图像的大小、相对位置(条带偏移量)、分辨率、是否压缩、像素的行列数、一个像素由几位表示(1位代表黑白两色,8位代表256色等等)等。 其中前两个字节是标记码tag(2bytes)。公用标记码是大于254(十六进制FE)的标记码,最大是321(141H)。大于32768(8000H)的是私有码。tag成员是该属性的编号,在图像文件目录中,它是按照升序排列的。我们可以通过读这些编号,然后到TIF格式官方白皮书中查找相应的含义。属性是用数据来表示的,那么type(2bytes)就是代表着该数据的类型,TIF官方指定的有5种数据类型。 1=BYTE 8比特无符号整型。 2=ASXII 8比特的字节,存储7比特的ASCII码;最后 一个字节必须是NUL(二进制0)。 3=SHORT 16比特(2字节)无符号整型。 4=LONG 32比特(4字节)无符号整型。 5=RATIONAL 两个LONG型:第一个代表一个分数的分子,第二个是分母。 ASCII部分的长度的值包含NUL。如果有必要填充,长度将不会包含 填充部分。需要说明的是没有像Pascal风格的字符串那样的出始长度字节。 任何ASCII域可能包含多个字符串,每个以一个NUL结束。一个单独的字符串在从我任何可能的时候都是最好的。多重字符串域的长度是域中所有字符串加上它们结尾的NUL的字节数。在两个字符串中只能有一个NUL,所以跟在第一个字符串后的字符串经常在奇数个字节处开始。 读取程序必须检查类型来证实它包含了期望的值。TIFF格式在某些域中目前允许不只一种的有效类型。例如,图像宽度和图像高度通常指明是SHORT类型。但是行数多于64000的图像必须用LONG类型在域类型中。TIFF读取程序对于无符号整型来说应该接受BYTE,SHORT和LONG类型的值。这允许一个单独的程序来读取任何整型值,使阅读更强大,在某些情况下还节省磁盘。 在TIFF6.0中,一些新的字段类型已经定义: 6=SBYTE 一个8比特的有符号整数; 7=UNDEFINED 一个8比特的字节,有可能存储任何类型,取决于该字段的定义。 8=SSHORT 一个16比特(2字节)的有符号整数。 9=SLONG 一个32比特(四字节)的有符号整数。 10=SRATIONAL 两个SLONG型:第一个是分数的分子,第二个是分母。 11=FLOAT 单精度(四字节)IEEE类型。 12=DOUBLE 双精度(八字节)IEEE类型。 这些新字段类型也受TIFF文件头中字节顺序(II或MM)的制约。 Length(4bytes)成员是数据的数量而不是数据类型的长度(长度为sizeof(type)*length)。 第4个成员valueOffset(4bytes)很重要,它是tag标识的属性代表的变量值相对文件开始处的偏移量。如果变量值占用的空间(长

文档评论(0)

dmz158 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档