冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2009-6-3 22:25
标题: 【汉化资料】TGA图像文件格式资料
原文
1 U+ B5 B. q: h: M8 y3 m6 Jhttp://dev.gameres.com/Program/Visual/Other/TGAFormat.htm
9 C! d5 M2 e! A: }: ^" V* ^) ^  & I. z" n9 n: B! U  |+ _  p
根据david mcduffe编写的TGA文件格式资料翻译而成
" Q. {% p$ ]) z, x: R 
7 P9 e0 O6 T( e4 Z本文档是为满足许多对 TGA 图像格式的了解需要而创建的。本文摘录自truevision 技术指南的附录 C,如果
, G# q9 m; }. k+ Z1 m需要更进一步的信息,请致信以下地址:) l7 |5 T/ g8 y0 `9 j( l- E
2 I6 w0 w% ~* l9 ~0 k' g% {+ W
           at&t) j' U2 v0 m% G3 C7 K5 S; R
           electronic photography and imaging center
& i" S1 i! F1 o: p           2002 wellesley ave.2 l% N( Q) ~3 h! w
           indianapolis, in 42619
; |# Y* m! ?& D$ F. r; p* j本文档不求全面,但力求准确。如果你发现了任何拼写错误或内容错误,请告诉我,( david mcduffe,
) R8 @; w6 t: w1 E* B) \! k75530,2626 ),我将改正这些错误,谢谢。
# j1 s. \+ h! `) X; ^1 [( d# b' n5 m8 M* {/ U4 |5 G
不全面的原因是 TGA 包含了超过六种图像文件格式,而其中的几种较为常用。 我选择了我现在使用的格式并
8 E" \: r8 y+ w. m在本文中加以详解。 如果你需要本文中没有包含的格式说明,你可以与你的 truevision 代理商联系。6 C: ]1 |) n6 Z7 b
对所有的 TGA 格式的文件而言,其第三字节(二进制整数)用来区别各种不同的 TGA 文件。下面列出了该字; y& U4 i% P; y& g
节表明的对应文件类型:" I7 A5 g; O6 }7 {
    0  -  文件中没有图像数据
( H! D& V( |0 W) u" \. L; D    1  -  未压缩的,颜色表图像5 q: @; M0 s$ j: Y4 Y; l  u  {
    2  -  未压缩的,rgb 图像6 G; S. \& {* x/ o4 z+ y! ^) C
    3  -  未压缩的,黑白图像# ?* a  Z; q% T& @/ b
    9  -  runlength 编码的颜色表图像6 @0 C" N) C& M) O7 B( X
    10 -  runlength 编码的 rgb 图像: x0 D2 r. g; B, U( Y
    11 -  压缩的,黑白图像
! H( E  N4 F# G4 K% s9 D& h4 p' Z" U& Z& G    32 -  使用 huffman,delta 和 runlength 编码的颜色表图像2 t7 L: g+ v2 k" E- w0 y5 Q& c. |0 }
    33 -  使用 huffman,delta 和 runlength 编码的颜色映射图像,4 趟四叉树类型处理。
) P1 b2 _# n! P5 h! b    本文仅仅描述对应 1,2,9 和 10 的文件格式。' x6 H5 T7 ?/ k+ V

) ?! E! w! e+ ]9 d( F7 _3 b--------------------------------------------------------------------------------* L( P; T% A( U& ~  p9 e$ X
|数据类型 1: 颜色表(color-mapped)图像$ I9 N6 o* G1 ]4 u
|--------|--------|------------------------------------------------------------
* y  L2 }+ X2 `. g8 }1 Y1 P* ~|  偏移  |  长度  |                            描述3 H! r! }1 l" ]" W2 i# H0 ?3 U, C
|--------|--------|------------------------------------------------------------7 o9 C) v+ ^9 V) g' `, Z; G) ^
|    0   |     1  |  图像信息字段(见本子表的后面)的字符数               ) g: ^5 R7 l' P, {
|        |        |                                                            
6 m; u' P8 [3 `# W6 X8 t! S( d|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度     $ K7 P9 A0 k, J7 b/ d' j
|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的     7 f, P! M# Y& @9 X7 o4 [
|        |        |  信息字段。                                   - R* h5 N7 }6 I6 p
|        |        |                                         
+ K2 _% ?, O3 a% e|        |        |                                                            
1 d  [, Q$ t' \4 a|--------|--------|------------------------------------------------------------
6 B( b/ X3 w8 o0 Q4 C/ }|    1   |     1  |  颜色表的类型                                          
% S) Y5 |2 M7 `# Q' m2 L! T0 D|        |        |                                                            ! ]! t* {, s$ A5 M& C" t
|        |        |  该字段为表示对应格式 1 的图像而包含一个二进制 1           
* _9 f. h, {/ u# {+ ~& M/ }|        |        |                                                            2 b. ], A: o- H5 f/ x6 s% _, ~
|--------|--------|------------------------------------------------------------- r: p& k. I- z0 U( `
|    2   |     1  |  图像类型码                                            
6 b6 v5 m# h7 {  A# a; j% R|        |        |                                                            : I7 H2 {' C3 T2 K, L' K8 U0 n
|        |        |  该字段总为 1 , 这也是此类型为格式 1 的原因               
2 S7 ]' }$ {8 [& v, L; b1 b, w2 e|        |        |                                                            $ i( U( C# A0 m$ v! f: Z; {
|--------|--------|------------------------------------------------------------: @; U$ b& m' T( Y! V
|    3   |     5  |  颜色表规格                                       
2 @# o( Q( e7 a|        |        |                                            
7 k1 M5 k8 L# m8 d4 {* P|    3   |     2  |  颜色表首址                                                
2 ?& R+ e" v- f; F. f( [|        |        |  颜色表首元表项的整型(低位-高位)索引               
6 p5 a. W: N3 }2 t! a9 m8 {|        |        |                                                            , L2 y$ Q+ Q; z( J
|    5   |     2  |  颜色表的长度                                          
6 J/ z4 E+ N8 o3 h& P; W|        |        |  颜色表的表项总数,整型(低位-高位)                   8 b, b; \  S: y& x* P  C$ y+ u( j
|        |        |                                                            
& L! d4 G: ^' X4 _3 {( V( a: x|    7   |     1  |  颜色表表项的位(bit)数                                   ; b2 N2 L9 p: ^" h! g% m0 H# B8 O
|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
) X1 h) K; O+ d$ ~2 a& x. M|        |        |                                     , \/ K8 m; z* G8 m1 p, `
|        |        |                                                            5 u$ b$ d! V# ^9 \5 N6 A
|--------|--------|------------------------------------------------------------
; S/ n6 p! f  t, M+ E: H) `/ U|    8   |    10  |  图像规格                                               3 i% M) P! N  w* {$ F
|        |        |                                                            " f3 S; n6 N; [0 m# X
|    8   |     2  |  图像 x 坐标起始位置                                       ( ^/ }  e7 r9 m$ u, T  t
|        |        |  图像左下角 x 坐标的整型(低位-高位)值               
* w/ P0 L8 K8 b; c|        |        |                                                           ~1 n8 b+ o  A8 _6 v# e
|        |        |                                                            8 J: W, T% D7 n- h1 i) B
|   10   |     2  |  图像 y 坐标起始位置                                       
1 [3 o3 g; R! J|        |        |  图像左下角 y 坐标的整型(低位-高位)值               0 ?, n% ]7 o2 L5 N' A4 I% Z- U" U1 T6 [
|        |        |                                                         5 B1 L8 X0 c' G3 o9 `) s
|        |        |                                                            
7 F5 b9 D& E& i2 W0 \|   12   |     2  |  图像宽度                                                   
; M- [( ~: s0 f7 W8 L& m& q|        |        |  以像素为单位,图像宽度的整型(低位-高位)值           " Q5 d( F3 e& C- n7 o7 B. ^3 V$ Z  B
|        |        |                                                            % X) z* m$ M# ]$ V7 }" o
|   14   |     2  |  图像高度                                                   4 i6 M8 e7 z3 h) E/ M4 V" _' O; I6 |
|        |        |  以像素为单位,图像高度的整型(低位-高位)值               
; k7 C" G- [5 S* A7 e8 i|        |        |                                                              m/ c4 K/ e) H
|   16   |     1  |  图像每像素存储占用位(bit)数                             7 ?) l" t. p9 r0 n2 Y- r
|        |        |                                             % u. R* y( E, L; o  i
|        |        |                                                            
! P8 i0 \( n7 `' A|   17   |     1  |  图像描述符字节                                           , t- {/ ]# r, H9 O
|        |        |  bits 3-0 - 每像素的属性位(bit)数                   9 R7 B) L- Q' E0 r9 d$ k# u7 i
|        |        |                                                        
& [; e+ s& k. P/ n, l% t2 e7 z/ o|        |        |  bit 4    - 保留,必须为 0                              
- ?/ P# R" Q1 \4 @% H9 Y|        |        |  bit 5    - 屏幕起始位置标志                           
, s7 M6 V! @3 ]. u3 x. b1 s: |% ~|        |        |             0 = 原点在左下角                       
: Q+ m4 v5 a/ a* x6 I9 ]1 n|        |        |             1 = 原点在左上角                         * A, o0 f2 r3 f; G: o3 s6 k
|        |        |             truevision 图像必须为 0                         , U( |% [9 j, q/ h' E* L$ j2 k% x
|        |        |  bits 7-6 - 交叉数据存储标志                       
+ N5 N: A) ^* `0 n3 H" V; m|        |        |             00 = 无交叉                                   ' f# d$ v, O3 B9 F+ m  L
|        |        |             01 = 两路奇/偶交叉                        1 P' _% }# q% E# ]5 B7 W7 [7 A( a9 m, S
|        |        |             10 = 四路交叉                               ( \, U3 i7 b- `$ S8 ?0 D6 W
|        |        |             11 = 保留                                   % H( Z' O0 D0 j; V7 E  L5 r
|        |        |  这一项应该设为 0,不要问我为什么                  
7 r9 l& K. k7 c- X  S) o|        |        |                                                            , n* E- N* D2 K; O* V! j
|--------|--------|------------------------------------------------------------- v1 ~! X6 z/ k, u& ]0 b4 Q
|   18   |  可变  |  图像信息字段                                         o# B6 f( g$ ?: {: f# h5 Q
|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   
9 Y" f. {- P! ?+ Z( k; S4 m7 Y|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以   
  Q* @! l. Z6 v* Y& y3 c9 [|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   
% M5 x5 {& c' R3 x( |$ {|        |        |  之后                              
* K$ n2 @, t9 q. h|        |        |                                    7 Y0 C9 M' g  t. l) }; {% N
|        |        |                                                            & T' t, C! s4 k' [' L. o& g
|--------|--------|------------------------------------------------------------
5 o3 R! ?0 x2 a; ?7 K+ Y|  可变  |  可变  |  颜色表数据                                                " N+ x1 J9 M9 D* R  `0 O
|        |        |                                                            2 |: D5 m6 T# j2 e: T" O
|        |        |  起始位置由前一个字段的大小决定;其长度由单项数据大小      
6 z$ T, H  p- v! a$ v4 ~|        |        |  和数据项数目决定(在前面相应的说明字段中给出)            ' l: F0 z1 V0 x& h* S8 I/ ~, }
|        |        |  每项是 2 字节,3 字节或 4 字节,字节中没有使用的位(bit) * [$ T8 ]# p# }
|        |        |  被认为是属性位。                           , k" g& M5 E) X
|        |        |                                                            
* p1 w, Z) F  d0 f/ _|        |        |  4 字节表项中,字节 1 表示 BLUE,字节 2 表示 GREEN,8 G, B& k) v$ t; J8 m! M. ]% g
|        |        |              字节 3 表示 RED,字节 4 表示属性           
8 G% u7 j+ L6 U: w|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               ' G5 c/ C! h9 |+ e  s7 `
|        |        |                                                            
, K. _/ g" K3 Y. L! {5 {  l|        |        |  2 字节表项中,两个字节分解成如下形式:               $ \* S' x; b$ M& h
|        |        |  arrrrrgg gggbbbbb                           
9 B1 s+ I6 Y' [6 M$ g8 a7 I+ c$ Z|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  ! h% Z' r, a! G
|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位。  
1 C) e  q/ a+ o# _0 c|        |        |                                                            
2 m  j5 a" e. v' q8 _; u& N' m0 m|--------|--------|------------------------------------------------------------
& |9 K- r' I( j- A4 J% ]|  可变  |  可变  |  图像数据字段                           + T4 ^3 `! S# j( u) z
|        |        |                                                            ; I3 i" x# A; n4 u  m
|        |        |  该字段给出了 (高度)x(宽度)个颜色表项索引,每个索引   
# N- ]$ D5 ^5 B|        |        |  以整数个字节的形式存储(典型的例子如 1 或 2 个字节)      9 D- ^' s2 t. f" Z* p8 M1 e6 c
|        |        |  所有的数据都没有符号,对于 2-字节表项而言,低位字节是     
. a% e4 F. K3 M" O7 l' E+ I. Z|        |        |  先存储的。                               0 Q5 S6 R$ G5 e/ L7 u% u
|        |        |                                                            
8 ?, H2 d# C% A; X, @+ K. X/ t-------------------------------------------------------------------------------; e. m) ?" D5 n3 j) [+ g

4 I3 s* C* Q2 Y/ ^, c
8 V) q; x9 h4 [  H" q. d2 o5 j& U  m* [) E) _
--------------------------------------------------------------------------------8 K2 w# S5 m+ u1 C
|数据类型 2: 无颜色表 rgb 图像                                 
- S. G% X2 G3 c2 P2 y5 b|--------|--------|------------------------------------------------------------
; c1 O7 f3 @/ L|   偏移 |   长度 |                         描述                              
7 F4 _1 F+ a9 U& s, g( ~# u5 Y|--------|--------|----------------------------------------------------------/ k; N) v/ p$ Y
|    0   |     1  |  图像信息字段( 见本子表的后面 )的字符数! |* J( P; N4 h
|        |        |                                          # ?& C" X: D+ e2 \; n2 u
|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度
0 h6 i9 u1 A' X: y7 O9 a  Y: o7 }|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的/ H6 J$ n1 U' h& Y7 a* A
|        |        |  信息字段。
' Z0 S+ |; _' ~8 n" B0 W# H$ ||        |        |, a. M# V. q* w; `6 |7 }
|--------|--------|------------------------------------------------------------
6 G0 o5 h& X) o1 }: P# ~|    1   |     1  |  颜色表类型
/ Q9 c+ t# ~* B3 g: i: [( `|        |        |                                                 # O6 E) J- R# o) C) R' ~
|        |        |  该字段的内容或者为 0 或者为 1;0 表示没有颜色表,1 表示
0 `/ ~1 @0 ^; V3 f|        |        |  颜色表存在。由于本格式是无颜色表的,因此此项通常被忽略。
1 F& m4 |! G' V4 |' ]# _|        |        |  提示:如果置为 1(targa 绘画程序)将把边框颜色设置为映射
) f$ p% x) s5 p( A, {% _" W|        |        |        中的第一种颜色
1 G$ |; `6 }0 D+ C% _' Y' ]|        |        |
& ?4 f0 I% K" v|--------|--------|------------------------------------------------------------! D  t+ l$ f; k+ G9 w" t
|    2   |     1  |  图像类型码7 F2 }( [, a9 }7 i
|        |        |                                                     
$ T  m. v0 G; A|        |        |  该字段总为 2 , 这也是此类型为格式 2 的原因    ' M. ]$ H/ n  o* v9 y' x
|        |        |  , I7 J6 n0 O7 L
|--------|--------|------------------------------------------------------------
- l- V& q* l3 a( W|    3   |     5  |  颜色表规格
8 z, q6 G% g, q5 T1 z; b2 G|        |        |                                                         + ?. ~$ p4 F  ]! c# j& t6 D8 t
|        |        |  如果颜色表类型字段为 0 则被忽略;否则描述如下7 z& {/ |3 X0 U: j% d
|        |        |  9 l9 I! q6 q# Z4 @; d
|    3   |     2  |  颜色表首址
% ?' C% u5 y1 \1 u|        |        |  颜色表首元入口的整型(低位-高位)索引
+ `% {8 w% G& a2 p! T' K|        |        |                  
4 G" \6 `$ G1 e# `! m|    5   |     2  |  颜色表的长度# g  I1 V9 J+ Z& T: e
|        |        |  颜色表的表项总数,整型(低位-高位)     " H; M1 U5 a- _% B7 q9 J
|        |        |                                   
4 Q- a- v/ j. v" {3 x% z. V|    7   |     1  |  颜色表表项的位(bit)数
$ W. g, \: C/ M" k" N8 ?" B: g|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
& n7 K* }( n' h! e% T3 u5 O|        |        |  
& ]5 O& M& B- L/ |( Q|        |        |                                                           
8 n3 k$ `) K4 P' u|--------|--------|------------------------------------------------------------& G/ T+ K; {/ S) Q! o: L( I6 g: d
|    8   |    10  |  图像规格
- V, ~, n; n! q6 e2 P8 F+ M0 ~/ T|        |        |                             9 J0 p+ x3 x' D
|    8   |     2  |  图像 x 坐标起始位置       - d5 C, T. @1 V& b0 E! l* E
|        |        |  图像左下角 x 坐标的整型(低位-高位)值* K6 X6 F, X, `  G( w  @
|        |        |  
7 H/ v+ a4 X* g# Z|        |        |5 F6 \% e# u  F# Z/ _
|   10   |     2  |  图像 y 坐标起始位置( Q: m5 w* I% g1 r# D4 ?* B
|        |        |  图像左下角 y 坐标的整型(低位-高位)值
5 w2 ?# T9 x4 Z2 m2 ~. Z$ S* {0 L* d|        |        |  
) o. I0 [9 O) |5 v! K3 a3 u+ O|        |        |8 r& a, F9 U/ z
|   12   |     2  |  图像宽度 * {- p6 ~8 Y$ \6 u5 q' @
|        |        |  以像素为单位,图像宽度的整型(低位-高位)值) i3 M4 X9 i- P+ B; |( K
|        |        | * [  l* p6 W: r% R6 Z% F
|   14   |     2  |  图像高度
2 d+ u' U2 m% Q2 @- Z( W. h# y|        |        |  以像素为单位,图像高度的整型(低位-高位)值
( ?1 z' k& W( {9 s  S|        |        |9 s3 H" A" E& I+ ^; w0 a, s9 k
|   16   |     1  |  图像每像素存储占用位(bit)数# ]5 q- D& h& a4 ^2 I& d$ J
|        |        |  它的值为16,24 或 32 等等决定了该图像是 TGA 16,TGA24
( j9 _1 r* J, J6 A4 [" R$ U|        |        |  TGA 32 等等
. C  l( {7 m2 ^1 J+ {0 U$ O4 L|        |        |7 e0 d# D$ E$ y' w) @0 v5 d
|   17   |     1  |  图像描述符字节: @; D- E3 |2 J* q% ?
|        |        |  bits 3-0 - 每像素对应的属性位的位数;对于     TGA 16,
4 {+ }6 p* ?2 i+ ]6 p. p|        |        |             该值为 0 或 1,对于 TGA 24,该值为 0,% @* j  x) P- M4 g
|        |        |             对于 TGA 32,该值为 8: k: l0 f, o: A% {6 ?! _; ~
|        |        |             4 S9 W1 ~$ V/ Q4 X! B/ F9 B
|        |        |  bit 4    - 保留,必须为 0
6 `! ?/ \) X5 z" G( D( i# I|        |        |  bit 5    - 屏幕起始位置标志: ^7 d3 \, \+ Y
|        |        |             0 = 原点在左下角7 c9 h) u! X# d. ?" j1 z) E* f
|        |        |             1 = 原点在左上角6 V/ b% a: c6 @: K3 P3 E
|        |        |             对于 truevision 图像必须为 0- K4 }; R9 }( t( \9 O
|        |        |  bits 7-6 - 交叉数据存储标志1 M! d& O8 x( f+ i- x
|        |        |             00 = 无交叉                                   2 G# a- M: j5 k2 c0 ~$ Z
|        |        |             01 = 两路奇/偶交叉                        9 J; U& b- X% _4 F/ O% u4 V$ l
|        |        |             10 = 四路交叉                              
0 w+ A) s# {# L* c; l|        |        |             11 = 保留% O& f/ N, P) [& S5 B9 H
|        |        |                                                            
$ P# {; y6 N9 @2 s|--------|--------|------------------------------------------------------------
" T8 A, I( `# N) k- Y! M|   18   | 可变   |  图像信息字段                                       
2 X/ u( U; @- Q( |/ Y5 y" O|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   
7 j/ V1 J' T% m) T|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以    9 M/ n9 j5 s, Y2 G) S
|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   / _/ N1 u0 G( `4 B$ _0 P, |  G
|        |        |  之后                              
6 W* _& l6 F+ A) |5 [4 C% ?|        |        |                                                            
1 s' o, g8 Y$ T/ `% `|--------|--------|------------------------------------------------------------& L$ T# s4 }! C0 H* V
|  可变  |  可变  |  颜色表数据                                                6 z+ L1 d9 }/ v! o
|        |        |                                                5 r) Y5 i' Z8 y0 \- B
|        |        |  如果颜色表类型为 0,则该域不存在,否则越过该域直接读取( R+ |) m% z( c3 _
|        |        |  图像颜色表规格中描述了每项的字节数,为 2,3,4 之一) X2 N! c: q( D6 s$ J7 k
|        |        |  
3 x: `6 {3 t* |! G/ G# X' T) a5 w+ B|        |        |  
: `1 |/ N7 K/ r8 K# a|        |        |  - w( |/ @* D; T8 ^8 h5 u% {  b  z- U
|        |        |  
6 @( W. V) ]# s4 N|--------|--------|------------------------------------------------------------5 X9 E$ \; m; ^- S8 ^
|  可变  |  可变  |  图像数据域5 E+ H7 U4 n3 ?9 u
|        |        |                                                   
+ e8 r+ T8 V8 ~$ x* a|        |        |  这里存储了(宽度)x(高度)个像素,每个像素中的 rgb 色值
* @7 q* L. ^4 p+ u# y|        |        |  该色值包含整数个字节
% A; t0 ]/ m! l2 G|        |        |  
- z- e& N5 U: ?) {) C' R|        |        |                                                           
; R3 ]- y& U" t' c% Y7 j6 A|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               ) Z7 G2 u3 P2 q+ k( n. D; y& }
|        |        |                                                            
! F6 R* R4 y9 e4 b' I5 J8 V|        |        |  2 字节表项中,两个字节分解成如下形式:               9 S" y# C+ Z2 P" _) I4 y  M8 w
|        |        |  arrrrrgg gggbbbbb                           
9 C! C1 \" L0 X|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  
: @' Q3 T0 U: j. R/ d7 T- Q|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位
9 V9 O5 f" E& C( c% W2 Y|        |        |                                                          , X4 _" k2 |9 _% r& d/ ^$ ?8 K1 x6 h: t
|        |        |  4 字节表项包含了分别代表 blue,green,red 及属性的四个% c/ f8 G# }& v7 V* N* u
|        |        |  字节;(由于硬件上的原因)有的时候 TGA 24 类型的图像也象+ E  A3 _7 v, F: \& [9 i
|        |        |  TGA 32 类型的图像那样存储/ j) x: K+ T3 v9 [" v  }. h# h* }
|        |        |  
9 r2 f# k  F/ G5 \+ W$ U" ~|        |        |                                                         5 r8 G% X) B2 z0 J
--------------------------------------------------------------------------------
8 G5 `- l2 {. c
. R7 F/ [3 l5 k( B: t. N/ O. [* d5 Z8 _+ \) m( I1 g0 H6 u) b

+ n+ ~  n  j6 B' M( f
% S2 q. `. W; h1 F8 R. g, W--------------------------------------------------------------------------------
0 k4 V( ?8 i, l7 R|数据类型 9:  runlength 编码,带颜色表的图像
0 n& F) B: G: m|--------|--------|------------------------------------------------------------
5 H9 ]8 Q5 R9 w7 B/ z/ z6 a% I7 F|  偏移  |  长度  |                            描述$ H9 }. a& |) T3 I, R
|--------|--------|------------------------------------------------------------
9 D2 F( U2 u2 s5 Q. I|    0   |     1  |  图像信息字段(见本子表的后面)的字符数               
, d! W! h: u  A% E( i! }& R|        |        |                                                            * [$ `; J$ r4 a2 Y% W
|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度     
4 ]$ {2 j3 p- s6 x$ A|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的     5 R- |! A" q1 u! i; }& E# l
|        |        |  信息字段。   
* ?; {: P, W% B" X( E|        |        |                                                            . o' B! C( F3 x+ N- h! \9 I
|--------|--------|------------------------------------------------------------& E" y2 b- |% I2 a
|    1   |     1  |  颜色表的类型                                          
. W3 ~& z! r3 s" @  U& A' M1 _6 U|        |        |                                                            
% U  U# g+ p4 p|        |        |  该字段为表示对应带颜色表的图像而总为 1 : V6 R' O6 K* m3 c6 V8 Y! |
|        |        |                                                            * K# s+ Y4 C; F/ R
|--------|--------|------------------------------------------------------------9 F( c  H8 J( _6 v
|    2   |     1  |  图像类型码
9 c8 ^; Z% E. z* H) {# g4 S& ]% g: W* ||        |        |                                                              r# L  Y/ M) J! k1 o8 \8 ~9 m
|        |        |  本类型该字段为二进制 90 v: F/ i" N% p6 {4 U+ `5 c
|        |        |                                                            ! v6 f5 P; A" C8 }
|--------|--------|------------------------------------------------------------! F# \4 C: m6 b0 |. g7 P% H
|    3   |     5  |  颜色表规格6 r/ A, e! f* ]
|        |        |                                                         
' X7 G- T! o& D" r|        |        |  如果颜色表类型字段为 0 则被忽略;否则描述如下
3 A- J8 J# z: X5 h3 v|        |        |  . F* X5 {( [1 u! G5 i4 _: W! I& m
|        |        |  
2 n( U1 r1 v6 @|    3   |     2  |  颜色表首址* A: `. ]1 L2 W$ ~/ `' H' B! E% j5 O$ y
|        |        |  颜色表首元入口的整型(低位-高位)索引
. M( e. c8 u# w, {|        |        |                  " R9 D& v$ R. v  ~$ ?
|    5   |     2  |  颜色表的长度
% Y0 t  G% u1 Q7 L% K|        |        |  颜色表的表项总数,整型(低位-高位)     
5 j) ^- r& |. b& M% H; y; u& S. ~7 f|        |        |                                   
6 g6 ^0 J4 O; M; {6 a+ _5 p|    7   |     1  |  颜色表表项的位(bit)数
( ]  Z6 o1 |/ ^. N5 a4 ?|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
* w$ L& k, {3 y, f) Y6 I! g; u/ K& m|        |        |                                                           
6 p" g4 Z2 ^9 g|--------|--------|------------------------------------------------------------
% E) {# b6 k8 M0 L( d! h  `3 j' g2 S|    8   |    10  |  图像规格                                               ' n1 V2 k# h7 X* v$ v
|        |        |                                                            
) X! J! [4 |# ^# C& O3 a. P1 P0 k|    8   |     2  |  图像 x 坐标起始位置                                       
2 G$ d3 r4 T6 G2 z+ [$ v% w* _|        |        |  图像左下角 x 坐标的整型(低位-高位)值               ' I7 j8 H( x0 q/ X  x- T0 F
|        |        |                                                         2 v. j& o% P: U& j/ T; M
|        |        |                                                            / L! ^$ j8 `# k; ?; \/ d6 n
|   10   |     2  |  图像 y 坐标起始位置                                       4 J- ~( Z, X% r6 b. ~! p
|        |        |  图像左下角 y 坐标的整型(低位-高位)值               : G" z2 E' U/ Y: \5 q
|        |        |                                                         : ?' @( a3 d; o: S0 o$ m
|        |        |                                                            
/ C1 O. T7 N  Q$ v. j|   12   |     2  |  图像宽度                                                   1 ^4 w9 r% @) D: U
|        |        |  以像素为单位,图像宽度的整型(低位-高位)值           
# R. p2 |2 A0 G% \( `7 ~( Q|        |        |                                                            7 v5 O' E# Q/ @1 o  a
|   14   |     2  |  图像高度                                                   
4 S2 o$ e' y; G3 U) ^1 ^) o|        |        |  以像素为单位,图像高度的整型(低位-高位)值               
0 [7 F2 r0 }8 f# K/ L+ J: p|        |        |                                                            $ d* b. @4 o: B6 ~) u7 L+ G
|   16   |     1  |  图像每像素存储占用位(bit)数                             " I" O4 g1 F! Q0 B4 x
|        |        |                                             
, s) t  s& q! F$ \* j2 g|        |        |                                                            ( X) k5 ~. r0 q  O0 A5 Z* U
|   17   |     1  |  图像描述符字节                                          
& Q; s. M. B- G8 S. E, T9 A) ~8 k|        |        |  bits 3-0 - 每像素的属性位(bit)数                   6 j6 A. w% ~) \  i/ [. Y/ D' b
|        |        |                                                        3 v4 G1 o) F) \9 ^, W
|        |        |  bit 4    - 保留,必须为 0                               ' c- v  g4 r9 V3 [$ j: B+ l
|        |        |  bit 5    - 屏幕起始位置标志                           + n8 t4 K- W# J* l5 M, D
|        |        |             0 = 原点在左下角                       8 l0 E6 M. F6 l5 F7 W# C* n- d; \
|        |        |             1 = 原点在左上角                        
- [2 Q0 O. Y3 c" ~) o" @|        |        |             truevision 图像必须为 0                         - D# a3 Y' }0 R; x( _, F
|        |        |  bits 7-6 - 交叉数据存储标志                       
5 k5 S) }0 l- S1 z+ a4 K1 W1 c|        |        |             00 = 无交叉                                   % g4 M2 d# s' V7 K! f, |
|        |        |             01 = 两路奇/偶交叉                        ; c. J% \) m0 f. \' |
|        |        |             10 = 四路交叉                               ( w( ^6 [+ C& k
|        |        |             11 = 保留% S4 i  [" c1 l2 ?' G
|        |        |                                                            1 i1 k3 I' K2 @, h0 b, N" q* l- l
|--------|--------|------------------------------------------------------------
1 w( f5 \0 d$ {7 D: f0 B|   18   | 可变   |  图像信息字段                                       
6 @( I$ v; Z4 o+ ~5 I- r|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   
8 Q$ t2 T- ]" S( M% V: d# u7 f|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以   
( D. i3 [8 E( ~|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   * t% h. t( [* V4 V9 ^8 d$ N
|        |        |  之后
, P8 ]8 M3 Q' q, l% M5 ]  U7 T" Q|        |        |                                                          # H. B# [, @$ [  o; W8 Y
|--------|--------|------------------------------------------------------------: N/ N+ e' X$ W& K
|  可变  |  可变  |  颜色表数据                                                
6 g8 t1 U/ p7 |1 B|        |        |                                                            
, N6 f3 x( k, s6 d|        |        |  起始位置由前一个字段的大小决定;其长度由单项数据大小      
$ k# W% _5 Y; V9 l. V5 _3 g$ ?|        |        |  和数据项数目决定(在前面相应的说明字段中给出)            ! H& R3 @; z: h; b- c5 F3 H0 V
|        |        |  每项是 2 字节,3 字节或 4 字节,字节中没有使用的位(bit) 0 e: d7 a2 S4 N$ _+ l( O5 W/ o
|        |        |  被认为是属性位。                           # p3 ~9 H2 O( x0 B( t
|        |        |                                                            
: L1 C. Q4 o, I- A" j2 w& x|        |        |  4 字节表项中,字节 1 表示 BLUE,字节 2 表示 GREEN,
: n4 @& `0 r4 n$ E' {. }2 \|        |        |              字节 3 表示 RED,字节 4 表示属性           + k, \7 \  W6 Z& Y) T4 S5 ?$ w
|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               , F/ ~+ Z& d2 |, H( \7 [
|        |        |                                                              o6 ^' f. ~* G# S" B
|        |        |  2 字节表项中,两个字节分解成如下形式:               6 [- k: l- ]  K* y
|        |        |  arrrrrgg gggbbbbb                           % T6 F* F% b4 v3 A9 C8 _
|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  2 d5 m5 L$ P0 z
|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位。
" i8 R% s: M2 s0 h: H|        |        |                                                            
& k6 R9 ]( C! \% v" a|--------|--------|------------------------------------------------------------+ Y) q" J5 Q9 v) o" U7 @1 j9 e
| 可变   |  可变  |  图像数据域
) D1 a, I" l# _; f  Z|        |        |                                                            
8 y1 ~. q) x5 s0 p0 h8 n|        |        |  本区域给出了(宽度)x(高度)个颜色表索引这些索引存放8 B0 b# H6 p' j* u
|        |        |  在数据包中;有两中类型的数据包:run-length 数据包,
0 L4 u/ A* Y! ]/ ^6 D5 L|        |        |  以及未加工的数据包,每种类型的数据包含有 1-字节的头信息,
, ^  Q- A# u/ e|        |        |  (其中指出了数据包类型和数目),其后是可变长度的数据域' Z" {- b* ]1 s% D# T5 y! N9 G
|        |        |  头信息中最高位为 1 表示 run-length 类型的数据包,当
$ n! M0 [9 x' s9 Q$ H* {" k0 V|        |        |  它为 0 时,表示未加工的数据包
9 j, W' J- W+ [8 L|        |        |                                                            ( M) j5 |% X6 b. k6 O) k% a% k
|        |        |  对于 run-length 数据包,头信息含义如下
. k3 C9 b' }- m5 ^1 }8 |6 K! \|        |        |      __________________________________________________    / j% E4 m+ w6 U9 m* J
|        |        |      | 1 bit |   7 位的重复记数减一
5 d) c+ j* U' t/ r- V9 z|        |        |      |   id  |   由于 7 位表示的最大值为 127,故最大  |; a: l" [1 o8 L" s: @) Z' {
|        |        |      |       |   的运行大小为 128,(译注:原文为     |# i8 ]$ S( K9 ~% n. }8 C% L
|        |        |      |       |   the largest run size)          |  " `2 I- l" v9 Z6 q8 y5 N: V
|        |        |      |-------|----------------------------------------|2 U7 ]( o1 y8 c+ w+ M3 i( t+ D
|        |        |      |   1   |  c     c     c     c     c     c    c  |$ z4 ^( A. q3 }
|        |        |      --------------------------------------------------
( Q% t. c; A- v; C- b|        |        |                                                        
9 j# D) o! b+ r7 b9 @- L|        |        |  对于未加工数据包,头信息的含义如下3 h! G5 v7 ]  e8 P8 \" Y: H7 ?
|        |        |      __________________________________________________8 Y2 ^" r8 y. h" V
|        |        |      | 1 bit |   7 位的像素个数减一                   |
1 Y3 i8 o2 J  y  |- o# u|        |        |      |   id  |   由于 7 位表示的最大值为 127,故该    |. |5 a& s0 e6 X6 V- z
|        |        |      |       |   类型的一个数据包中像素个数不能大于   |
& Y8 W. h( E- ^1 m- M" ~2 k|        |        |      |       |   128                                  |
/ s9 f) Z. s" e|        |        |      |-------|----------------------------------------|
" v) y, E9 E- H4 X( P% ]7 F7 k|        |        |      |   0   |  n     n     n     n     n     n    n  |
0 n" `! ^) `2 C& O9 i0 K|        |        |      --------------------------------------------------
4 {- O2 i8 G2 p3 N' L  N|        |        |                                                        
+ F6 {: L% \, c- G|        |        |  对于 run-length 数据包而言,头信息之后是一个简单的& Q# q& G) z8 Y$ ?8 ?0 }( K7 ]9 l6 k. x
|        |        |  颜色索引,且假定该索引被重复头信息中低 7 位表示的次数
, }& i# T# h& ]; ^6 y0 t) d* ~|        |        |  run-length 数据包也许会跨越扫描线# c/ J0 ]2 ^# @4 k
|        |        |  (扫描线起始于某行结束于下一行)
- ?) A5 E) h" t6 d' B|        |        |                                                        / O. a% A" ~  s$ E5 c
|        |        |  对于未加工的数据包,头信息之后是颜色索引(数值由头信息
( o* _- i- G  n|        |        |  给出)该类型的数据包也可能跨越扫描线
* D6 U; g# Q. D. A5 T0 z& O|        |        |                                                            
. |- l1 g3 d; K- W) F8 B--------------------------------------------------------------------------------
# `  i$ a  d2 s) |2 ?
$ U! X) S8 p) S; F  M( ?' F( `( E, {) I8 u( a8 e* f; Q9 ]# N% Y
  n; S* z# z+ b% X3 h( J* I* R

: v3 J) C2 N: {1 O* M--------------------------------------------------------------------------------
8 m: {5 m  T6 b- o% t, l0 B|数据类型 10:run length 编码,rgb 图像
3 P- m! }/ N$ _& C3 q- i0 v" G" u|--------|--------|------------------------------------------------------------9 g- X- Z, Y5 q/ P2 M" j
|   偏移 |   长度 |                         描述                              ; b2 f/ B( |: X2 J* o: E
|--------|--------|------------------------------------------------------------, X2 t7 @/ g: s, a
|    0   |     1  |  图像信息字段(见本子表的后面)的字符数               7 Z% K( S, i. z
|        |        |                                                            
0 A' A% J( P& Q7 D( c- e, r) ||        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度     3 [6 L: f6 y* Z* B% _
|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的     
2 J; Z, u, q7 b|        |        |  信息字段。   
' j$ u5 k4 _) j5 u4 Y|        |        |                                                            
- ^4 K1 O! C- p7 ?8 e|--------|--------|------------------------------------------------------------
, Q9 i5 I. H6 z2 a" h5 w) [|    1   |     1  |  该字段的内容或者为 0 或者为 1;0 表示没有颜色表,1 表示
5 ~% y6 b* W! ~9 ~|        |        |  颜色表存在。由于本格式是无颜色表的,因此此项通常被忽略。0 x3 D) `, h+ a0 p" }
|        |        |  提示:如果置为 1(targa 绘画程序)将把边框颜色设置为映射
3 }( d+ t/ w* @& J' @7 m' e|        |        |        中的第一种颜色9 t4 k/ E' O% j3 v+ Q6 ^" B( w
|        |        |                                                            
* B- Q" d4 E; R5 H& i|--------|--------|------------------------------------------------------------. w. |6 i% T) B5 A
|    2   |     1  |  图像类型代码! w- N3 f9 A5 n! y- X0 K- h
|        |        |         
) A  U5 O/ C, P  l|        |        |  本类型该字段为二进制 10
7 C$ ^" \, j7 d: q" t6 V" u|        |        |                         6 h- j$ Z1 b# |3 _1 F
|--------|--------|------------------------------------------------------------$ A; }( l" k* E: y, m
|    3   |     5  |  颜色表规格
8 `" g3 C9 i" a. \# W" B|        |        |                                                         
2 h/ G) R% Y! G: s  s+ P|        |        |  如果颜色表类型字段为 0 则被忽略;否则描述如下- c" ~! d$ k' U
|        |        |  / e; c2 @, m' Y. e0 }6 Y& P
|        |        |  
/ q, r% o! @% k' K% l, y( j# x|    3   |     2  |  颜色表首址
  F/ m( }# Z, H  V1 o6 v|        |        |  颜色表首元入口的整型(低位-高位)索引
* i% B' j/ x/ U0 L1 |& O  C|        |        |                  
( \& Q- F& I  P: Z& V|    5   |     2  |  颜色表的长度0 m* h) v. Z4 [& N
|        |        |  颜色表的表项总数,整型(低位-高位)     
1 A% T- u5 |6 [0 z|        |        |                                   
- H9 X- `. {# ?5 O|    7   |     1  |  颜色表表项的位(bit)数  d2 s# B, H7 {/ o
|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
  A6 U, _, e* Z- T6 q% V( N|        |        |                                                            1 z& }, Z$ T# O% N3 {
|--------|--------|------------------------------------------------------------7 C: V- p, C7 G7 Z- e! u1 y
|    8   |    10  |  图像规格                                               
8 [+ M( X  S3 W7 e/ [0 J|        |        |                                                              l3 W6 K+ ]4 X3 l& c3 S/ l
|    8   |     2  |  图像 x 坐标起始位置                                       
, `" W8 W/ u: M* n; _# f* J1 \|        |        |  图像左下角 x 坐标的整型(低位-高位)值               
' q' J6 j: N7 i) b2 ~5 [- \) }|        |        |                                                         7 R1 e* I6 I$ d6 b. K$ M
|        |        |                                                            
) F/ h7 Y" Z- X6 C|   10   |     2  |  图像 y 坐标起始位置                                       
. k0 H3 a9 N" F1 q( k) w# G0 D|        |        |  图像左下角 y 坐标的整型(低位-高位)值               
( s9 S+ Y( T+ Z% W+ g3 O, B0 K|        |        |                                                         
) l! V; X/ I4 P+ L! s* {; L; L5 L|        |        |                                                            
; Y6 j1 L4 f: \+ S, D" A|   12   |     2  |  图像宽度                                                   
* v; @  [# d9 \$ ~1 r% x" o|        |        |  以像素为单位,图像宽度的整型(低位-高位)值           7 O; I2 i9 ~' X3 ]; w6 M% h
|        |        |                                                            
" _- V2 \9 F, Q  t% F6 `0 A% v|   14   |     2  |  图像高度                                                   
6 |( t' B; Y5 U# W/ S|        |        |  以像素为单位,图像高度的整型(低位-高位)值               
4 M% S2 c! d9 {. H|        |        |                                                            5 B* W: o. x7 U2 p/ m
|   16   |     1  |  图像每像素存储占用位(bit)数                             . H+ t6 b8 O& e2 m; \
|        |        |                                             5 [  u" Q, K+ ~- Y- J' ]
|        |        |                                                            ! x8 r3 u3 J$ O" X- H
|   17   |     1  |  图像描述符字节                                           1 Z  J+ `' Z/ O; e* F
|        |        |  bits 3-0 - 每像素的属性位(bit)数                  
' F2 t) u+ {! _* r+ t0 @: r|        |        |                                                        % ^% v' m, M: `
|        |        |  bit 4    - 保留,必须为 0                              
' _' T! |  J" l2 b|        |        |  bit 5    - 屏幕起始位置标志                           
+ y; i7 l, b& i|        |        |             0 = 原点在左下角                       $ G! l6 L* ~( z! k) w7 T
|        |        |             1 = 原点在左上角                        
$ t! w* C$ u0 h3 G! B& T0 P0 y|        |        |             truevision 图像必须为 0                        
! g' S  g! O$ v8 I# S% C4 w9 ?2 x|        |        |  bits 7-6 - 交叉数据存储标志                       2 A8 S7 ]7 f# u& E' n( r
|        |        |             00 = 无交叉                                   $ A% [' g7 s" K. d/ l& K, D
|        |        |             01 = 两路奇/偶交叉                        
, i; \7 w) w) _|        |        |             10 = 四路交叉                              
. l7 K* s) U* F1 ]% Z& w|        |        |             11 = 保留                                   
- C9 n# T, N  ~* C2 P|        |        |                                                            % g0 W0 J8 T' ^" i
|--------|--------|------------------------------------------------------------
; E" Z1 f, q; T+ ?3 u|   18   | 可变   |  图像信息字段                                       8 H; H5 v' F1 @' K
|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   
4 i/ {0 G% U+ P/ E7 k" p$ W|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以   
4 {& Z7 t- m6 H. ~1 ^9 @1 X& P' `|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   
6 v3 R- ?7 t; [% g. S6 L|        |        |  之后
$ \8 j. e2 M) L4 F! w( S3 Z|        |        |                                                            
( ?) U- r, l& v0 G8 W1 i|--------|--------|------------------------------------------------------------" `' O% o5 z% f3 S0 A( J- v
|  可变  |  可变  |  颜色表数据                                                - n; S7 ~1 u" A- \9 u8 Z# s- j) |
|        |        |                                                
4 J( Y) S) {& Q8 v+ @. T6 ^|        |        |  如果颜色表类型为 0,则该域不存在,否则越过该域直接读取9 k2 m$ T+ g6 J9 d5 t
|        |        |  图像颜色表规格中描述了每项的字节数,为 2,3,4 之一# h* Q) N; V8 L0 G+ n9 R* F
|        |        |                                                            
2 U8 v) Z: e2 m3 m|--------|--------|------------------------------------------------------------7 U) o. }( S) o3 |( [
| 可变   |  可变  |  图像数据域
' x2 h8 y% _$ b- q1 }$ W|        |        |                                                            
. E2 C/ w! q' ~# J7 X; G|        |        |  本区域给出了(宽度)x(高度)个颜色表索引这些索引存放3 f& {. u- k, L; P* S5 ?0 |
|        |        |  在数据包中;有两中类型的数据包:run-length 数据包,4 p' w: u" H+ n- S8 D3 Y# d9 z0 |
|        |        |  以及未加工的数据包,每种类型的数据包含有 1-字节的头信息," P4 E% J4 V  x$ P& T
|        |        |  (其中指出了数据包类型和数目),其后是可变长度的数据域2 T. c/ c7 A1 i# |5 g8 o0 ?! M
|        |        |  头信息中最高位为 1 表示 run-length 类型的数据包,当
- q2 I/ M9 J0 C- c. A% ^|        |        |  它为 0 时,表示未加工的数据包6 @2 w& Q0 l+ @% y8 y  \+ ^8 [  P6 s' K
|        |        |                                                           & \% p0 e, e9 W$ T, `0 {9 J0 D& @) B
|        |        |  对于 run-length 数据包,头信息含义如下0 J, }3 e7 O" h: J: P6 d# c+ t
|        |        |      __________________________________________________   
# U" {" j4 l7 o( m|        |        |      | 1 bit |   7 位的重复记数减一( M4 _, }$ v2 u$ i  x" Q6 k. v/ u
|        |        |      |   id  |   由于 7 位表示的最大值为 127,故最大  |" ^0 }+ @  Z' J" b7 e  p
|        |        |      |       |   的运行大小为 128,(译注:原文为     |
$ q2 M1 ?. J9 L: K) P|        |        |      |       |   the largest run size)          |  0 E& w$ R9 }7 N8 e9 c
|        |        |      |-------|----------------------------------------|
- h+ _1 y( a4 a9 H6 A|        |        |      |   1   |  c     c     c     c     c     c    c  |
1 a, [+ d  R, Z2 [|        |        |      --------------------------------------------------% Y" g( _( v4 |$ \" D
|        |        |                                                        # W5 X, h3 O" V* \, n) z- t
|        |        |  对于未加工数据包,头信息的含义如下! @$ w6 D# W# R' H& l
|        |        |      __________________________________________________' p- G5 T4 U( ?( B5 H3 d9 \; w
|        |        |      | 1 bit |   7 位的像素个数减一                   |5 b7 X& N; i, G  `9 d' D9 |1 n
|        |        |      |   id  |   由于 7 位表示的最大值为 127,故该    |0 u/ N  L( `- L) T
|        |        |      |       |   类型的一个数据包中像素个数不能大于   |! k; G7 e7 B1 r- Z" q
|        |        |      |       |   128                                  |$ L" y: m8 [/ P( t% k: |# a( j
|        |        |      |-------|----------------------------------------|
) C9 e6 e$ v+ u8 Y2 E|        |        |      |   0   |  n     n     n     n     n     n    n  |
4 e% A3 E, i. m& m3 j3 G$ i|        |        |      --------------------------------------------------
: o0 O5 |6 k; @; S- i|        |        |                                                            7 l: l4 m5 s+ K2 q: d2 \0 Q5 w
|        |        |                                                            
% V4 I8 n3 I5 {7 w$ G# Z* `|        |        |  对于 run length 数据包,头信息之后是一个简单颜色值,
* c+ W& ^' F& z' ]+ S* I|        |        |  且假定该值重复的次数为头信息中记录的数$ k9 ?$ e* m6 p7 T8 l* ]
|        |        |  run-length 数据包也许会跨越扫描线
9 j+ v$ W; {' K9 H|        |        |  (扫描线起始于某行结束于下一行)3 _+ h$ S- a3 s8 G& N. e' E0 f1 @
|        |        |                                                      
8 ~) o# ^; S+ r|        |        |  对于未加工数据包,头信息之后是颜色值(数目由头信息指出)
: r$ z8 {7 C6 O' N! A9 w|        |        |  3 }4 `% f4 A# C# m0 p! b5 y
|        |        |                                                
% C# g# o; E$ p8 v2 e! `2 o# N|        |        |  颜色表项自身有 2-字节,3-字节或 4-字节几种大小(分别! y9 c* \; ~# W4 e- a" U
|        |        |  对应 TGA 16,TGA 24 和 TGA 32)形式如下:
0 A8 y8 i- y4 r2 ^|        |        |  
( ?1 |) b9 Z$ h& d0 k|        |        |            ' f+ D: Y/ `! e  d) E( Q
|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               
8 z* |, m; }' c7 s& s* j9 X|        |        |                                                            
% q6 k1 r0 G% T( Z: g1 C# X$ F8 [|        |        |  2 字节表项中,两个字节分解成如下形式:               # c' X( e6 O, l, ^7 D0 a; T' L) `
|        |        |  arrrrrgg gggbbbbb                           & I; a6 c  g; E- a; B: a; r
|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  4 C0 p4 U- L7 O# y2 r0 W* K
|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位$ h6 g  d! a$ u, B8 `
|        |        |                                                         
; V* Z8 t. d* {7 s( d4 x7 A|        |        |  4 字节表项包含了分别代表 blue,green,red 及属性的四个1 l: E* Y8 q" x+ Z1 _9 {, T7 [; u
|        |        |  字节;(由于硬件上的原因)有的时候 TGA 24 类型的图像也象! `* s' I, k' s& X" s
|        |        |  TGA 32 类型的图像那样存储$ V( K/ {4 y: E, H8 V8 J
|        |        |                                                            $ f; n8 ^! O0 o, P' V$ V5 H
--------------------------------------------------------------------------------2 k3 Y- \. B1 F. _& I2 B+ m% S$ ?" P: O

! J& b. {) D  C. }<完>




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