冒险解谜游戏中文网 ChinaAVG

标题: 【汉化资料】TGA图像文件格式资料 [打印本页]

作者: shane007    时间: 2009-6-3 22:25
标题: 【汉化资料】TGA图像文件格式资料
原文- M# K: Z( s8 F) e
http://dev.gameres.com/Program/Visual/Other/TGAFormat.htm+ K2 N6 W" w+ m( d
  5 d4 x' Z2 L7 D' [$ L
根据david mcduffe编写的TGA文件格式资料翻译而成
; [" \* C% i, y * G  |- F; J2 t0 O$ D8 x
本文档是为满足许多对 TGA 图像格式的了解需要而创建的。本文摘录自truevision 技术指南的附录 C,如果+ x( Q9 G+ L; [
需要更进一步的信息,请致信以下地址:
3 N, h) s0 p/ t( y* p, l
$ Q- ~4 X- L' `3 g5 B           at&t
+ ]' d+ F, ~) _9 \           electronic photography and imaging center2 ~# h9 A9 |$ \: b8 z$ S6 `) r
           2002 wellesley ave.* k, q) O5 ]0 W( a
           indianapolis, in 42619& X/ G4 _2 G/ Y6 B
本文档不求全面,但力求准确。如果你发现了任何拼写错误或内容错误,请告诉我,( david mcduffe, , g" Z! l- \& h) c' {7 ~! P/ {
75530,2626 ),我将改正这些错误,谢谢。* t% [8 g- u& d

4 M/ W1 L' l9 C- J. S不全面的原因是 TGA 包含了超过六种图像文件格式,而其中的几种较为常用。 我选择了我现在使用的格式并  @% v2 y1 d0 d% S( _
在本文中加以详解。 如果你需要本文中没有包含的格式说明,你可以与你的 truevision 代理商联系。
: J) O1 f0 [7 |( s9 M对所有的 TGA 格式的文件而言,其第三字节(二进制整数)用来区别各种不同的 TGA 文件。下面列出了该字& j! p4 x" @3 I+ Y6 D' a
节表明的对应文件类型:% a, [8 b. W+ {
    0  -  文件中没有图像数据; v8 e6 m7 M7 c9 {
    1  -  未压缩的,颜色表图像9 ]6 j/ V/ A5 Q% k' ^' [- T1 q
    2  -  未压缩的,rgb 图像# g- W8 [* k0 H7 ^
    3  -  未压缩的,黑白图像
( ^/ I/ m; G' f" x; x) A    9  -  runlength 编码的颜色表图像
  @2 E: b, R' a0 O1 T    10 -  runlength 编码的 rgb 图像/ a, x" m0 N! t% ]1 R2 z0 l
    11 -  压缩的,黑白图像
9 X7 J; c* z8 M+ f) Z    32 -  使用 huffman,delta 和 runlength 编码的颜色表图像
1 J/ Q% s9 ?, q2 }8 h1 D    33 -  使用 huffman,delta 和 runlength 编码的颜色映射图像,4 趟四叉树类型处理。* t3 p) z, C2 ^+ F
    本文仅仅描述对应 1,2,9 和 10 的文件格式。
! H3 r8 w  j, }: k& H7 O
( o" b- m- Y5 C( w--------------------------------------------------------------------------------7 _9 [4 Z7 q" _% @" f
|数据类型 1: 颜色表(color-mapped)图像1 N% z- t4 t9 g) Y. D$ k
|--------|--------|------------------------------------------------------------
9 a7 j5 ^" o. Z) e/ N% f/ f|  偏移  |  长度  |                            描述0 Q4 P7 C/ ]3 p3 o1 R2 K% c
|--------|--------|------------------------------------------------------------6 ^1 i1 R8 [. a7 o  x
|    0   |     1  |  图像信息字段(见本子表的后面)的字符数               
% U- J7 U* N2 |6 r6 e|        |        |                                                            : t' E8 I. V, t' n3 u( n$ m; S
|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度     1 b" c# X1 V% s# v( |+ j
|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的     
3 U) {7 G# B, H) s  z4 C3 d6 E3 R|        |        |  信息字段。                                   
* t: w* F1 n6 N; Z1 M  A; `3 N  n|        |        |                                         ; p/ y1 C, w1 n& J. w
|        |        |                                                            + Y' `9 O* p$ e+ E5 m/ r: F
|--------|--------|------------------------------------------------------------: _4 P9 `* N) C$ O& s6 f
|    1   |     1  |  颜色表的类型                                             O" M5 x: M- T! s) M7 \7 `7 {. o
|        |        |                                                            
# L2 T- Q, B0 U; C|        |        |  该字段为表示对应格式 1 的图像而包含一个二进制 1           
! {4 ?: g2 ~$ x|        |        |                                                            
; @) M; Z* Q8 I& i1 `; T1 ~7 T9 W|--------|--------|------------------------------------------------------------
" H: A! b; h! y! z/ p  v% y* I|    2   |     1  |  图像类型码                                              b6 @- N3 p( {" f
|        |        |                                                            - p% m! d/ Q3 z  m0 p& X" u0 v
|        |        |  该字段总为 1 , 这也是此类型为格式 1 的原因               
6 ?6 b* L. _, K7 D- t|        |        |                                                            % K9 D& \) u6 v! `% q1 G" c
|--------|--------|------------------------------------------------------------) e; e- d: ~$ {
|    3   |     5  |  颜色表规格                                       
' L. j1 k5 X/ n& ~5 O* K5 U; E& d1 f|        |        |                                            2 w) S. j" a& p+ E4 _
|    3   |     2  |  颜色表首址                                                " B3 Z; Z4 B  |: x
|        |        |  颜色表首元表项的整型(低位-高位)索引               
6 l1 I4 [+ c! C$ H1 Q0 P- A7 m9 w|        |        |                                                              `- f, p4 O8 j$ O6 B7 A
|    5   |     2  |  颜色表的长度                                          
; s( E( p4 C5 m; x8 h- E8 u|        |        |  颜色表的表项总数,整型(低位-高位)                   : V, V/ y8 W; L7 _( S
|        |        |                                                            
" a2 m# r- t+ j3 b% K|    7   |     1  |  颜色表表项的位(bit)数                                   , F& F& T8 a" j8 R3 t" S
|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA % e6 g0 c4 V+ j. \" H/ j
|        |        |                                     0 ?6 n" ^5 R6 R2 {  U; j3 W2 T
|        |        |                                                            
' X# K0 J7 l$ F- J! ||--------|--------|------------------------------------------------------------
% ~3 |7 `0 ^6 P; l4 [  J5 }4 x. f|    8   |    10  |  图像规格                                               
1 V9 Y; k2 b4 t1 u4 X# @, b: r|        |        |                                                            
) B, F9 V3 j0 E- @) b. _, e1 M|    8   |     2  |  图像 x 坐标起始位置                                       
- p# [/ B+ I% ||        |        |  图像左下角 x 坐标的整型(低位-高位)值               
: z, N$ U* j+ Z, F3 N$ g|        |        |                                                         $ g& m  U% ~' P. W6 M% Q+ h" D
|        |        |                                                            / W4 x% p4 w8 y* i5 |2 f# T  o
|   10   |     2  |  图像 y 坐标起始位置                                       
( |2 u+ g8 A6 u1 s5 n|        |        |  图像左下角 y 坐标的整型(低位-高位)值               
2 n) w& X, k; w* s|        |        |                                                         
; F3 B. W3 w( Z8 ]& d, c* e|        |        |                                                            4 R& P6 m( p7 L( r3 n9 x
|   12   |     2  |  图像宽度                                                   8 c. j7 @! R! Q1 x' y
|        |        |  以像素为单位,图像宽度的整型(低位-高位)值           
, i' p4 |) d' b& c) r" y4 u8 Z|        |        |                                                            
# f8 U8 P& y/ }' b8 D) A|   14   |     2  |  图像高度                                                   
: t- p$ }) T  M|        |        |  以像素为单位,图像高度的整型(低位-高位)值               
: F  ^3 [+ c& m- U|        |        |                                                            ( d& o2 E5 u) U0 A- T
|   16   |     1  |  图像每像素存储占用位(bit)数                             8 j( w# L( O2 _3 @
|        |        |                                             
" ^0 _' n6 K" g+ N4 n  w|        |        |                                                            6 F/ v$ |+ K0 Q8 g
|   17   |     1  |  图像描述符字节                                           , a) W: C* \" a, B, s* P! j2 t
|        |        |  bits 3-0 - 每像素的属性位(bit)数                   5 J& ~9 E, z5 X
|        |        |                                                        
! q* {6 l0 b- {, b( k2 {: D|        |        |  bit 4    - 保留,必须为 0                              
0 k( i( d% o1 p+ `; x|        |        |  bit 5    - 屏幕起始位置标志                           + U' l% j/ l& H& a( n7 B" R
|        |        |             0 = 原点在左下角                       
6 r! ^8 ?9 {5 G' ||        |        |             1 = 原点在左上角                        
6 c' i+ }1 S) @# o|        |        |             truevision 图像必须为 0                        
0 l) t) W( P# F3 I|        |        |  bits 7-6 - 交叉数据存储标志                       
% X' g) p4 [- O/ m8 Q1 m/ L|        |        |             00 = 无交叉                                   $ b6 w% y$ m" v; p5 L( |& @
|        |        |             01 = 两路奇/偶交叉                        4 b( y% m6 X! j0 @9 r
|        |        |             10 = 四路交叉                               / M9 X5 i. L# S: L* L( h0 S3 l
|        |        |             11 = 保留                                   % B% F) c- ?( Q* f4 {+ p5 |0 G" u
|        |        |  这一项应该设为 0,不要问我为什么                  
5 q8 V! M3 h; Y: A2 i|        |        |                                                            
) n' s# A/ D7 P& Y7 {|--------|--------|------------------------------------------------------------: B2 N0 [# y( H) _% i! ?
|   18   |  可变  |  图像信息字段                                       
, e+ n  _+ X0 p: c% Z|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   & r) H  x9 J$ M$ z. J5 Z1 P  l
|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以   
$ w0 m: c& F  p# \6 P|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据     X' w1 N' x: T! K: O/ o% [
|        |        |  之后                              
8 Y- W6 e4 f6 _|        |        |                                    1 K+ [. ^3 J! E6 a& q: U' T5 R
|        |        |                                                            
4 V9 b( Q: Z0 B: N* D$ z|--------|--------|------------------------------------------------------------
3 i, F. B$ {3 V/ L|  可变  |  可变  |  颜色表数据                                                ' ^4 a4 F& v" V
|        |        |                                                            7 b9 h) j7 a" k% C# _! ^) g5 y! F) {
|        |        |  起始位置由前一个字段的大小决定;其长度由单项数据大小      
4 T$ R1 b+ d7 Q( z+ X% F6 \|        |        |  和数据项数目决定(在前面相应的说明字段中给出)            + |. H8 q" I" s6 a
|        |        |  每项是 2 字节,3 字节或 4 字节,字节中没有使用的位(bit)
. _6 Y* T1 K) s4 {% e4 T|        |        |  被认为是属性位。                           
7 }% f- E% @: m1 M" m|        |        |                                                            
9 G, H. G+ _. c: a  i|        |        |  4 字节表项中,字节 1 表示 BLUE,字节 2 表示 GREEN,+ i, T, H. A9 _5 k7 d, k/ o
|        |        |              字节 3 表示 RED,字节 4 表示属性           ) j  }( i& `$ b$ x
|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               
5 B; L7 ~- D4 \: y0 H# d|        |        |                                                            
7 A& L* y# P! s+ j7 D/ I$ c+ }: T|        |        |  2 字节表项中,两个字节分解成如下形式:               
3 u2 ]: i3 {, l# D! `|        |        |  arrrrrgg gggbbbbb                           
" h  ~- q& j# W# w& f|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  0 [6 v/ u# }# j. g
|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位。  1 O" y. z: d) z* E. |* _: f
|        |        |                                                            
" g) w  l; H, v) J/ W; ||--------|--------|------------------------------------------------------------8 t* h% R* ~, M" r4 v% j* ]' X
|  可变  |  可变  |  图像数据字段                           6 X* v8 U9 ]4 S) A
|        |        |                                                            
$ _; K! {/ J! K$ L|        |        |  该字段给出了 (高度)x(宽度)个颜色表项索引,每个索引   
3 b4 v! U  j) C1 g+ A) @, g|        |        |  以整数个字节的形式存储(典型的例子如 1 或 2 个字节)      9 m3 X1 D5 q$ D% e
|        |        |  所有的数据都没有符号,对于 2-字节表项而言,低位字节是     
8 `( ?. P2 u6 F1 P( J1 ]|        |        |  先存储的。                               - r# f+ K) P, y
|        |        |                                                            
0 J8 Z& ]: j& q& C& w& Q-------------------------------------------------------------------------------! l6 q$ q, e+ y
- O! {4 p* {* r" ?# J% _9 n

( c9 \8 M8 M8 _) r/ E1 W. m, \1 j3 v4 ]0 A  |0 e% {
--------------------------------------------------------------------------------5 q2 ?, M1 T8 U  y) Q
|数据类型 2: 无颜色表 rgb 图像                                 
- Q* X) o7 j, G5 Z# D  j|--------|--------|------------------------------------------------------------( Y' ~1 E& i- H* C5 _
|   偏移 |   长度 |                         描述                              
4 H2 B, {3 N) e  y/ C5 g|--------|--------|----------------------------------------------------------1 z4 H& x8 V5 h. S* f. _& p
|    0   |     1  |  图像信息字段( 见本子表的后面 )的字符数
( [/ M2 w# w6 S' m|        |        |                                          
: C2 l" Z+ V' `6 B|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度, P5 Y8 T" F" l" f: L
|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的2 r4 n) H9 E. m* C
|        |        |  信息字段。
+ j* D; a2 F9 v5 {5 W$ s|        |        |
; W# S; R' J' `/ p9 S7 R|--------|--------|------------------------------------------------------------. E8 t' d, y* `9 h4 f6 A
|    1   |     1  |  颜色表类型3 y! f( l+ {0 a5 O4 N9 U6 t* h& x
|        |        |                                                
% T- q% O9 i8 U1 }3 j5 S1 c3 a|        |        |  该字段的内容或者为 0 或者为 1;0 表示没有颜色表,1 表示
5 P: d8 Q$ r5 O4 W  z- O1 U|        |        |  颜色表存在。由于本格式是无颜色表的,因此此项通常被忽略。
$ u/ v0 c- d3 C  y|        |        |  提示:如果置为 1(targa 绘画程序)将把边框颜色设置为映射
3 C9 h2 R6 f0 j|        |        |        中的第一种颜色+ M8 I  y. x0 ?# K! O5 w
|        |        |
. M3 a9 T/ L1 \2 f|--------|--------|------------------------------------------------------------! g! H% x1 c" b* X; V
|    2   |     1  |  图像类型码$ L6 J0 l* _5 {( c& X
|        |        |                                                     
  @( q, r4 \5 _/ B|        |        |  该字段总为 2 , 这也是此类型为格式 2 的原因    1 h% Y& G* J1 m  j+ O9 j  O& M
|        |        |  , f$ y/ I& O) z5 Z- I5 t- J
|--------|--------|------------------------------------------------------------6 u0 k- b  N) c! B
|    3   |     5  |  颜色表规格0 e( C/ z, R# Z7 J: q( p
|        |        |                                                         
% r* O% ~6 q! w! v2 v|        |        |  如果颜色表类型字段为 0 则被忽略;否则描述如下. p) K7 f0 I' ^% H- B
|        |        |  - M7 p. c7 @* y/ k
|    3   |     2  |  颜色表首址7 [9 ]0 V8 E% u1 v$ k  N5 t  |
|        |        |  颜色表首元入口的整型(低位-高位)索引
5 H9 X! t3 A9 z6 o" s1 L8 T0 R: G|        |        |                  ( d0 G6 v: J2 J: l' O
|    5   |     2  |  颜色表的长度2 f( ]% r, y( f& {2 I% B4 j
|        |        |  颜色表的表项总数,整型(低位-高位)     
7 h1 r+ A! [+ z# i0 p. U|        |        |                                   3 X. C+ x8 ^- A6 C$ j/ Z; e
|    7   |     1  |  颜色表表项的位(bit)数* j; g0 K# e8 U$ A/ U
|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
% V  d: d' W9 ^|        |        |  , Z, B2 o4 f$ a) ^
|        |        |                                                           ( [# x* J; \. W3 ~' r8 t
|--------|--------|------------------------------------------------------------
: _1 [$ W8 z( T8 k4 I|    8   |    10  |  图像规格, t6 d& X/ d! Y. E
|        |        |                             
; a- A0 J# U+ T7 H6 P6 `6 D|    8   |     2  |  图像 x 坐标起始位置      
- n7 `' d! m0 J" c|        |        |  图像左下角 x 坐标的整型(低位-高位)值
8 ~0 j9 E9 t/ N% O1 x3 f|        |        |  ) Q; l% i" U1 x* [% R* d+ x
|        |        |7 L$ N& r  K/ E+ _. B/ c+ p
|   10   |     2  |  图像 y 坐标起始位置
( \% g3 L8 j8 a. V: C|        |        |  图像左下角 y 坐标的整型(低位-高位)值  |& r" k, w* e
|        |        |  
( `! L- H: b4 q0 _2 f|        |        |
2 Q& e: ~. K' q2 m; z|   12   |     2  |  图像宽度 * c. S1 w7 y4 {- T: T3 _
|        |        |  以像素为单位,图像宽度的整型(低位-高位)值
3 z9 T# C2 z3 `# c; b) f|        |        |
" d+ A+ o3 ?) o1 S1 i|   14   |     2  |  图像高度5 q& G5 `" L0 R7 x5 ~
|        |        |  以像素为单位,图像高度的整型(低位-高位)值
, s& ]+ Y" Z$ J" q! |* I! `|        |        |" o0 s& B$ B2 o! k! j$ I) {
|   16   |     1  |  图像每像素存储占用位(bit)数
* Q) |$ E3 F' U4 K* B" N  d8 Y|        |        |  它的值为16,24 或 32 等等决定了该图像是 TGA 16,TGA24
' P4 V% ~6 l0 {) c/ a  |& B, s# t|        |        |  TGA 32 等等
& {* Z7 N# J, y% K* b6 @|        |        |
/ g" e+ _/ I- Z( y( H2 }$ W4 k; {|   17   |     1  |  图像描述符字节) e7 j- c: U2 W6 j- [1 u+ l4 Q
|        |        |  bits 3-0 - 每像素对应的属性位的位数;对于     TGA 16,8 q2 Z6 c7 a) @: k# R
|        |        |             该值为 0 或 1,对于 TGA 24,该值为 0,) T) H8 N3 K+ }; }! w
|        |        |             对于 TGA 32,该值为 8' r1 y1 S: a: b  O
|        |        |            
# W" ]6 |2 }2 ?4 p+ E& r" o|        |        |  bit 4    - 保留,必须为 0
# E$ E$ A# V4 p- Y|        |        |  bit 5    - 屏幕起始位置标志
; v3 s6 R- c2 ~$ W2 I|        |        |             0 = 原点在左下角7 C+ o. M! t9 D# y0 T1 k
|        |        |             1 = 原点在左上角
8 D1 m& |# J! V, q% N9 T|        |        |             对于 truevision 图像必须为 0
. T) j' t( i1 m5 G|        |        |  bits 7-6 - 交叉数据存储标志
9 l* x2 k& X  K3 A8 V|        |        |             00 = 无交叉                                   0 j( S# k% H: }* N: z6 G
|        |        |             01 = 两路奇/偶交叉                        % M0 M0 F( ~& P* r4 o, A
|        |        |             10 = 四路交叉                               ' c  B+ |- V; D& m$ }% b- F
|        |        |             11 = 保留
$ B& z: b, }/ l4 Q- V|        |        |                                                            
/ v) r" i/ B' {% v) n, C5 h|--------|--------|------------------------------------------------------------
! w0 u' \- B; t- W|   18   | 可变   |  图像信息字段                                       
1 u. E3 Q2 U7 v& {0 M|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   5 F) \2 T1 c! y' X+ S3 \! l6 v: ]
|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以   
& g8 k; N" t1 R& }; `) n; H|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   3 _3 _6 S. i& w& R" p
|        |        |  之后                              
7 S% p1 S0 s  S. d|        |        |                                                            - o4 Q* o# s! @. x6 V7 j
|--------|--------|------------------------------------------------------------
* S( B7 a$ I  b6 a* e|  可变  |  可变  |  颜色表数据                                                ) a. G% h& g$ Q* t" @% _9 E- o
|        |        |                                                . i4 S0 d( a8 A! j
|        |        |  如果颜色表类型为 0,则该域不存在,否则越过该域直接读取8 e% ], C$ X7 S3 x- O1 |  G
|        |        |  图像颜色表规格中描述了每项的字节数,为 2,3,4 之一! t; `) n5 b, ]) R, D# b9 c0 v  L6 r
|        |        |  6 }" @' P  H3 E2 R0 `
|        |        |  $ e5 y8 ?( t$ v; L9 J% g: u* V- V
|        |        |  * @0 Q3 T- d5 J/ _% D
|        |        |  % M+ u, q; o4 B. F
|--------|--------|------------------------------------------------------------
- f5 `( x% C' [5 n; h|  可变  |  可变  |  图像数据域
% G- m6 P' C) B|        |        |                                                   
# p1 t' L! o* F. q: q5 U$ T|        |        |  这里存储了(宽度)x(高度)个像素,每个像素中的 rgb 色值9 H2 P/ P. m6 m; H3 e$ O" z6 ?, a7 M
|        |        |  该色值包含整数个字节
' h& {* G. C/ `' u0 c|        |        |  ( j, f" B' ?; X1 i3 M
|        |        |                                                           
) i9 M% b5 G) G|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               
% X, V  l' {' z3 o$ F|        |        |                                                            ' v; M0 X7 D# Y* K$ O) r
|        |        |  2 字节表项中,两个字节分解成如下形式:               ; h& f( v* M/ u3 P* C
|        |        |  arrrrrgg gggbbbbb                           " ]: S" M& [9 b0 e: |
|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  5 B2 t/ K/ f) L# J& M+ r7 t6 q' l
|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位
+ I5 S/ E$ S) L% _' l& w|        |        |                                                          ! {4 G, A# M% ]3 q* U$ t$ w6 ~
|        |        |  4 字节表项包含了分别代表 blue,green,red 及属性的四个7 z3 g& Y1 k" H7 t9 P* j! _) K
|        |        |  字节;(由于硬件上的原因)有的时候 TGA 24 类型的图像也象
2 l1 {7 n9 q- Q; J|        |        |  TGA 32 类型的图像那样存储5 _% y$ i# Y2 ~8 K# s* x4 ?
|        |        |  ; h' H* L5 t* n% ]! N+ {
|        |        |                                                         2 D9 v( I% B# s, o' `
--------------------------------------------------------------------------------
, a; R8 V0 P$ z- K# ^/ e5 Z, f& P& K" n

( M7 I7 N7 @( M$ P6 S
# `6 Q0 d0 q/ e8 `7 @' e
9 c  c8 z1 Q& P5 f--------------------------------------------------------------------------------
6 H3 y% U/ i* p) U+ R|数据类型 9:  runlength 编码,带颜色表的图像. y; U- p! H: c; R% e8 ~
|--------|--------|------------------------------------------------------------
1 V3 l! R5 p( K; t/ q3 T( Z4 r|  偏移  |  长度  |                            描述( n; S+ f/ [( E& |+ j7 U9 B' P
|--------|--------|------------------------------------------------------------& I8 G, @$ M* {% i9 m8 Z
|    0   |     1  |  图像信息字段(见本子表的后面)的字符数               4 }* [! n9 d4 J2 R* U6 ~
|        |        |                                                            
$ _  h, [* S1 L; s4 U|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度     
4 x; ?6 S6 E! W6 @5 q) b# u9 E+ u* n|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的     ! U* ~) |7 M: Z3 i" q, c
|        |        |  信息字段。    3 `- Y; @9 l5 ^
|        |        |                                                            
. e8 @. U  u+ s7 g7 i|--------|--------|------------------------------------------------------------% _% ]; e# S( ?4 u- r( H* t- t8 w
|    1   |     1  |  颜色表的类型                                           6 R3 Y1 W& K! |* ?7 _9 J
|        |        |                                                            8 ], }+ r7 }* \. j" o, t) E3 A
|        |        |  该字段为表示对应带颜色表的图像而总为 1
$ U- ]' E6 I' o1 L7 h|        |        |                                                            
3 n+ a# W  u5 \: X4 M* @|--------|--------|------------------------------------------------------------# z6 R/ k$ \* w* W
|    2   |     1  |  图像类型码
4 v6 D9 u* I/ R( W* k2 {* ]|        |        |                                                            3 h: Q9 P9 a2 j
|        |        |  本类型该字段为二进制 9
+ I- y4 m+ @" K; _3 M) ]6 L) k|        |        |                                                            7 Z) j0 k  s  y6 p$ g- @( A# e5 I0 V
|--------|--------|------------------------------------------------------------7 M( V/ w4 S! T1 T( l' c
|    3   |     5  |  颜色表规格% |$ }6 V# q3 C; H7 Y
|        |        |                                                         ! ~  t2 K* b' C  @
|        |        |  如果颜色表类型字段为 0 则被忽略;否则描述如下
1 ^/ J9 [+ o* h  O2 q- t8 D|        |        |  7 t  H, j0 v% d! q* k* @- p5 s
|        |        |  . R$ \+ X6 {" a# W5 o6 ?& s# P, J' h
|    3   |     2  |  颜色表首址7 D8 L: G# V, W& F" s6 Y
|        |        |  颜色表首元入口的整型(低位-高位)索引
# Q% k/ K8 l  [8 J# i/ w7 T+ c|        |        |                  / c; X/ @- w- O2 Y! y* Q1 g, V
|    5   |     2  |  颜色表的长度
7 q5 r7 z) E4 M|        |        |  颜色表的表项总数,整型(低位-高位)     . a! L$ n6 U* m3 ?1 n
|        |        |                                   - W1 L) Q' B% Q
|    7   |     1  |  颜色表表项的位(bit)数
- s6 r1 r6 s3 j* J/ l2 X, A/ m9 M|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
% H# B6 ~+ u7 }! n|        |        |                                                           : j9 A* B/ y" v: e3 Q
|--------|--------|------------------------------------------------------------
. C) v. Q/ `+ N  o. F: J|    8   |    10  |  图像规格                                               ! [* L5 J' V; \& G- g& s; E
|        |        |                                                            
" L$ c- F2 W0 p$ S5 m6 Q6 U$ I+ P|    8   |     2  |  图像 x 坐标起始位置                                       
; b' l3 M3 b8 b4 S8 U) Z|        |        |  图像左下角 x 坐标的整型(低位-高位)值               / U6 C" T4 w0 m. q0 F3 ?
|        |        |                                                         # ?( ]3 f9 `1 g
|        |        |                                                            " {6 ?9 G$ w. S6 o: r* f- ]
|   10   |     2  |  图像 y 坐标起始位置                                       2 N- i8 |. Q: ?
|        |        |  图像左下角 y 坐标的整型(低位-高位)值               
/ ^! t7 D4 |" T6 i' N( A|        |        |                                                         , w' w) {" `2 q- W) P% c% ]( n
|        |        |                                                            
( O* v2 I4 r3 z) a7 N! k6 L" @|   12   |     2  |  图像宽度                                                   
" ~' v# O4 Y: N* d" i" {6 B|        |        |  以像素为单位,图像宽度的整型(低位-高位)值           . \  M1 j5 W" ^) r+ G! t' N
|        |        |                                                            . W* S0 R/ d+ c4 t7 b8 p* W
|   14   |     2  |  图像高度                                                   
% X/ V6 S& v# a! t" A|        |        |  以像素为单位,图像高度的整型(低位-高位)值               
% a5 k7 p! z( q4 e+ I6 G|        |        |                                                            & q& L$ K) R/ ^
|   16   |     1  |  图像每像素存储占用位(bit)数                             
1 D0 K# \8 p4 I4 H7 o. _|        |        |                                             ( F% n6 S4 ~8 T- G
|        |        |                                                            % b! y" N* g' d! s% G
|   17   |     1  |  图像描述符字节                                          
7 e  A0 {. {0 S5 T) \|        |        |  bits 3-0 - 每像素的属性位(bit)数                   & P6 N! q2 ]$ Y7 ]
|        |        |                                                        
6 Q: ^& ~! n! t& u) d" C|        |        |  bit 4    - 保留,必须为 0                               $ U  [. ^4 F6 u
|        |        |  bit 5    - 屏幕起始位置标志                           - K! I8 J9 \4 f: g
|        |        |             0 = 原点在左下角                       % L( t& {4 @+ a! B$ d: H
|        |        |             1 = 原点在左上角                        
/ ?9 ?7 X& ~& j( o6 D$ P1 L4 n|        |        |             truevision 图像必须为 0                         & E2 _0 m7 {4 l5 U" o9 a2 O
|        |        |  bits 7-6 - 交叉数据存储标志                       : J6 d- R5 ~3 Z; z: z
|        |        |             00 = 无交叉                                   
% e+ w6 a0 o+ q2 F1 @|        |        |             01 = 两路奇/偶交叉                        " }/ }$ h9 g5 K$ x- r
|        |        |             10 = 四路交叉                              
3 k7 _: t( ~" L9 _! J* p2 E$ _. d2 _|        |        |             11 = 保留
0 M& `. |0 Z4 {% K1 [1 ~$ I5 M|        |        |                                                            
5 g4 X8 ?$ j& p6 X|--------|--------|------------------------------------------------------------
* I7 |% y; g0 J) E. W6 A2 [|   18   | 可变   |  图像信息字段                                       
5 @' S  f) J% u  f) _3 \|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   
, M" q/ L! t9 {  O$ P|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以    7 v3 O# Q9 ?$ O# }" O3 H2 J
|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   
: m# v! Z' c) M1 Y  q5 W$ P4 {8 N|        |        |  之后& F% L& }' w  R, ]% x
|        |        |                                                          2 D8 n# m- n0 p% C3 p9 k
|--------|--------|------------------------------------------------------------
" s, p+ t4 J9 K- C: D" B|  可变  |  可变  |  颜色表数据                                                
! b7 c0 u3 H" U1 s9 V; p5 R|        |        |                                                            
1 c4 p' ]) p1 ^$ w|        |        |  起始位置由前一个字段的大小决定;其长度由单项数据大小      4 c/ k! D% Z9 t2 F; {, c
|        |        |  和数据项数目决定(在前面相应的说明字段中给出)            
3 _- ?' t; Y0 a+ S$ T7 b1 Y# I|        |        |  每项是 2 字节,3 字节或 4 字节,字节中没有使用的位(bit)
, g9 E; k4 ]$ A5 u8 V3 B9 Z|        |        |  被认为是属性位。                           " g0 X5 ]9 Z; r3 c- D0 Y5 [
|        |        |                                                            3 m3 ~/ u1 U9 F8 x* F' `! E
|        |        |  4 字节表项中,字节 1 表示 BLUE,字节 2 表示 GREEN,
( a$ y* G7 o9 Z6 q' i  @|        |        |              字节 3 表示 RED,字节 4 表示属性           
6 M) z( j. a% N$ H, X1 W6 Q|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               
7 A+ l; X4 t. Q- {+ Z  f' K# D|        |        |                                                            % R0 P7 s' _8 Q, F" R( t  p9 t. T: y
|        |        |  2 字节表项中,两个字节分解成如下形式:               
: V& d/ q5 I4 J$ f  x0 \|        |        |  arrrrrgg gggbbbbb                           9 I: E1 {. e( s- d
|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  
8 Y2 s1 X2 m1 e  d& }$ [|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位。
# l( U9 j( k% o9 t|        |        |                                                            
6 V$ r- h7 \' _: k|--------|--------|------------------------------------------------------------3 q+ P: U5 o; K. ~& k8 m
| 可变   |  可变  |  图像数据域
) R4 v4 \' z) ], _8 h/ j5 u, W|        |        |                                                            # u6 v9 g* T( u9 }* f
|        |        |  本区域给出了(宽度)x(高度)个颜色表索引这些索引存放4 p: }, h% {. V3 P  Q+ Y' a4 Q
|        |        |  在数据包中;有两中类型的数据包:run-length 数据包,
" m7 E4 D5 Q! _& ||        |        |  以及未加工的数据包,每种类型的数据包含有 1-字节的头信息,
8 l: M5 R, G% ~|        |        |  (其中指出了数据包类型和数目),其后是可变长度的数据域# O' ?! T5 r8 B' g' f
|        |        |  头信息中最高位为 1 表示 run-length 类型的数据包,当
  A' h& d; w# @7 A|        |        |  它为 0 时,表示未加工的数据包! q  k8 m7 {% F, ^0 q' v
|        |        |                                                            
+ w! Y3 e% q2 i4 T& l6 ]& n8 o, d% n9 W1 N|        |        |  对于 run-length 数据包,头信息含义如下
/ v5 g+ y: G" O|        |        |      __________________________________________________   
( a% i$ m6 m+ _  L9 y|        |        |      | 1 bit |   7 位的重复记数减一3 u$ q- ]3 z' {' G: v
|        |        |      |   id  |   由于 7 位表示的最大值为 127,故最大  |) \9 p1 D3 c0 _( U% r% r
|        |        |      |       |   的运行大小为 128,(译注:原文为     |- v; \9 n+ d9 }, o
|        |        |      |       |   the largest run size)          |  * C8 @3 E5 G6 B4 M
|        |        |      |-------|----------------------------------------|
9 F: k" R# y6 C0 _|        |        |      |   1   |  c     c     c     c     c     c    c  |/ s7 w1 N, M% O$ X3 P+ R
|        |        |      --------------------------------------------------' b& x7 n) b& J  Y
|        |        |                                                        $ [8 i/ Y1 H! W; N: T" t! t
|        |        |  对于未加工数据包,头信息的含义如下
- m$ ]* ^& E$ G|        |        |      __________________________________________________
4 r$ w7 I& ]/ X0 S|        |        |      | 1 bit |   7 位的像素个数减一                   |
$ z( b. ?) S9 ^9 v4 p) F& N  C|        |        |      |   id  |   由于 7 位表示的最大值为 127,故该    |
5 r! X( k8 C) X3 x/ }|        |        |      |       |   类型的一个数据包中像素个数不能大于   |
1 ^; {+ \1 s6 F; O3 _" i( }|        |        |      |       |   128                                  |
7 F) W; h0 I) H|        |        |      |-------|----------------------------------------|
5 G8 `9 j+ \6 y$ a7 E- z3 @; d0 {|        |        |      |   0   |  n     n     n     n     n     n    n  |
* g' F5 `% Z0 ~7 q|        |        |      --------------------------------------------------
' w  F9 S0 G. B: e4 _4 N|        |        |                                                        
7 v. @5 ~8 u3 Y# e$ Z% `|        |        |  对于 run-length 数据包而言,头信息之后是一个简单的
1 z- o; k3 x! p9 V! |, |! {|        |        |  颜色索引,且假定该索引被重复头信息中低 7 位表示的次数
% U* b6 f8 S' d7 Q% A' p|        |        |  run-length 数据包也许会跨越扫描线
( m" O3 {; X: p- J8 z1 P|        |        |  (扫描线起始于某行结束于下一行)
3 T" l/ s. N* H" s1 ]|        |        |                                                        
- f" \& V& G& I  x. A2 x4 _- O|        |        |  对于未加工的数据包,头信息之后是颜色索引(数值由头信息; U- Y8 D9 J# l2 p# T* n9 J
|        |        |  给出)该类型的数据包也可能跨越扫描线
) ?' w% O% Y) G$ X# l; S2 |' y|        |        |                                                            , g+ n: i: _$ ^- @- u
--------------------------------------------------------------------------------* n* M7 W. L. B6 c6 L
* H/ D, H+ o# f" w, ?
" H) n( h% q! b  P% l& t

0 {7 b+ R' F9 I# p# t( ]2 Y
# j& F4 K5 ^0 m6 e1 J1 D- h--------------------------------------------------------------------------------. R: r) ~8 S; l5 O  |4 t
|数据类型 10:run length 编码,rgb 图像
+ P4 |) B3 j4 V; }/ G% [6 n& L|--------|--------|------------------------------------------------------------' g; N) d/ z0 S
|   偏移 |   长度 |                         描述                                _. t7 R: k' j6 N
|--------|--------|------------------------------------------------------------$ R' p- \9 r  \0 q" \
|    0   |     1  |  图像信息字段(见本子表的后面)的字符数               
7 I. H, M- _+ f* k|        |        |                                                            . s  @1 D  N% A, u, E4 H- Q
|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度     . B- O3 J# I$ g* d/ I+ f5 _
|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的     
# E+ y5 r, t. Z|        |        |  信息字段。   
: `- n( `0 \3 Y|        |        |                                                            ( y% M2 I& p% N& E  J6 o7 K
|--------|--------|------------------------------------------------------------
4 a) Q. \, k7 }* p& B) p( g|    1   |     1  |  该字段的内容或者为 0 或者为 1;0 表示没有颜色表,1 表示- |* k/ I" w: L! _$ t- B+ B2 @
|        |        |  颜色表存在。由于本格式是无颜色表的,因此此项通常被忽略。; S( j; G7 J# Q
|        |        |  提示:如果置为 1(targa 绘画程序)将把边框颜色设置为映射& z# B  w: a$ a* [" b5 ]# N! @
|        |        |        中的第一种颜色
3 J& v* ]0 v; M/ U* h|        |        |                                                            
# V2 D0 J. I4 A, R) A|--------|--------|------------------------------------------------------------
% b, K+ [3 z* p4 B7 w0 v|    2   |     1  |  图像类型代码
8 n. u; }. t5 R8 p. l/ D- A; _|        |        |         
! D0 a  O7 @5 i|        |        |  本类型该字段为二进制 10
  D1 k8 e/ r2 i0 O9 Y+ d5 x|        |        |                         6 N$ I; X8 {  |; G' S9 }
|--------|--------|------------------------------------------------------------
, z" f& l1 y, ~; R, {, z' P! b|    3   |     5  |  颜色表规格! E: @6 x9 u6 S5 G& ]/ _
|        |        |                                                         
6 V! e' z2 C7 ^* b' \7 M) y|        |        |  如果颜色表类型字段为 0 则被忽略;否则描述如下
; Q, {" ]4 u% D7 f|        |        |  
- o' f2 x, G" M% `/ Z# P|        |        |  $ V! V' f6 M" X
|    3   |     2  |  颜色表首址
0 H4 G3 }% f, F# A% [& |8 F|        |        |  颜色表首元入口的整型(低位-高位)索引. |) U# D& u: v, V1 H5 N2 F; A$ L$ n
|        |        |                  , F; s2 m( ]/ S. H
|    5   |     2  |  颜色表的长度' D) B+ L( q2 m* l# _% F& F, a
|        |        |  颜色表的表项总数,整型(低位-高位)     
. d! A' i1 C$ d6 E- E5 u8 P: r|        |        |                                   
- D3 N5 ^& F9 l; s|    7   |     1  |  颜色表表项的位(bit)数
( Z0 D" Z9 k0 A6 e* {5 A6 b6 o|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA& r9 a' Q- r% ]# `0 w0 W) W) Q0 H6 ]
|        |        |                                                            
( s1 s. [0 I0 k2 S( e1 [|--------|--------|------------------------------------------------------------
& D0 j) v% Q% K& g+ e& \; \|    8   |    10  |  图像规格                                               
: j0 X- H5 ^% Y6 }! q|        |        |                                                            
- {3 z- D- C0 E8 b|    8   |     2  |  图像 x 坐标起始位置                                       ) R) M: I8 @! {$ M2 y# f+ f  U. W
|        |        |  图像左下角 x 坐标的整型(低位-高位)值               
# Y( p& r/ L2 ^( w5 V|        |        |                                                         $ H: S+ L# |% n
|        |        |                                                            
$ J7 O6 Y- a1 L1 R, G% D; X|   10   |     2  |  图像 y 坐标起始位置                                       : E9 o$ ?; D  [9 C) s
|        |        |  图像左下角 y 坐标的整型(低位-高位)值               
4 @- S, M- ]  ]$ L6 J|        |        |                                                         / }6 [8 w9 H$ q3 ~  b
|        |        |                                                            
6 ?. i9 p$ v/ k9 f|   12   |     2  |  图像宽度                                                   
6 g( v( Z  y  n" ^" \! t+ t1 C|        |        |  以像素为单位,图像宽度的整型(低位-高位)值           9 P" F  z2 P% k
|        |        |                                                            
# T0 S# n% U9 s) P! Q|   14   |     2  |  图像高度                                                   
# h# w3 `+ T" K- E) b7 G|        |        |  以像素为单位,图像高度的整型(低位-高位)值               
& R3 Y+ k1 [1 M, J  C|        |        |                                                            . U" p# L( |) Y' K
|   16   |     1  |  图像每像素存储占用位(bit)数                             
7 H+ G+ i. o# {|        |        |                                             5 p- x& W  D- l9 m7 @8 g0 P
|        |        |                                                            ; b( H8 _# H4 n4 n
|   17   |     1  |  图像描述符字节                                          
4 y7 k# s# ^# Z, w3 ]' q|        |        |  bits 3-0 - 每像素的属性位(bit)数                  
2 v; K- D: _$ |  g' A|        |        |                                                        
6 n6 F' C) A: d$ D" D|        |        |  bit 4    - 保留,必须为 0                               ' _9 |6 k- o' {$ D/ R
|        |        |  bit 5    - 屏幕起始位置标志                           8 S1 i# ]! }3 |) m
|        |        |             0 = 原点在左下角                       0 ?5 @- w! @* S1 d
|        |        |             1 = 原点在左上角                        
/ g$ n9 a/ g$ |* g6 `" U|        |        |             truevision 图像必须为 0                        
, C& E& ^- m+ q% `2 y3 s: N2 V8 r6 K|        |        |  bits 7-6 - 交叉数据存储标志                       
9 k& |5 C3 U# k7 c# O4 ||        |        |             00 = 无交叉                                   : w6 g7 G1 {. ^4 _7 X- s  g" `3 `
|        |        |             01 = 两路奇/偶交叉                        
" e8 Q7 X5 D8 O0 ]" r) i+ `|        |        |             10 = 四路交叉                              
% `- I+ s3 Z( u6 Y# o  e( \( t|        |        |             11 = 保留                                   % n1 P, G; T( w! |/ c7 x
|        |        |                                                            
! o9 S  j! `5 M|--------|--------|------------------------------------------------------------
1 D0 h8 p" R6 ?|   18   | 可变   |  图像信息字段                                       ' ?6 H0 ~- [7 _4 l; o! [
|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   
+ ?& e  `: p* u|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以    # `3 K# @5 ]  X* p, E  Z, C
|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   ( Y$ Z  y. x0 m. {2 ~, V" |
|        |        |  之后# @) j" M. t  P/ J
|        |        |                                                            : x4 ^7 L! q0 A5 L
|--------|--------|------------------------------------------------------------& G% h; S0 f5 F! x' X
|  可变  |  可变  |  颜色表数据                                                ; |& k- X+ a+ w# U" h; M3 y
|        |        |                                                9 M+ B! r, c9 _: B& C) C
|        |        |  如果颜色表类型为 0,则该域不存在,否则越过该域直接读取! \# |' O" p: f% B7 I
|        |        |  图像颜色表规格中描述了每项的字节数,为 2,3,4 之一
4 k3 |; T3 e6 S6 B* u' p- K0 ||        |        |                                                            
3 L' R) B4 i$ ?|--------|--------|------------------------------------------------------------
" Q: b8 }/ {9 k6 s6 f| 可变   |  可变  |  图像数据域
  x9 Y/ S* z- p/ M|        |        |                                                            
( q7 J# ^: J) D' c* A' `|        |        |  本区域给出了(宽度)x(高度)个颜色表索引这些索引存放5 R8 N0 d3 ~0 _2 e+ A% n; i+ w) y
|        |        |  在数据包中;有两中类型的数据包:run-length 数据包,% \. e" F! j. A+ D+ }0 p0 q
|        |        |  以及未加工的数据包,每种类型的数据包含有 1-字节的头信息,
4 K: m  D4 Y/ u8 m|        |        |  (其中指出了数据包类型和数目),其后是可变长度的数据域- g9 e+ X2 z" l2 V  ?9 {( J$ w
|        |        |  头信息中最高位为 1 表示 run-length 类型的数据包,当
4 x) [* v) o% p" C$ N% F|        |        |  它为 0 时,表示未加工的数据包
9 Q- w$ S6 V! B* c9 h; }|        |        |                                                           
1 d1 U9 r0 W& t7 e6 }9 u|        |        |  对于 run-length 数据包,头信息含义如下
  Z* Y; s* E; C0 [& `% I|        |        |      __________________________________________________    3 Y3 l2 S& e/ ^3 K
|        |        |      | 1 bit |   7 位的重复记数减一  K' j% v! G/ S3 Q
|        |        |      |   id  |   由于 7 位表示的最大值为 127,故最大  |
5 D/ y' E0 n* j5 a" z8 x|        |        |      |       |   的运行大小为 128,(译注:原文为     |
# Y! |, V2 y5 ]* |. S7 t: Q4 J1 {  Z|        |        |      |       |   the largest run size)          |  
+ @. s6 r2 w. j; F  A) y7 G( J  Q|        |        |      |-------|----------------------------------------|- b; I- V6 b+ J
|        |        |      |   1   |  c     c     c     c     c     c    c  |0 K3 x0 ?/ ?# _5 E8 x- j4 y
|        |        |      --------------------------------------------------- I- b: c$ J0 P8 c
|        |        |                                                        ( V0 a( @& s9 D" }/ w* ~
|        |        |  对于未加工数据包,头信息的含义如下, X+ q* c1 c4 u$ V8 S
|        |        |      __________________________________________________
4 n8 Q4 J& d. e' ^+ ?|        |        |      | 1 bit |   7 位的像素个数减一                   |
& k: u9 O3 z; x' s$ o. p4 K- ~( G|        |        |      |   id  |   由于 7 位表示的最大值为 127,故该    |
3 R& {" `+ V8 j6 l) {. T|        |        |      |       |   类型的一个数据包中像素个数不能大于   |
2 q& a3 a' F1 M|        |        |      |       |   128                                  |# {; g9 p; j7 p$ b. g& X
|        |        |      |-------|----------------------------------------|
/ ?! f; p+ p( U% w4 ?2 C; N* e5 k$ T|        |        |      |   0   |  n     n     n     n     n     n    n  |7 d& f6 }  Z8 I( T/ }$ V$ r
|        |        |      --------------------------------------------------
' y+ ~# D( S5 k- Z* ?|        |        |                                                            
3 D1 C7 {2 v& b+ u. U6 h' |% i|        |        |                                                            * g5 f$ C  ^  R) }: H% z" X; c9 D8 d
|        |        |  对于 run length 数据包,头信息之后是一个简单颜色值,8 Y7 ?" H: r1 T& ?. i
|        |        |  且假定该值重复的次数为头信息中记录的数
; u7 ]2 j: w6 l- l5 T|        |        |  run-length 数据包也许会跨越扫描线. F+ [  a; Z- z: [6 ^- r
|        |        |  (扫描线起始于某行结束于下一行)
% x* ~4 D9 b# C( f3 ~|        |        |                                                      
) \/ u4 E& B0 g0 c( }|        |        |  对于未加工数据包,头信息之后是颜色值(数目由头信息指出)
  q/ @! O5 [; C+ F! ~4 U6 R|        |        |  
4 c: ^: {. x' Z6 J) i* A|        |        |                                                1 q6 I" A) G0 j$ a, }. f
|        |        |  颜色表项自身有 2-字节,3-字节或 4-字节几种大小(分别
4 R# r" c/ S. ?# e  ~|        |        |  对应 TGA 16,TGA 24 和 TGA 32)形式如下:2 j' m! D0 D/ i4 [" Q( I
|        |        |  
8 t5 I7 e5 y8 H5 }  e5 q$ R. N|        |        |            4 y/ o( j# r8 d/ d: l( E
|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               
, a+ j" f/ ~- r|        |        |                                                            8 R/ x$ D# v7 R/ U6 O) U
|        |        |  2 字节表项中,两个字节分解成如下形式:               
; b. y  }+ P, J|        |        |  arrrrrgg gggbbbbb                           ) m% Q5 k3 p4 z! {( _
|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  
" Z+ w% C. b5 M! Z4 B, Y|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位
  O) l. E* o; s4 k7 D& }|        |        |                                                          6 F3 b4 i: R  v' A9 K
|        |        |  4 字节表项包含了分别代表 blue,green,red 及属性的四个' q" I$ _1 _3 u" {
|        |        |  字节;(由于硬件上的原因)有的时候 TGA 24 类型的图像也象
/ @/ S7 ?; \2 s' v9 ?|        |        |  TGA 32 类型的图像那样存储
0 I6 O) d' z5 F+ q% S& V) r|        |        |                                                            
0 q/ [5 ^, U1 w4 u5 N* |--------------------------------------------------------------------------------
/ v1 J' ~! b' Q4 b" v0 F# L* B* \8 N! I: `
<完>




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2