随笔 - 493  文章 - 0  评论 - 97  阅读 - 239万

TIFF图像文件格式分析

一、           介绍

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

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

 

二、           组成

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

 

三、           具体格式

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文件格式分析

 

为了保证图片的宽度,不得不将一些文字折行。

 



posted on   清清飞扬  阅读(4112)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
< 2011年4月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7

点击右上角即可分享
微信分享提示