设为首页收藏本站官方微博

【汉化资料】TGA图像文件格式资料

[复制链接]
查看: 1339|回复: 0
打印 上一主题 下一主题

【汉化资料】TGA图像文件格式资料

跳转到指定楼层
楼主
发表于 2009-6-3 22:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

【汉化资料】TGA图像文件格式资料

原文3 Q# V4 ]; |: n/ a+ G! |4 b9 b
http://dev.gameres.com/Program/Visual/Other/TGAFormat.htm7 X3 m# N/ T1 V5 w4 b: Z5 v
  ; B" W. z3 B. L" @/ u& U3 S+ S
根据david mcduffe编写的TGA文件格式资料翻译而成
& d" f' |  e5 N3 J& h $ e1 i$ w7 y7 G! G
本文档是为满足许多对 TGA 图像格式的了解需要而创建的。本文摘录自truevision 技术指南的附录 C,如果' n, b4 o! W  O! a% i
需要更进一步的信息,请致信以下地址:
  C0 w! V2 `+ l2 y( u% R% H  w4 k! o( s& F4 x4 s3 x
           at&t
) X2 ]5 V; o( O7 O           electronic photography and imaging center
' I/ \) K4 u6 [           2002 wellesley ave.
0 G4 G9 q2 f8 u$ w           indianapolis, in 426194 |: m) X3 ]9 k
本文档不求全面,但力求准确。如果你发现了任何拼写错误或内容错误,请告诉我,( david mcduffe, 7 Q5 [3 i( b% G$ A  y8 O: z5 Z
75530,2626 ),我将改正这些错误,谢谢。
# l, o/ @1 `# k. Q3 J$ R
4 }0 G% [/ H5 S+ w9 q, b! S, Q不全面的原因是 TGA 包含了超过六种图像文件格式,而其中的几种较为常用。 我选择了我现在使用的格式并4 g( o# q! }  d/ F* G! X' g: U
在本文中加以详解。 如果你需要本文中没有包含的格式说明,你可以与你的 truevision 代理商联系。
2 {3 |7 T, J" f. j! [% T对所有的 TGA 格式的文件而言,其第三字节(二进制整数)用来区别各种不同的 TGA 文件。下面列出了该字+ J% K% T) U/ T) p" E  R4 D" Y' {
节表明的对应文件类型:8 P1 ^% _2 c- a! J& p/ I1 T# Q9 }
    0  -  文件中没有图像数据' q9 n# |; M& Q2 O" l- T
    1  -  未压缩的,颜色表图像
3 n: s0 H9 @! O' i; X    2  -  未压缩的,rgb 图像
; ^1 j0 i- f8 T; ?) R: o    3  -  未压缩的,黑白图像: N2 N/ [' F( ^8 O9 I
    9  -  runlength 编码的颜色表图像
( h: r2 b& ^/ i' n! Z+ `5 L' P    10 -  runlength 编码的 rgb 图像
) S- c9 i+ a. _" S  v& u9 O, x% }6 ]    11 -  压缩的,黑白图像
' D3 A" ^5 C0 [. y% ?    32 -  使用 huffman,delta 和 runlength 编码的颜色表图像) p) z& j* f9 y( o" Q' U7 d: T
    33 -  使用 huffman,delta 和 runlength 编码的颜色映射图像,4 趟四叉树类型处理。
2 t1 _* o, H/ h5 P    本文仅仅描述对应 1,2,9 和 10 的文件格式。
0 T( ^) c  k0 ?$ a6 `1 _; ~4 ^5 ^4 f4 v
--------------------------------------------------------------------------------
% j3 J1 ?/ X4 Q: S4 S: i" l, E, b|数据类型 1: 颜色表(color-mapped)图像
0 ?% v, E0 p: t' y2 s4 ^|--------|--------|------------------------------------------------------------- W' ]& T) N3 @6 J# i0 f, \
|  偏移  |  长度  |                            描述& H+ p" d# y; s
|--------|--------|------------------------------------------------------------( s6 O# m" S! e" m" {
|    0   |     1  |  图像信息字段(见本子表的后面)的字符数               
5 `$ f/ h. t- ~: _) v! b3 x|        |        |                                                            8 j" i. _' R( M0 L* ^  a
|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度     7 ^6 J+ q$ N. F( I& o. s" i$ c
|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的     
7 B6 Y4 V0 k4 W  J. ~|        |        |  信息字段。                                   " P% D4 u" y4 B0 T- h
|        |        |                                         
; f1 U4 e- Z& P9 O|        |        |                                                            
# E, D9 L3 j9 N% L|--------|--------|------------------------------------------------------------
, E0 z$ e# D1 k3 @2 a|    1   |     1  |  颜色表的类型                                          
( {1 ]; A6 a# X4 y7 ?  U9 ~: M|        |        |                                                            
1 p1 b8 L3 Z' u( [$ n|        |        |  该字段为表示对应格式 1 的图像而包含一个二进制 1           
1 w# u$ |; _, T- s9 V" h|        |        |                                                            
: v, e1 g- h" W+ h4 O& o|--------|--------|------------------------------------------------------------4 X5 I  p  N) o; }; H' @5 K( q) A5 z
|    2   |     1  |  图像类型码                                            - N% g8 c* F3 v: \
|        |        |                                                            
0 y/ j. f  @; R. i8 Y9 R|        |        |  该字段总为 1 , 这也是此类型为格式 1 的原因               
5 I; x. V8 f/ F' _6 p|        |        |                                                            & x6 m3 C; {' N* d/ a
|--------|--------|------------------------------------------------------------
- H" t2 Z4 v, c: C5 [|    3   |     5  |  颜色表规格                                       0 m6 D2 C6 O) Y3 D2 f: H
|        |        |                                            7 b0 U5 V- K# {2 k4 y% _/ o9 \0 T- h  C
|    3   |     2  |  颜色表首址                                                
* E9 S( n1 ~( g7 J|        |        |  颜色表首元表项的整型(低位-高位)索引               
: a7 X; j: g3 Q9 t/ L- N- w|        |        |                                                            " @! `! O; e8 E8 X
|    5   |     2  |  颜色表的长度                                          
9 R2 v! I  F$ |; Z  b& r|        |        |  颜色表的表项总数,整型(低位-高位)                  
9 x3 R9 @$ s7 p& U0 l6 W* ^( l|        |        |                                                            & k5 `: }, z+ e* t& a6 S1 s
|    7   |     1  |  颜色表表项的位(bit)数                                   
9 e- t* `+ g$ v1 b& H|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
2 n4 K; g2 j. E& g|        |        |                                    
( ~7 a7 w$ j  }9 B( R$ G|        |        |                                                            : s$ k( g, q/ W- Q
|--------|--------|------------------------------------------------------------
0 C& b0 s. D# R$ V8 K$ _|    8   |    10  |  图像规格                                               1 F4 J# m: z; U5 P9 x) G
|        |        |                                                            
  W( |1 m& L- O, A8 a# R0 W|    8   |     2  |  图像 x 坐标起始位置                                       
  ?$ h. F5 [$ w( o|        |        |  图像左下角 x 坐标的整型(低位-高位)值               
2 g9 q# g) N# x* [+ ?# E/ y6 `. Y& `|        |        |                                                         
5 f7 R1 q( _2 j, a& n* U|        |        |                                                            
2 W9 b& A' B$ O$ |; W3 G% a|   10   |     2  |  图像 y 坐标起始位置                                       
. T# D, U4 h' L+ F" o4 X|        |        |  图像左下角 y 坐标的整型(低位-高位)值               
- J: |, V" |) L6 t' E+ b4 E|        |        |                                                         
3 A5 ]2 c: Q* \/ ?& [1 P( ^3 S|        |        |                                                            ( e3 B) Z9 k- k3 h
|   12   |     2  |  图像宽度                                                   2 W2 k$ N0 L7 S
|        |        |  以像素为单位,图像宽度的整型(低位-高位)值           ; s/ Z7 k5 N; i3 ~/ s0 p
|        |        |                                                            6 U, Y5 H& }, w
|   14   |     2  |  图像高度                                                   
/ u+ U& P3 i& {# c* y$ Z|        |        |  以像素为单位,图像高度的整型(低位-高位)值               
% V: Y6 J8 Y2 p! ^|        |        |                                                            
5 w9 t" ~1 l$ b. d; Q|   16   |     1  |  图像每像素存储占用位(bit)数                             
7 I. V9 i. b) P2 H: k' v9 M|        |        |                                             $ `: J* X$ B4 D  T
|        |        |                                                            
' v: x  Q0 H6 k0 u: q5 r  ?5 i|   17   |     1  |  图像描述符字节                                          
0 R7 [  b3 k1 H+ Q7 v|        |        |  bits 3-0 - 每像素的属性位(bit)数                   ; n  k9 L9 P  |0 T: \& O
|        |        |                                                        
" }. m! r: g, I|        |        |  bit 4    - 保留,必须为 0                               9 a) Q9 n+ [. @- y+ U" W% y
|        |        |  bit 5    - 屏幕起始位置标志                           
$ R+ k3 x4 {0 f+ R# ~5 f; f) ?1 p|        |        |             0 = 原点在左下角                       % n: x. F+ L9 ]4 p3 c6 R
|        |        |             1 = 原点在左上角                        
# w/ X1 O: R; v- F; H8 i|        |        |             truevision 图像必须为 0                         ' c7 _9 i2 M9 \/ n
|        |        |  bits 7-6 - 交叉数据存储标志                       
+ w. I! [9 F$ x6 W5 v|        |        |             00 = 无交叉                                   
: g( ^9 P3 `4 Y2 K5 b# K2 M|        |        |             01 = 两路奇/偶交叉                        1 a3 B. v- n7 L
|        |        |             10 = 四路交叉                               5 G8 I6 a# j+ y& _0 }+ i
|        |        |             11 = 保留                                   
( N6 f, |( {* S( p|        |        |  这一项应该设为 0,不要问我为什么                  
$ q: _4 i. l! ||        |        |                                                            
5 v' n7 X4 O( H- O; `( S|--------|--------|------------------------------------------------------------! R3 G4 U$ n) E. {0 w/ O& V
|   18   |  可变  |  图像信息字段                                       
2 @" S3 u; P# j7 ~) J2 F|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   
3 J$ E, h0 c2 \& s9 o# \9 d|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以      l7 f. N' r$ [5 N( ~7 _1 R" }) W- K
|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   0 V& C  g& @  T5 K5 h
|        |        |  之后                               3 B+ |, a8 N% h) q: ]  U
|        |        |                                    
3 S. U# M$ S- ]! [|        |        |                                                            * a9 d, P! z/ k4 u4 \( ]0 ]
|--------|--------|------------------------------------------------------------+ y7 B6 x5 |2 Y1 N  \- k% W
|  可变  |  可变  |  颜色表数据                                                8 H, q* F7 W8 U& m, K
|        |        |                                                            5 z9 d) Y4 N8 {. P, E
|        |        |  起始位置由前一个字段的大小决定;其长度由单项数据大小      
/ q. T! C) L1 U1 D' z. v+ ]|        |        |  和数据项数目决定(在前面相应的说明字段中给出)            : O: W1 [8 M9 l( A7 Y
|        |        |  每项是 2 字节,3 字节或 4 字节,字节中没有使用的位(bit) & R$ ]1 s6 L0 ]& `. E$ S$ C/ J9 U
|        |        |  被认为是属性位。                             b% [6 z$ q) c1 U
|        |        |                                                            , O. H$ H4 M. x! _/ r- N+ m
|        |        |  4 字节表项中,字节 1 表示 BLUE,字节 2 表示 GREEN,
* C/ w; k% N: F& G, o0 c/ R; `|        |        |              字节 3 表示 RED,字节 4 表示属性           
' V6 p3 E( @- Y1 {|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               ! m( q! v! G; I8 t* r+ t! V
|        |        |                                                            : k8 f) d( p# @8 A- T$ Q
|        |        |  2 字节表项中,两个字节分解成如下形式:               ( e6 z* r" J) S7 |# P7 [6 M
|        |        |  arrrrrgg gggbbbbb                           ! ~/ m' B$ R( z: d+ Z* _
|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  & \, j1 j% Y' P4 o
|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位。  
. _5 q" R/ }; i/ m6 s5 ~|        |        |                                                            
& V% D" D& i" Y3 G( z|--------|--------|------------------------------------------------------------
! {( _' m( ?( C. {8 _|  可变  |  可变  |  图像数据字段                           
* Q! p) M% ^8 e; u1 I$ F& P$ E|        |        |                                                            
, s* d# H  r& V: E7 W|        |        |  该字段给出了 (高度)x(宽度)个颜色表项索引,每个索引    3 D) A0 T7 \' V, `
|        |        |  以整数个字节的形式存储(典型的例子如 1 或 2 个字节)      
; @1 t( \! }1 u+ F$ {( I|        |        |  所有的数据都没有符号,对于 2-字节表项而言,低位字节是     
- q2 ]* k0 W) D. y|        |        |  先存储的。                              
" a! k" e. K: u' ?0 S|        |        |                                                            
& p' q+ z, A, k1 S) d; k! A- N-------------------------------------------------------------------------------
3 b# N# J- g+ m6 i( F9 k, E8 ?) M) C" X% `9 R
9 L8 u5 c4 [( w5 U  P; c
$ d7 x# \3 _9 Z
--------------------------------------------------------------------------------! p/ O; U. P- s# w; b" u' X# {
|数据类型 2: 无颜色表 rgb 图像                                  . V9 b$ I5 [* I0 }& Y
|--------|--------|------------------------------------------------------------
1 P' j8 g0 S7 R6 [8 C|   偏移 |   长度 |                         描述                              7 I5 m- J0 K. r  B5 X
|--------|--------|----------------------------------------------------------
. A4 i3 H* j2 [2 V" e# w# X: y|    0   |     1  |  图像信息字段( 见本子表的后面 )的字符数
9 d  s7 Z* w; G' w) @, S|        |        |                                          
. l( {/ x- F; s1 \; ~2 h|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度& @5 w) a4 d7 F* F- i. K( R2 N3 B
|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的
0 g3 c5 j- B+ n) O|        |        |  信息字段。
% L% c9 d. l1 [|        |        |* X3 }8 c2 D0 k$ C% @: S# G- h
|--------|--------|------------------------------------------------------------
) g  i/ |+ N6 B5 s  [|    1   |     1  |  颜色表类型" Z& a. @+ s0 z. l, U( Q4 S4 o& {
|        |        |                                                
9 H( }' s8 r' _, C& B/ D5 _7 T|        |        |  该字段的内容或者为 0 或者为 1;0 表示没有颜色表,1 表示
7 I# n7 \4 \9 \) n" _5 a|        |        |  颜色表存在。由于本格式是无颜色表的,因此此项通常被忽略。: Z) m# E6 @# {" P: b  ~
|        |        |  提示:如果置为 1(targa 绘画程序)将把边框颜色设置为映射# y0 o  l) c0 f2 @; ?" K& M
|        |        |        中的第一种颜色! P+ Y' Q, X* G6 {/ @- o
|        |        | $ ~$ o* G( p  t1 ?( t9 k2 _
|--------|--------|------------------------------------------------------------
/ n4 r; O8 ^, p5 z|    2   |     1  |  图像类型码
* E! y. j% G7 V' w1 n/ n|        |        |                                                     
3 _# y& D0 S( i$ `6 u# K& ]|        |        |  该字段总为 2 , 这也是此类型为格式 2 的原因   
3 E9 ^/ @' p) C! u& i  k|        |        |  ( _+ ]5 K4 L& @
|--------|--------|------------------------------------------------------------% [1 w# _; m4 W- m& d9 T
|    3   |     5  |  颜色表规格+ v; j' n6 J+ |/ N  O* q7 c. @: ]* m
|        |        |                                                         # b& D, |8 y$ \6 c9 H8 o& @
|        |        |  如果颜色表类型字段为 0 则被忽略;否则描述如下; r) Q  o7 G4 W" `; f- E1 H
|        |        |  6 x: D4 T" V, s- W' Y# t
|    3   |     2  |  颜色表首址
& L9 R# O* |9 `1 p& \8 ~|        |        |  颜色表首元入口的整型(低位-高位)索引7 c5 y8 o" b1 K8 A. _* M+ y
|        |        |                  
0 m1 m+ J, h" t" R7 O) @|    5   |     2  |  颜色表的长度2 E  Q' k; Y- A  x/ r% B+ k
|        |        |  颜色表的表项总数,整型(低位-高位)     
% X' C- Y, J1 k; _6 l. I: Y) \" C|        |        |                                   7 t4 v% P  y1 ^, @% g. D/ ]
|    7   |     1  |  颜色表表项的位(bit)数
0 g  K! w' I3 a: t|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA3 n3 ]4 W% q1 R" e/ s  M
|        |        |  7 E+ e  P7 d, Q7 ~: ~- @' L
|        |        |                                                           - j; r4 P/ R. f- l0 h9 w$ ?
|--------|--------|------------------------------------------------------------
! t; z1 c) B4 `9 b: m% U$ y|    8   |    10  |  图像规格6 {/ s' H- j0 X4 V- l/ S, s
|        |        |                             " M* S) e  z* U, p' r
|    8   |     2  |  图像 x 坐标起始位置       6 o1 W! Z2 w4 _( a
|        |        |  图像左下角 x 坐标的整型(低位-高位)值
; D* w$ E' \4 {% A4 Q! _) u$ F|        |        |  
/ @1 U" L' X7 y2 Z+ O|        |        |. q0 }0 X6 `# S0 y0 j4 N
|   10   |     2  |  图像 y 坐标起始位置
) o: t: o" k" `) b' }3 j% _|        |        |  图像左下角 y 坐标的整型(低位-高位)值
$ c7 v- M+ [9 e|        |        |  
2 l8 c9 o+ {* u% d; L& ?% `|        |        |
9 r1 ]8 c/ `& o4 ~5 o" D|   12   |     2  |  图像宽度 3 K+ h% }+ {9 n( V1 ]! [
|        |        |  以像素为单位,图像宽度的整型(低位-高位)值# P& g5 \% O" M" e
|        |        | # g; V& D# f9 Q2 x, u" R3 E: K
|   14   |     2  |  图像高度' C) Y' H; T0 ?3 j
|        |        |  以像素为单位,图像高度的整型(低位-高位)值
( e& b  h! W& s) g|        |        |' l4 c6 A$ k' C$ C! z) T  y
|   16   |     1  |  图像每像素存储占用位(bit)数
& R/ w* z3 r- y& G- ^|        |        |  它的值为16,24 或 32 等等决定了该图像是 TGA 16,TGA24
" s" Z& t8 c9 ]; z|        |        |  TGA 32 等等. y* ^& L/ r( g  @/ M, E
|        |        |
2 \; ?- D/ b; C/ t& W6 S|   17   |     1  |  图像描述符字节
/ J. a* `2 G6 I|        |        |  bits 3-0 - 每像素对应的属性位的位数;对于     TGA 16,
% t% Z; y7 n, ?1 L' k! v. }|        |        |             该值为 0 或 1,对于 TGA 24,该值为 0,
: E& m% }3 P, e1 M8 g& `|        |        |             对于 TGA 32,该值为 8. ^2 V, D! A+ q
|        |        |             + d* X2 M) M% R
|        |        |  bit 4    - 保留,必须为 0
5 M$ D8 `. n! r9 D( y# Q1 J2 o|        |        |  bit 5    - 屏幕起始位置标志
9 s2 U+ S) C- |2 X: d|        |        |             0 = 原点在左下角
; A) ~7 p/ Z: I! R8 k* b4 G|        |        |             1 = 原点在左上角7 e. \9 b3 g- c7 s1 d& _* B7 i
|        |        |             对于 truevision 图像必须为 05 [  V  k, x' ~2 S! \4 }
|        |        |  bits 7-6 - 交叉数据存储标志" }4 N- f' `5 Z  ?  _
|        |        |             00 = 无交叉                                   6 P+ ^& L+ c' P9 E4 o9 F
|        |        |             01 = 两路奇/偶交叉                        + c3 d9 n4 u: W5 a7 C
|        |        |             10 = 四路交叉                               & [. y9 \5 z$ [1 Z0 B% o/ I
|        |        |             11 = 保留5 d: w+ Y% s* o- V- X2 A4 d$ B0 `
|        |        |                                                            4 l( g( K2 g7 \. ~5 y
|--------|--------|------------------------------------------------------------
2 i( e  _3 Y2 n) Y: V8 f|   18   | 可变   |  图像信息字段                                       
  E# V5 E' C9 i5 z4 W|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   
% Q/ O2 z9 S; f|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以    ; T1 _$ U/ ]9 B: f+ x
|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   # d- `: Z9 F! \
|        |        |  之后                              
$ q- ?' x" {% o7 t|        |        |                                                            
/ ?3 l. \1 Y) K4 I' _|--------|--------|------------------------------------------------------------
+ y7 D  Y/ `, ]- C2 r* z; A' J( J|  可变  |  可变  |  颜色表数据                                                4 N" z0 d# Z# Y. z0 {5 P
|        |        |                                                1 O, Q2 |" m4 A' _
|        |        |  如果颜色表类型为 0,则该域不存在,否则越过该域直接读取* b! ~1 j. T" C8 T. b
|        |        |  图像颜色表规格中描述了每项的字节数,为 2,3,4 之一: E+ }" [0 M0 B# K
|        |        |  
" z* Z7 D" P) `3 C2 `1 ^' Z+ e|        |        |  8 `+ g9 [, @! J8 n/ z% A3 Z  R
|        |        |  ; r7 P* i* I2 I" u( V4 C" o
|        |        |  5 V' J2 E- ]5 b( U1 R8 a
|--------|--------|------------------------------------------------------------
, O6 W2 v* Y3 C1 G- u|  可变  |  可变  |  图像数据域
( q6 s7 t  N* f( A9 N5 o% P|        |        |                                                    9 L; \- U* W1 H: x
|        |        |  这里存储了(宽度)x(高度)个像素,每个像素中的 rgb 色值
: N! x' ^8 J0 a|        |        |  该色值包含整数个字节/ a/ J, P" n! e& Q8 x, t
|        |        |  
( ^1 ?! }) ^, N! U|        |        |                                                           4 p3 O. L+ E! ]9 }1 q, v
|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               2 M' N4 [+ B4 P
|        |        |                                                            - Y+ y. \0 {% b+ j
|        |        |  2 字节表项中,两个字节分解成如下形式:               
% T8 Y  A, M* n- {# D$ ?* C6 {|        |        |  arrrrrgg gggbbbbb                           / i* e& [* t- Z- P+ c
|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  
# v& O+ [# _; \! B4 N& S; ?|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位  H0 n# r6 }+ D5 }
|        |        |                                                         
' A6 ^1 J- }* j9 ^/ k& P|        |        |  4 字节表项包含了分别代表 blue,green,red 及属性的四个
4 _: s9 J0 J+ ^9 s2 B8 R8 g|        |        |  字节;(由于硬件上的原因)有的时候 TGA 24 类型的图像也象
0 o' i* o% _: c& a4 u4 \: s: W, q|        |        |  TGA 32 类型的图像那样存储
. Q, }8 X7 W2 d# ?* H0 N|        |        |  ( y/ C1 E% K0 P. _- k" j3 \$ r
|        |        |                                                           i/ W& o, e4 J: b9 t0 O" i' d% Z
--------------------------------------------------------------------------------
2 U: ?% I. [" y: i
* B) ?( a. Y! O0 ^1 T
, t0 k. r. f3 x  ?* i: D( @8 r! L5 F# p

4 X8 {# l8 b4 e& W7 C( o--------------------------------------------------------------------------------
7 `6 s, O4 B# J$ w+ p' B% W|数据类型 9:  runlength 编码,带颜色表的图像
9 _4 Q; q. O4 N- F|--------|--------|------------------------------------------------------------
( D' B9 ]/ q+ S6 G, @|  偏移  |  长度  |                            描述( a1 R/ H9 A1 ?9 X$ m# G
|--------|--------|------------------------------------------------------------
# _( g! u% @7 U' O|    0   |     1  |  图像信息字段(见本子表的后面)的字符数               
; B! _( R' w2 g" j9 D0 S|        |        |                                                            
9 v2 R; e, Z) }& {: h|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度     - M& c$ k; a& V* }5 _
|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的     0 Y% m; v  Y  [2 w$ l! p6 y4 Z  i
|        |        |  信息字段。   
) ?* y. P9 v4 q" X4 H, p1 ~5 K1 r# E7 E3 b|        |        |                                                            / x. b7 A6 ]0 x; h
|--------|--------|------------------------------------------------------------; N2 k8 Q* u+ E) M- B" [
|    1   |     1  |  颜色表的类型                                          
8 R/ ~; X4 b9 t7 ~) N) W) s* ]# Z|        |        |                                                            4 D6 c5 V# p/ ?0 D  ]
|        |        |  该字段为表示对应带颜色表的图像而总为 1 $ c( b3 I9 n# J) h. G/ K
|        |        |                                                            
* n$ ^1 a8 ~7 n3 ?, ~/ a, w8 K! T|--------|--------|------------------------------------------------------------
/ F7 Z4 n+ H9 u|    2   |     1  |  图像类型码
9 g# R) u  y$ E! \|        |        |                                                            / U( d/ o' _- k# S7 D/ P
|        |        |  本类型该字段为二进制 9
* `; L- U* x& H7 `; f2 V! F5 P3 i2 Y|        |        |                                                            
2 [: D* [1 b% E) g5 Z" ~7 A: h6 I7 `|--------|--------|------------------------------------------------------------
! }/ r6 f2 P3 b|    3   |     5  |  颜色表规格4 _0 \4 \4 h- t; R
|        |        |                                                         
) j8 I6 J% x+ x|        |        |  如果颜色表类型字段为 0 则被忽略;否则描述如下3 c3 @6 a* P2 r0 R
|        |        |    y# P- H; j( R% e5 l
|        |        |  2 R, p2 {2 U( S. m! W- M
|    3   |     2  |  颜色表首址8 T6 c; M! b" |3 |+ s
|        |        |  颜色表首元入口的整型(低位-高位)索引) v+ z# k& C. W- f$ {
|        |        |                  9 M: h! |$ l# B9 P
|    5   |     2  |  颜色表的长度& a0 `0 E& v4 I& c; R; c; O
|        |        |  颜色表的表项总数,整型(低位-高位)     * a5 }8 n& m0 e  f2 @2 `) P3 g. w
|        |        |                                   
# N4 G% L% \$ V: M/ a" k5 l' i|    7   |     1  |  颜色表表项的位(bit)数
+ M$ a4 |$ W: A|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA0 u" |7 r: K3 @0 C  L
|        |        |                                                           
$ C6 P" z7 |0 ~8 i! D3 D' j|--------|--------|------------------------------------------------------------
* u. [( i; K6 Y|    8   |    10  |  图像规格                                               
# m' r  f% e) l# V8 u( @|        |        |                                                            4 [; H+ u7 D# e- h8 V+ b# ]
|    8   |     2  |  图像 x 坐标起始位置                                       5 x* {* c$ g8 n8 ~$ [0 J0 M" m7 T
|        |        |  图像左下角 x 坐标的整型(低位-高位)值               
  M# ?. _0 [0 O4 y9 o, j|        |        |                                                         
& N8 ?0 d0 |3 h1 S. C& `  D% C1 J& D|        |        |                                                            
& e4 C, F( \, `6 O! q) n2 E' R|   10   |     2  |  图像 y 坐标起始位置                                       " k5 x, F. t& N4 B3 X
|        |        |  图像左下角 y 坐标的整型(低位-高位)值               
+ M( E+ f. g! E3 t8 ?% {- V  y|        |        |                                                         
# B8 J) J: Y! g# [$ N# T9 m0 L|        |        |                                                            
$ W0 G! K) ^5 E( \. N, R|   12   |     2  |  图像宽度                                                   6 T- o0 M. R7 h; P( T* a" C, R) o
|        |        |  以像素为单位,图像宽度的整型(低位-高位)值           
% C) {) i1 N2 A) r|        |        |                                                            6 P" n4 w7 z! Z9 l8 p
|   14   |     2  |  图像高度                                                   
$ o$ z  d, |1 ?! A, f|        |        |  以像素为单位,图像高度的整型(低位-高位)值               & h* p8 B8 a1 P; Z3 V, m1 A5 f  m/ M7 A
|        |        |                                                            / B% p& D5 A7 D& V+ V/ U
|   16   |     1  |  图像每像素存储占用位(bit)数                             4 }4 v) o! h& D! [
|        |        |                                             * B' r8 U' {7 Y1 a
|        |        |                                                            0 X1 r! O( i/ g; M, X% i7 |
|   17   |     1  |  图像描述符字节                                           8 C  |# z/ A7 ^. a( q
|        |        |  bits 3-0 - 每像素的属性位(bit)数                   ! K% n. f- I+ a* l/ Q! n
|        |        |                                                        6 ~) G$ Q- R3 h# f' l
|        |        |  bit 4    - 保留,必须为 0                              
6 N8 F4 Z4 t- L; p' r|        |        |  bit 5    - 屏幕起始位置标志                           
( A' i' G+ B' b6 @6 D0 J* S|        |        |             0 = 原点在左下角                       
9 h) n' W' p  D0 `* C* M|        |        |             1 = 原点在左上角                        
7 e# }# v! w; U2 `" L/ U|        |        |             truevision 图像必须为 0                        
4 i- m2 W& u- q! L7 |/ U" }6 }- Y|        |        |  bits 7-6 - 交叉数据存储标志                       7 C+ K0 I/ d1 L) A
|        |        |             00 = 无交叉                                   
, P% A; B. g( g+ j/ O|        |        |             01 = 两路奇/偶交叉                        % d' m% x: E- C- z
|        |        |             10 = 四路交叉                              
1 a* m  H% ?3 F) O( ||        |        |             11 = 保留
* e5 y6 ^- F5 E|        |        |                                                            
# I# _' F  x' C; S/ f|--------|--------|------------------------------------------------------------
6 Y1 j: R1 \  @( G4 P' n) o|   18   | 可变   |  图像信息字段                                       $ ?4 n& M8 t" Q" v8 k
|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   
2 p$ L: g( ~$ P9 P" A4 x2 v|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以   
1 O( y8 G8 J- h6 d4 i! }5 R|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   
0 a; L1 u; G  d0 }6 ^' J2 I|        |        |  之后# b0 N$ _9 n, q' K2 [
|        |        |                                                          + C8 X/ N& U; f% m( |1 i
|--------|--------|------------------------------------------------------------2 |1 _) N8 G% d3 m" t0 w( B
|  可变  |  可变  |  颜色表数据                                                ! k/ R6 a/ N( s* o
|        |        |                                                            1 m! {, \5 @1 J: P' b
|        |        |  起始位置由前一个字段的大小决定;其长度由单项数据大小      2 o  w+ u0 B& r. a# T, J+ p" K0 Z
|        |        |  和数据项数目决定(在前面相应的说明字段中给出)            
' @0 }- y: @: J+ z  i& C|        |        |  每项是 2 字节,3 字节或 4 字节,字节中没有使用的位(bit) - R( ?$ i9 W* L) B  H" Z# S
|        |        |  被认为是属性位。                           
# H) a5 M' Y% o' k+ P|        |        |                                                            
6 R1 ]6 K. r, X( ~9 E5 @8 S|        |        |  4 字节表项中,字节 1 表示 BLUE,字节 2 表示 GREEN,
3 A4 o, S+ n7 \5 O3 n|        |        |              字节 3 表示 RED,字节 4 表示属性           
0 S9 _' r, h% B" d% U|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               0 }$ X: O2 g7 _& }
|        |        |                                                            " q, c3 m# g- A7 C' @  j3 w7 c
|        |        |  2 字节表项中,两个字节分解成如下形式:               2 Q+ W: r' f% n# O7 S( m# K
|        |        |  arrrrrgg gggbbbbb                           
7 _2 G0 E5 ]1 `|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  
$ |( A! W: A9 i7 K3 K, Y0 O2 h' [- X|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位。
6 U/ \! T' T4 f. Q6 u2 r|        |        |                                                            0 g! F) h) }) @* b4 k: ~
|--------|--------|------------------------------------------------------------  o% a4 Y& H! \, L0 q
| 可变   |  可变  |  图像数据域5 @& V) k0 ?9 ~5 V
|        |        |                                                            
0 H! W* U6 g" T4 X+ a|        |        |  本区域给出了(宽度)x(高度)个颜色表索引这些索引存放
3 J& @0 y% M3 X7 z/ a|        |        |  在数据包中;有两中类型的数据包:run-length 数据包,; v; ^, ]; \0 H
|        |        |  以及未加工的数据包,每种类型的数据包含有 1-字节的头信息,
5 D) S5 \/ f) _( {+ ^4 Q8 I4 u; b|        |        |  (其中指出了数据包类型和数目),其后是可变长度的数据域, [- `% X+ S, k
|        |        |  头信息中最高位为 1 表示 run-length 类型的数据包,当, _4 S2 o% z$ O
|        |        |  它为 0 时,表示未加工的数据包& @4 C% w  e, Y2 R# r; |0 o8 {
|        |        |                                                            ' |) a* A  d2 g  L
|        |        |  对于 run-length 数据包,头信息含义如下  l) b# v. e( L/ g9 b3 J$ z
|        |        |      __________________________________________________   
# Z; P' y. l  V# f|        |        |      | 1 bit |   7 位的重复记数减一8 w8 b' n( Q7 Q2 _" q
|        |        |      |   id  |   由于 7 位表示的最大值为 127,故最大  |! t) B# R" f; I! m
|        |        |      |       |   的运行大小为 128,(译注:原文为     |
- C( M' \" z3 j' W6 Z|        |        |      |       |   the largest run size)          |  
! `1 A5 Y( }: H5 c+ C. K1 n7 Q; v|        |        |      |-------|----------------------------------------|/ W% B8 h/ O( O* ?$ ~5 k; r: h
|        |        |      |   1   |  c     c     c     c     c     c    c  |: W: w: @5 H! W+ g
|        |        |      --------------------------------------------------3 [7 X: h2 H7 H4 T
|        |        |                                                        ; [3 Q* h2 \) A8 k: `8 M
|        |        |  对于未加工数据包,头信息的含义如下
% x7 \  |( I- y8 s& R# I% A|        |        |      __________________________________________________
3 |, W, r5 V& q" n' M|        |        |      | 1 bit |   7 位的像素个数减一                   |' x; F) d9 F0 e% \: _
|        |        |      |   id  |   由于 7 位表示的最大值为 127,故该    |7 X8 d; D! ^  v: @
|        |        |      |       |   类型的一个数据包中像素个数不能大于   |! E( o  w8 }; e. _# L: K
|        |        |      |       |   128                                  |, L# y( o2 T7 J2 K  ]
|        |        |      |-------|----------------------------------------|
3 F. c$ x9 a4 w|        |        |      |   0   |  n     n     n     n     n     n    n  |4 d/ P6 R* }; b: ~/ q1 F% T5 {
|        |        |      --------------------------------------------------- \6 |% u4 l. n! y7 q; y7 m9 j
|        |        |                                                        8 r7 k5 u( A  U7 V
|        |        |  对于 run-length 数据包而言,头信息之后是一个简单的0 v4 V  f- L5 }3 I% s
|        |        |  颜色索引,且假定该索引被重复头信息中低 7 位表示的次数
2 ^8 O( P  ?5 s8 `" Q7 Y|        |        |  run-length 数据包也许会跨越扫描线, d0 e+ J! |+ L  C3 H' J
|        |        |  (扫描线起始于某行结束于下一行)- K3 N6 m( w- m! {
|        |        |                                                        
" V2 H- A. `) w|        |        |  对于未加工的数据包,头信息之后是颜色索引(数值由头信息; I% w3 r" \  v- Z! k6 v
|        |        |  给出)该类型的数据包也可能跨越扫描线
( L* O% B8 y( b9 P( P5 A" ~( u0 }|        |        |                                                            ( V6 [+ H& h2 A
--------------------------------------------------------------------------------0 u# @* v$ R. `/ p8 T* q: I! l
' y: Y$ g& F# O% }/ _

  F! d+ q3 }1 r4 S  {5 V  g: a) l* [# @
* J% ~" }% J7 f/ v: N6 X
--------------------------------------------------------------------------------* ^& O$ x5 ?% q" f
|数据类型 10:run length 编码,rgb 图像
2 _+ Z0 J9 ~  h+ Z|--------|--------|------------------------------------------------------------
( r) g6 t4 x4 L4 C|   偏移 |   长度 |                         描述                              
5 d+ ?" Z* Z  ^$ k$ W7 j|--------|--------|------------------------------------------------------------
8 Y5 _& o. {, b+ q/ o|    0   |     1  |  图像信息字段(见本子表的后面)的字符数               8 {/ n7 b! y: x5 e. r1 _
|        |        |                                                            $ R5 {$ F8 G: q
|        |        |  本字段是 1 字节无符号整型,指出了图像格式区别字段长度     0 T% P0 x$ i4 Q
|        |        |  其取值范围是 0 到 255 ,当它为 0 时表示没有图像的     6 [6 ?6 x7 N  e, T2 b, H9 {
|        |        |  信息字段。    % _0 E  M6 n6 G' q. }( c
|        |        |                                                            
* s$ t( w4 C( D8 R2 K/ x+ g|--------|--------|------------------------------------------------------------( y1 ?4 {* a: z  N9 q
|    1   |     1  |  该字段的内容或者为 0 或者为 1;0 表示没有颜色表,1 表示: {. w2 I& c+ F6 X- [. \
|        |        |  颜色表存在。由于本格式是无颜色表的,因此此项通常被忽略。# K% c. s. j& _' @8 p+ u
|        |        |  提示:如果置为 1(targa 绘画程序)将把边框颜色设置为映射: n+ Y; u6 m& |
|        |        |        中的第一种颜色
9 J4 f) f' v% Q+ {4 [4 `|        |        |                                                            
7 ?# }  w- _0 g' G5 j+ Y( y' H|--------|--------|------------------------------------------------------------# X, w, Q4 S# ~: {& v
|    2   |     1  |  图像类型代码3 C: V/ E3 [5 R" }5 _1 ?
|        |        |          8 m" b7 V5 h% a6 _
|        |        |  本类型该字段为二进制 10
2 D" L/ n" h5 Z|        |        |                         2 q9 W' s% G0 V" a
|--------|--------|------------------------------------------------------------- L" j) ^/ k6 b# `
|    3   |     5  |  颜色表规格
( a; K. F1 n# q0 c/ Z2 o9 h|        |        |                                                         
, B6 b" }( a" O6 e1 x0 j* }7 t|        |        |  如果颜色表类型字段为 0 则被忽略;否则描述如下
  Y6 H3 n# Q7 b# ?, P0 k4 o1 @|        |        |  
" ?1 }* i& @  Q7 L6 K2 b' H5 a' e|        |        |  % O2 i0 t! A6 e% X
|    3   |     2  |  颜色表首址2 p  N  F+ G7 o) E& T4 [) T5 M
|        |        |  颜色表首元入口的整型(低位-高位)索引
. `! ^2 b& l% R) P) r5 g# Z|        |        |                  * j1 M( b: f" B3 }5 t' u# g
|    5   |     2  |  颜色表的长度+ i( w" j% k* s- |$ w$ W
|        |        |  颜色表的表项总数,整型(低位-高位)     
: K9 h3 e% `6 {  b5 o, j|        |        |                                   
0 K/ [4 ~  A( r  s, @|    7   |     1  |  颜色表表项的位(bit)数
0 ?( ~- D! C) {- p8 q  J|        |        |  16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
7 q$ H4 @. C0 V( s8 q- q) w|        |        |                                                            % K+ @& R0 w2 c" Y" o, q8 O
|--------|--------|------------------------------------------------------------' d  e7 a2 s2 X( }" I: F8 R2 L
|    8   |    10  |  图像规格                                               
- m& o% Q9 k! f|        |        |                                                            % y+ P2 h9 R# O/ }: p: k6 j
|    8   |     2  |  图像 x 坐标起始位置                                       ( ~; c, s* _7 Z3 X6 w. n6 @0 D9 h- P
|        |        |  图像左下角 x 坐标的整型(低位-高位)值               
5 h* l. y$ F( P- v' N|        |        |                                                         
1 V+ K; i% L* c* f* h|        |        |                                                              g+ j' E& D- L9 l+ e
|   10   |     2  |  图像 y 坐标起始位置                                       3 i- x) A. o' h/ y: R5 |- Y! e
|        |        |  图像左下角 y 坐标的整型(低位-高位)值               
' }1 \/ I2 {3 M: k% M8 N! I|        |        |                                                         * t1 S3 q8 M# f1 g& H: F6 {& n& L
|        |        |                                                            ; a4 U; Z5 Q. Q: h
|   12   |     2  |  图像宽度                                                   7 `7 h, |- {; z7 S/ N# y$ o
|        |        |  以像素为单位,图像宽度的整型(低位-高位)值           ; _& \. O8 z% {& U, f3 f& e6 G3 E4 n$ w
|        |        |                                                            
3 b6 V+ i$ T" R/ ]' d: h5 ||   14   |     2  |  图像高度                                                   + w  c. s$ j+ g  F  Y/ k
|        |        |  以像素为单位,图像高度的整型(低位-高位)值               - e2 S2 q5 ^; U/ T; z7 R" g3 x6 [
|        |        |                                                            ( P$ G5 x1 ~& ^2 v. _
|   16   |     1  |  图像每像素存储占用位(bit)数                             : Z7 o/ Q) Q3 {
|        |        |                                             & p; Z( B" d# k4 B
|        |        |                                                            / ^' D2 t) _. R/ S5 [9 ^# y
|   17   |     1  |  图像描述符字节                                           8 \/ f* B  {# ?7 ~4 Q
|        |        |  bits 3-0 - 每像素的属性位(bit)数                   ' O5 H* v9 h4 m; M6 i
|        |        |                                                        ' m6 C( y& ^5 a1 Q3 B; ^- k
|        |        |  bit 4    - 保留,必须为 0                               ; P0 F+ h/ D" B/ L
|        |        |  bit 5    - 屏幕起始位置标志                           & v1 h* Y7 w. u, n* M
|        |        |             0 = 原点在左下角                       $ g+ m% Q9 {8 H8 h2 |
|        |        |             1 = 原点在左上角                         + i% X: u8 }# M2 n" `
|        |        |             truevision 图像必须为 0                        
+ E  s% b4 x% W4 X3 S, b# U|        |        |  bits 7-6 - 交叉数据存储标志                       
+ \' e) [4 w0 l3 y* I|        |        |             00 = 无交叉                                   
2 z5 ?0 P! e  A% e|        |        |             01 = 两路奇/偶交叉                        7 ^$ J. t0 X5 m6 u6 W
|        |        |             10 = 四路交叉                              
" g! h' b$ C$ x/ p|        |        |             11 = 保留                                   
7 \) h( l- u! K# Q% M) Q2 f|        |        |                                                            & F3 c; W# l  Q0 d+ {- r7 x0 E
|--------|--------|------------------------------------------------------------# m/ ?+ A% |4 N' E) Q7 {
|   18   | 可变   |  图像信息字段                                       
" {; ?! R; o) V; n4 ^( {0 d) M|        |        |  包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的   $ S6 U% D) u; t' c) D
|        |        |  值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以    ! t3 Z) h; h2 n# [  f/ S
|        |        |  含有 255 个字符。如果需要存储更多信息,可以放在图像数据   3 \) p! ]" \( L/ K; k
|        |        |  之后
* Y- k/ a+ o& g2 Q" I' B+ {0 x|        |        |                                                            
; t. w  t+ k9 g" ?|--------|--------|------------------------------------------------------------
7 G6 Z' v. D6 E( a* j|  可变  |  可变  |  颜色表数据                                                - I3 x: z  a: a# I5 g* V! T
|        |        |                                                
( u1 \$ m6 \/ Z7 }; T( y|        |        |  如果颜色表类型为 0,则该域不存在,否则越过该域直接读取
" f! ]! X$ ]7 P+ t' V+ V: e  y* X0 B|        |        |  图像颜色表规格中描述了每项的字节数,为 2,3,4 之一% S4 Q" ^) n# c0 B$ u; \
|        |        |                                                            
$ ?2 S- Y! j! K6 v: f|--------|--------|------------------------------------------------------------
2 O" a6 l9 j* U% @. v) H! w| 可变   |  可变  |  图像数据域: b+ e' u$ |: U# `6 X$ P9 d; j
|        |        |                                                            : H! A, d9 M' e& y9 {' p* r
|        |        |  本区域给出了(宽度)x(高度)个颜色表索引这些索引存放* p1 s3 ]% U$ v5 r
|        |        |  在数据包中;有两中类型的数据包:run-length 数据包,- }: A9 f$ W* A. c9 m- w
|        |        |  以及未加工的数据包,每种类型的数据包含有 1-字节的头信息,) B9 ~  E' ~2 r# X
|        |        |  (其中指出了数据包类型和数目),其后是可变长度的数据域
3 V# K4 t7 u+ ~$ J|        |        |  头信息中最高位为 1 表示 run-length 类型的数据包,当
3 `, H& c( O; U# o' Q( B$ [  L4 ]|        |        |  它为 0 时,表示未加工的数据包+ v8 F1 G& y0 d' Z+ R$ f) k
|        |        |                                                           4 e8 g: i8 g7 V9 U% l! N& _
|        |        |  对于 run-length 数据包,头信息含义如下+ Y' ~8 B$ }6 |% C7 ~9 q
|        |        |      __________________________________________________   
8 a0 C8 k( r* K( W7 b|        |        |      | 1 bit |   7 位的重复记数减一
( A( G9 N! a7 t8 l3 b|        |        |      |   id  |   由于 7 位表示的最大值为 127,故最大  |
) c  h" p; E, X$ ~6 W|        |        |      |       |   的运行大小为 128,(译注:原文为     |
. o; a* R$ a2 C8 p3 z- p|        |        |      |       |   the largest run size)          |  $ H2 L) T. u% Y. c  R8 }" m
|        |        |      |-------|----------------------------------------|( _4 k5 ~6 r) Z7 W- [0 z
|        |        |      |   1   |  c     c     c     c     c     c    c  |7 b% Q( l7 _" ~  q4 a1 Y! `% j
|        |        |      --------------------------------------------------9 ?& W. f) W# G! \: F
|        |        |                                                        * ]& y/ O" [: u- D) d: D$ _0 I
|        |        |  对于未加工数据包,头信息的含义如下  |* w, z+ v; E
|        |        |      __________________________________________________3 K* S) O( Y& A* v
|        |        |      | 1 bit |   7 位的像素个数减一                   |8 _7 a" c: `# T  _% \5 X. h$ [* y9 |
|        |        |      |   id  |   由于 7 位表示的最大值为 127,故该    |
7 E2 X7 ^) }. }4 }2 \* t& w" _|        |        |      |       |   类型的一个数据包中像素个数不能大于   |! [6 Q- l# X6 M6 q) V2 k2 @
|        |        |      |       |   128                                  |
/ k2 z( `" [! h" R1 }|        |        |      |-------|----------------------------------------|9 `5 a6 s) `1 ~( H' }
|        |        |      |   0   |  n     n     n     n     n     n    n  |
; y) u; v' _) a. z# i|        |        |      --------------------------------------------------
9 p+ L2 G' a! C& u" E% T|        |        |                                                              w4 c5 w  `3 J  f3 ]1 s
|        |        |                                                            . [' j  N0 q; b5 C9 Q& ]
|        |        |  对于 run length 数据包,头信息之后是一个简单颜色值,
' f/ t. J* A9 Z1 A' S|        |        |  且假定该值重复的次数为头信息中记录的数
, `2 K/ Z0 F1 X* e|        |        |  run-length 数据包也许会跨越扫描线) d$ g, L) S: ?: ]* \8 {
|        |        |  (扫描线起始于某行结束于下一行)
1 [3 H. u6 M6 W9 V|        |        |                                                      
- g9 [  C0 G8 k1 P|        |        |  对于未加工数据包,头信息之后是颜色值(数目由头信息指出): \9 P% k8 W6 G" I3 Y, c7 P
|        |        |  
7 Q* {. l4 O: w: |5 Z. V) V7 R; B|        |        |                                                : ~7 v. n5 J/ [/ j% P( Y& U, H( J
|        |        |  颜色表项自身有 2-字节,3-字节或 4-字节几种大小(分别7 h0 j. W& A% I
|        |        |  对应 TGA 16,TGA 24 和 TGA 32)形式如下:
, h* ^( e* a9 |& j* H) G+ Q|        |        |  
& `5 y1 _5 U3 g" G, Y" d5 f5 |0 e|        |        |            9 c6 A' M9 t' u8 g3 H  m) g5 m
|        |        |  3 字节表项中各字节依次对应 BLUE,GREEN,RED               ! o$ l5 q9 e, v& O) D7 v4 @0 Z
|        |        |                                                            
1 @; W( m  v# @' L3 z|        |        |  2 字节表项中,两个字节分解成如下形式:               
. c& K, ]1 ?5 m5 w( r|        |        |  arrrrrgg gggbbbbb                           5 {: a4 e3 l! f) R
|        |        |  但是,由于低位在前,高位在后的存储顺序,从文件中读出表项  
5 O4 ?' ^; N% U$ e2 m|        |        |  时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位+ ]. s) V' f% i
|        |        |                                                          9 E2 C6 i; q1 W! `/ H) `4 l+ d
|        |        |  4 字节表项包含了分别代表 blue,green,red 及属性的四个; s; b+ o) q  L7 ^/ j+ ~8 @
|        |        |  字节;(由于硬件上的原因)有的时候 TGA 24 类型的图像也象
; r% L+ {8 Q7 V9 H% r* `|        |        |  TGA 32 类型的图像那样存储
% `8 K% S2 X3 |5 ~7 D6 ?|        |        |                                                            
; p" X  S5 V! R--------------------------------------------------------------------------------
; Q! ^) Z; ]" q! f' l1 N" v7 o2 `+ B0 v+ B( _/ _
<完>
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表