冒险解谜游戏中文网 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 center
2 ~# 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