Tiff的图像数据是分trip(条或带)保存,每个带保存n行。每个带数据分别保存。
一、每带保存的行数
由id=278(0x116)的IFD保存,如果采用lzw压缩,其取值一般而言=8K/width。因为lzw建议一次压缩的数据量不大于8K。
总带数=总行数/每带保存的行数;
二、带的数据地址
数据地址偏移量由id=273(0x111)的IFD保存。IFD由id,数据类型,数据长度,数据值或数据值的地址偏移量。
若有IFD:1101 0400 01000000 00C0;表示只有一个带数据,数据偏移地址是C000(假定该Tiff为"II"类,little-endian);
若有IFD:1101 0400 04000000 00C0;表示有4个数据带,4个数据的偏移地址要到C000开始取出;
三、带数据的长度
数据长度由id=279(0x117)的IFD保存。其值取得同上。
四、数据的存储形式
1、不压缩形式
按RGB或RGBA或CYMK等字节逐个保存,如下:
255 0 0 255 00 255 0 0 255 00 代表三个RGB点。
2、lzw压缩
每带数据以256开头,257结束。研究PSD的lzw压缩数据发现,lzw解压出来的数据并不是不压缩的形式,PSD还对原始数据进行了整理,即每行00 00 00 的数据等于前面不是00 00 00的数据值。如FF0000 FF0000 FF0000=》(整理)FF0000 000000 000000,对整理过的数据再lzw压缩,压缩率会提高。
3、其他压缩,未研究。
五、示例
1、2x2的红色色块,未压缩图像数据
FF | 00 | 00 | FF | 00 | 00 | FF | 00 | 00 | FF | 00 | 00 |
2、2x2的红色色块,压缩图像数据
80 | 3F | C0 | 10 | 38 | 1C | 0A | 08 | 00 | 80 | 80 |
lzw解压=>FF 00 00 00 00 00 FF 00 00 00 00 00=>(逆整理)FF 00 00 FF 00 00 FF 00 00;
附:
2x2的红色色块的文件内容,其中蓝色是0x111 IFD,粉色是地址,末尾的红色是图像数据。
00000000-0000000F | 49 I | 49 I | 2A * | 00 | 08 | 00 | 00 | 00 | 10 | 00 | FE � | 00 | 04 | 00 | 01 | 00 |
00000010-0000001F | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 01 | 03 | 00 | 01 | 00 | 00 | 00 | 02 | 00 |
00000020-0000002F | 00 | 00 | 01 | 01 | 03 | 00 | 01 | 00 | 00 | 00 | 02 | 00 | 00 | 00 | 02 | 01 |
00000030-0000003F | 03 | 00 | 03 | 00 | 00 | 00 | CE � | 00 | 00 | 00 | 03 | 01 | 03 | 00 | 01 | 00 |
00000040-0000004F | 00 | 00 | 05 | 00 | 00 | 00 | 06 | 01 | 03 | 00 | 01 | 00 | 00 | 00 | 02 | 00 |
00000050-0000005F | 00 | 00 | 11 | 01 | 04 | 00 | 01 | 00 | 00 | 00 | 92 � | 05 | 00 | 00 | 15 | 01 |
00000060-0000006F | 03 | 00 | 01 | 00 | 00 | 00 | 03 | 00 | 00 | 00 | 16 | 01 | 03 | 00 | 01 | 00 |
00000070-0000007F | 00 | 00 | 02 | 00 | 00 | 00 | 17 | 01 | 04 | 00 | 01 | 00 | 00 | 00 | 0B | 00 |
00000080-0000008F | 00 | 00 | 1A | 01 | 05 | 00 | 01 | 00 | 00 | 00 | D4 � | 00 | 00 | 00 | 1B | 01 |
00000090-0000009F | 05 | 00 | 01 | 00 | 00 | 00 | DC � | 00 | 00 | 00 | 1C | 01 | 03 | 00 | 01 | 00 |
000000A0-000000AF | 00 | 00 | 01 | 00 | 00 | 00 | 28 ( | 01 | 03 | 00 | 01 | 00 | 00 | 00 | 02 | 00 |
000000B0-000000BF | 00 | 00 | 3D = | 01 | 03 | 00 | 01 | 00 | 00 | 00 | 02 | 00 | 00 | 00 | 49 I | 86 � |
000000C0-000000CF | 01 | 00 | AE � | 04 | 00 | 00 | E4 � | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 08 | 00 |
000000D0-000000DF | 08 | 00 | 08 | 00 | 80 � | FC � | 0A | 00 | 10 | 27 ' | 00 | 00 | 80 � | FC � | 0A | 00 |
000000E0-000000EF | 10 | 27 ' | 00 | 00 | 38 8 | 42 B | 49 I | 4D M | 03 | ED � | 00 | 00 | 00 | 00 | 00 | 10 |
000000F0-000000FF | 00 | 48 H | 00 | 00 | 00 | 01 | 00 | 02 | 00 | 48 H | 00 | 00 | 00 | 01 | 00 | 02 |
00000100-0000010F | 38 8 | 42 B | 49 I | 4D M | 04 | 0D | 00 | 00 | 00 | 00 | 00 | 04 | 00 | 00 | 00 | 78 x |
00000110-0000011F | 38 8 | 42 B | 49 I | 4D M | 04 | 19 | 00 | 00 | 00 | 00 | 00 | 04 | 00 | 00 | 00 | 1E |
00000120-0000012F | 38 8 | 42 B | 49 I | 4D M | 03 | F3 � | 00 | 00 | 00 | 00 | 00 | 09 | 00 | 00 | 00 | 00 |
00000130-0000013F | 00 | 00 | 00 | 00 | 01 | 00 | 38 8 | 42 B | 49 I | 4D M | 04 | 0A | 00 | 00 | 00 | 00 |
00000140-0000014F | 00 | 01 | 00 | 00 | 38 8 | 42 B | 49 I | 4D M | 27 ' | 10 | 00 | 00 | 00 | 00 | 00 | 0A |
00000150-0000015F | 00 | 01 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 02 | 38 8 | 42 B | 49 I | 4D M | 03 | F5 � |
00000160-0000016F | 00 | 00 | 00 | 00 | 00 | 48 H | 00 | 2F / | 66 f | 66 f | 00 | 01 | 00 | 6C l | 66 f | 66 f |
00000170-0000017F | 00 | 06 | 00 | 00 | 00 | 00 | 00 | 01 | 00 | 2F / | 66 f | 66 f | 00 | 01 | 00 | A1 � |
00000180-0000018F | 99 � | 9A � | 00 | 06 | 00 | 00 | 00 | 00 | 00 | 01 | 00 | 32 2 | 00 | 00 | 00 | 01 |
00000190-0000019F | 00 | 5A Z | 00 | 00 | 00 | 06 | 00 | 00 | 00 | 00 | 00 | 01 | 00 | 35 5 | 00 | 00 |
000001A0-000001AF | 00 | 01 | 00 | 2D - | 00 | 00 | 00 | 06 | 00 | 00 | 00 | 00 | 00 | 01 | 38 8 | 42 B |
000001B0-000001BF | 49 I | 4D M | 03 | F8 � | 00 | 00 | 00 | 00 | 00 | 70 p | 00 | 00 | FF � | FF � | FF � | FF � |
000001C0-000001CF | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � |
000001D0-000001DF | FF � | FF � | 03 | E8 � | 00 | 00 | 00 | 00 | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � |
000001E0-000001EF | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | 03 | E8 � |
000001F0-000001FF | 00 | 00 | 00 | 00 | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � |
00000200-0000020F | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | 03 | E8 � | 00 | 00 | 00 | 00 |
00000210-0000021F | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � | FF � |
00000220-0000022F | FF � | FF � | FF � | FF � | FF � | FF � | 03 | E8 � | 00 | 00 | 38 8 | 42 B | 49 I | 4D M | 04 | 08 |
00000230-0000023F | 00 | 00 | 00 | 00 | 00 | 10 | 00 | 00 | 00 | 01 | 00 | 00 | 02 | 40 @ | 00 | 00 |
00000240-0000024F | 02 | 40 @ | 00 | 00 | 00 | 00 | 38 8 | 42 B | 49 I | 4D M | 04 | 1E | 00 | 00 | 00 | 00 |
00000250-0000025F | 00 | 04 | 00 | 00 | 00 | 00 | 38 8 | 42 B | 49 I | 4D M | 04 | 1A | 00 | 00 | 00 | 00 |
00000260-0000026F | 00 | 6B k | 00 | 00 | 00 | 06 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
00000270-0000027F | 00 | 02 | 00 | 00 | 00 | 02 | 00 | 00 | 00 | 05 | 67 g | 2A * | 68 h | 07 | 98 � | 98 � |
00000280-0000028F | 00 | 2D - | 00 | 31 1 | 00 | 00 | 00 | 01 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
00000290-0000029F | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 01 | 00 | 00 | 00 | 00 |
000002A0-000002AF | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 02 | 00 | 00 | 00 | 02 | 00 | 00 | 00 | 00 |
000002B0-000002BF | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
000002C0-000002CF | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 38 8 | 42 B |
000002D0-000002DF | 49 I | 4D M | 04 | 11 | 00 | 00 | 00 | 00 | 00 | 01 | 01 | 00 | 38 8 | 42 B | 49 I | 4D M |
000002E0-000002EF | 04 | 14 | 00 | 00 | 00 | 00 | 00 | 04 | 00 | 00 | 00 | 01 | 38 8 | 42 B | 49 I | 4D M |
000002F0-000002FF | 04 | 0C | 00 | 00 | 00 | 00 | 02 | 38 8 | 00 | 00 | 00 | 01 | 00 | 00 | 00 | 02 |
00000300-0000030F | 00 | 00 | 00 | 02 | 00 | 00 | 00 | 08 | 00 | 00 | 00 | 10 | 00 | 00 | 02 | 1C |
00000310-0000031F | 00 | 18 | 00 | 01 | FF � | D8 � | FF � | E0 � | 00 | 10 | 4A J | 46 F | 49 I | 46 F | 00 | 01 |
00000320-0000032F | 02 | 01 | 00 | 48 H | 00 | 48 H | 00 | 00 | FF � | EE � | 00 | 0E | 41 A | 64 d | 6F o | 62 b |
00000330-0000033F | 65 e | 00 | 64 d | 80 � | 00 | 00 | 00 | 01 | FF � | DB � | 00 | 84 � | 00 | 0C | 08 | 08 |
00000340-0000034F | 08 | 09 | 08 | 0C | 09 | 09 | 0C | 11 | 0B | 0A | 0B | 11 | 15 | 0F | 0C | 0C |
00000350-0000035F | 0F | 15 | 18 | 13 | 13 | 15 | 13 | 13 | 18 | 11 | 0C | 0C | 0C | 0C | 0C | 0C |
00000360-0000036F | 11 | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C |
00000370-0000037F | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 01 | 0D | 0B |
00000380-0000038F | 0B | 0D | 0E | 0D | 10 | 0E | 0E | 10 | 14 | 0E | 0E | 0E | 14 | 14 | 0E | 0E |
00000390-0000039F | 0E | 0E | 14 | 11 | 0C | 0C | 0C | 0C | 0C | 11 | 11 | 0C | 0C | 0C | 0C | 0C |
000003A0-000003AF | 0C | 11 | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C |
000003B0-000003BF | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | 0C | FF � | C0 � |
000003C0-000003CF | 00 | 11 | 08 | 00 | 02 | 00 | 02 | 03 | 01 | 22 " | 00 | 02 | 11 | 01 | 03 | 11 |
000003D0-000003DF | 01 | FF � | DD � | 00 | 04 | 00 | 01 | FF � | C4 � | 01 | 3F ? | 00 | 00 | 01 | 05 | 01 |
000003E0-000003EF | 01 | 01 | 01 | 01 | 01 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 03 | 00 | 01 | 02 |
000003F0-000003FF | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 01 | 00 | 01 | 05 | 01 | 01 | 01 | 01 |
00000400-0000040F | 01 | 01 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 01 | 00 | 02 | 03 | 04 | 05 | 06 |
00000410-0000041F | 07 | 08 | 09 | 0A | 0B | 10 | 00 | 01 | 04 | 01 | 03 | 02 | 04 | 02 | 05 | 07 |
00000420-0000042F | 06 | 08 | 05 | 03 | 0C | 33 3 | 01 | 00 | 02 | 11 | 03 | 04 | 21 ! | 12 | 31 1 | 05 |
00000430-0000043F | 41 A | 51 Q | 61 a | 13 | 22 " | 71 q | 81 � | 32 2 | 06 | 14 | 91 � | A1 � | B1 � | 42 B | 23 # | 24 $ |
00000440-0000044F | 15 | 52 R | C1 � | 62 b | 33 3 | 34 4 | 72 r | 82 � | D1 � | 43 C | 07 | 25 % | 92 � | 53 S | F0 � | E1 � |
00000450-0000045F | F1 � | 63 c | 73 s | 35 5 | 16 | A2 � | B2 � | 83 � | 26 & | 44 D | 93 � | 54 T | 64 d | 45 E | C2 � | A3 � |
00000460-0000046F | 74 t | 36 6 | 17 | D2 � | 55 U | E2 � | 65 e | F2 � | B3 � | 84 � | C3 � | D3 � | 75 u | E3 � | F3 � | 46 F |
00000470-0000047F | 27 ' | 94 � | A4 � | 85 � | B4 � | 95 � | C4 � | D4 � | E4 � | F4 � | A5 � | B5 � | C5 � | D5 � | E5 � | F5 � |
00000480-0000048F | 56 V | 66 f | 76 v | 86 � | 96 � | A6 � | B6 � | C6 � | D6 � | E6 � | F6 � | 37 7 | 47 G | 57 W | 67 g | 77 w |
00000490-0000049F | 87 � | 97 � | A7 � | B7 � | C7 � | D7 � | E7 � | F7 � | 11 | 00 | 02 | 02 | 01 | 02 | 04 | 04 |
000004A0-000004AF | 03 | 04 | 05 | 06 | 07 | 07 | 06 | 05 | 35 5 | 01 | 00 | 02 | 11 | 03 | 21 ! | 31 1 |
000004B0-000004BF | 12 | 04 | 41 A | 51 Q | 61 a | 71 q | 22 " | 13 | 05 | 32 2 | 81 � | 91 � | 14 | A1 � | B1 � | 42 B |
000004C0-000004CF | 23 # | C1 � | 52 R | D1 � | F0 � | 33 3 | 24 $ | 62 b | E1 � | 72 r | 82 � | 92 � | 43 C | 53 S | 15 | 63 c |
000004D0-000004DF | 73 s | 34 4 | F1 � | 25 % | 06 | 16 | A2 � | B2 � | 83 � | 07 | 26 & | 35 5 | C2 � | D2 � | 44 D | 93 � |
000004E0-000004EF | 54 T | A3 � | 17 | 64 d | 45 E | 55 U | 36 6 | 74 t | 65 e | E2 � | F2 � | B3 � | 84 � | C3 � | D3 � | 75 u |
000004F0-000004FF | E3 � | F3 � | 46 F | 94 � | A4 � | 85 � | B4 � | 95 � | C4 � | D4 � | E4 � | F4 � | A5 � | B5 � | C5 � | D5 � |
00000500-0000050F | E5 � | F5 � | 56 V | 66 f | 76 v | 86 � | 96 � | A6 � | B6 � | C6 � | D6 � | E6 � | F6 � | 27 ' | 37 7 | 47 G |
00000510-0000051F | 57 W | 67 g | 77 w | 87 � | 97 � | A7 � | B7 � | C7 � | FF � | DA � | 00 | 0C | 03 | 01 | 00 | 02 |
00000520-0000052F | 11 | 03 | 11 | 00 | 3F ? | 00 | E7 � | 12 | 5C \ | 6A j | 4B K | 15 | F4 � | E7 � | FF � | D9 � |
00000530-0000053F | 38 8 | 42 B | 49 I | 4D M | 04 | 21 ! | 00 | 00 | 00 | 00 | 00 | 55 U | 00 | 00 | 00 | 01 |
00000540-0000054F | 01 | 00 | 00 | 00 | 0F | 00 | 41 A | 00 | 64 d | 00 | 6F o | 00 | 62 b | 00 | 65 e | 00 |
00000550-0000055F | 20 | 00 | 50 P | 00 | 68 h | 00 | 6F o | 00 | 74 t | 00 | 6F o | 00 | 73 s | 00 | 68 h | 00 |
00000560-0000056F | 6F o | 00 | 70 p | 00 | 00 | 00 | 13 | 00 | 41 A | 00 | 64 d | 00 | 6F o | 00 | 62 b | 00 |
00000570-0000057F | 65 e | 00 | 20 | 00 | 50 P | 00 | 68 h | 00 | 6F o | 00 | 74 t | 00 | 6F o | 00 | 73 s | 00 |
00000580-0000058F | 68 h | 00 | 6F o | 00 | 70 p | 00 | 20 | 00 | 36 6 | 00 | 2E . | 00 | 30 0 | 00 | 00 | 00 |
00000590-0000059F | 01 | 00 | 80 � | 3F ? | C0 � | 10 | 38 8 | 1C | 0A | 08 | 00 | 80 � | 80 � | 00 |