TIFF图像文件格式分析

一、           介绍

TIFF全名 tag image file format,是一种基于标志域的图形。

TIFF图像是靠指针连接来组织数据的,文件头和数据可以任意数据的存储。TIFF由四种类型:TIFF-B,二色;TIFF-G,黑白灰度;TIFF-P,带调色板的彩色图形;TIFF-R,适合RGB色彩的图形。

 

二、           组成

TIFF一般来说由四部分组成:文件头、文件目录、目录内容、图像数据;如下图,下面具体说明。

r_tiffstruct.jpg



三、           具体格式

1.        文件头部分

文件头部分有8个字节,格式为:

0                                      2                                      4

II/MM(表示字节序)

42(版本号)

文件目录在整个文件的偏移量,是一个指针,指向IFD的开始部分

5                                                                                                                                                                                                                                                                              8

注意这里的值不一定就是紧接头后的0A地址,可以是任意的。

 

2.        文件目录部分

0                                    2                                      14

IFD的总项数

1(12个字节)

2。。。。(12个字节)

下一个IFD的开始地址(用于保存多个文件)

每个项的12个字节,其是连续的,有前两个字节说明其项的总数。对于不同的TIFF格式文件,这里的不同。

 

3.        目录项

每个目录项由12个字节组成,格式如下:

 

TAG(2个字节)

TAG的数据类型

数据长度

数据值或值的偏移(文件范围)

TAG的值由TIFF标准定义;不同的TAG表示不同的意思,例如0X0100表示图像的宽度。

TAG的数据类型表示数据值的类型;例如使用long类型来表示宽度。

数据长度是以数据类型为单位的,真正的数据长度是:数据长度*sizeof(数据类型)

数据值或值的偏移:如果数据长度小于4个字节,一般直接以该字段来表示其值,如果其值大于4个字节,就指定一个文件范围的偏移地址,从那里开始的“数据长度*sizeof(数据类型)”个字节表示该标志的值。

 

4.        图像数据:

紧接上面数据之后就是图像数据了;图像数据的存储形式有不同的形式,有以像素位来存储的,也有以颜色面来存储的;具体的存储方式在目录项中定义。

四、           一些TAG值

TAG值

说明

十进制

16进制

256

100

图像宽度

257

101

图像高度

258

102

BitsPerSample,对于RGB是8,8,8,通过偏移来表示

259

103

压缩方式(1/2/32773),1为不压缩

262

106

光度滴定,对于RGB图,该值是2

273

111

带的偏移,每个带是不同的

277

115

每像素的颜色成分,对于RGB这个值一般是3,如果需要其他有ExtraSamples标志

278

116

每带的行数

279

117

每带中压缩之后的数据字节常长度

284

11C

每个分量(R,G,B)是怎么存储的,1表示按照RGBRGB的顺序来存储

296

128

Xresolution和Yresolution的单位

更多的参考TIFF标准

 

五、           一个TIFF文件格式分析

r_tiffile.jpg

转载自:http://www.cppblog.com/windcsn/archive/2005/11/16/1158.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.该程序用QT开发,实现图片导入、显示、缩放、拖动及处理(冷暖色、灰度、亮度、饱和、模糊、锐化)。 经实测,我写的这个软件在导入10000*7096像素的超大图片的时候,缩放的速度比2345看图软件还快,2345缩放超大图会卡顿,但本软件不会^_^ 关于程序中缩放拖动部分的说面参见我的博客https://blog.csdn.net/weixin_43935474/article/details/89327314; 2.载入图片后,鼠标移动的时候可以显示鼠所在点的图像的坐标以及灰度; 3.缩放的时候,图片右上角可以显示当前图片的缩放比例; 4.用户可导入16位深的tiff灰度图文件(一般来说是由相机拍摄的灰度图数据),导入16位深的tiff的时候,用户需要先点击界面左上角的checkbox,然后再导入tiff图片,否则图片解析不出来。 注:Qt自带的QImage只能导入8位深的tiff灰度图,如果用qt的QImage导入16位深的灰度图,图像数据会被强制转换成argb格式的图像,数据就被更改了,所以我自己编写一个解析tiff文件的功能,我翻阅了很多博客,其中如下链接给我的帮助最大: https://blog.csdn.net/chenlu5201314/article/details/56276903 上述博客作为详细解析tiff文件结构的说明文档,写的非常详细,我也是根据上面的内容,自己编写了一个解析tiff文件的类(当然功能很少,只能解析符合特定条件的tiff文件) //************************************************************ //by Bruce Xu //注:解析tiff的类只解析特定的tiff文件! //1.解析的tiff文件中只存在一幅图,如果文件中存在多幅图,本类不支持解析! //2.图像数据为8位或16位深度的灰度图,如果是其他类型的图片,本类不支持解析! //3.图片没有被压缩过! //************************************************************

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值