tiff全名 tag image file format,是一种基于标志域的图形。
tiff图像是靠指针连接来组织数据的,文件头和数据可以任意数据的存储。tiff由四种类型:tiff-b,二色;tiff-g,黑白灰度;tiff-p,带调色板的彩色图形;tiff-r,适合rgb色彩的图形。
tiff一般来说由四部分组成:文件头、文件目录、目录内容、图像数据;如下图,下面具体说明。
文件头部分有8个字节,格式为:
024
ii/mm(表示字节序) |
42(版本号) |
文件目录在整个文件的偏移量,是一个指针,指向ifd的开始部分 |
5 8
注意这里的值不一定就是紧接头后的
0214
ifd的总项数 |
项1(12个字节) |
项2。。。。(12个字节) | |
下一个ifd的开始地址(用于保存多个文件) |
每个项的12个字节,其是连续的,有前两个字节说明其项的总数。对于不同的tiff格式文件,这里的不同。
每个目录项由12个字节组成,格式如下:
tag(2个字节) |
tag的数据类型 |
数据长度 | |
数据值或值的偏移(文件范围) |
tag的值由tiff标准定义;不同的tag表示不同的意思,例如0x0100表示图像的宽度。
tag的数据类型表示数据值的类型;例如使用long类型来表示宽度。
数据长度是以数据类型为单位的,真正的数据长度是:数据长度*sizeof(数据类型)
数据值或值的偏移:如果数据长度小于4个字节,一般直接以该字段来表示其值,如果其值大于4个字节,就指定一个文件范围的偏移地址,从那里开始的“数据长度*sizeof(数据类型)”个字节表示该标志的值。
紧接上面数据之后就是图像数据了;图像数据的存储形式有不同的形式,有以像素位来存储的,也有以颜色面来存储的;具体的存储方式在目录项中定义。
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 |
|
每个分量(r,g,b)是怎么存储的,1表示按照rgbrgb的顺序来存储 |
296 |
128 |
xresolution和yresolution的单位 |
更多的参考tiff标准
为了保证图片的宽度,不得不将一些文字折行。