根據david mcduffe編寫的TGA文件格式資料翻譯而成
本文檔是為滿足許多對 TGA 圖像格式的了解需要而創建的。本文摘錄自truevision 技術指南的附錄 C,如果
需要更進一步的信息,請致信以下地址:
at&t
electronic photography and imaging center
2002 wellesley ave.
indianapolis, in 42619
本文檔不求全面,但力求準確。如果你發現了任何拼寫錯誤或內容錯誤,請告訴我,( david mcduffe,
75530,2626 ),我將改正這些錯誤,謝謝。
不全面的原因是 TGA 包含了超過六種圖像文件格式,而其中的幾種較為常用。 我選擇了我現在使用的格式并
在本文中加以詳解。 如果你需要本文中沒有包含的格式說明,你可以與你的 truevision 代理商聯系。
對所有的 TGA 格式的文件而言,其第三字節(二進制整數)用來區別各種不同的 TGA 文件。下面列出了該字
節表明的對應文件類型:
0 - 文件中沒有圖像數據
1 - 未壓縮的,顏色表圖像
2 - 未壓縮的,rgb 圖像
3 - 未壓縮的,黑白圖像
9 - runlength 編碼的顏色表圖像
10 - runlength 編碼的 rgb 圖像
11 - 壓縮的,黑白圖像
32 - 使用 huffman,delta 和 runlength 編碼的顏色表圖像
33 - 使用 huffman,delta 和 runlength 編碼的顏色映射圖像,4 趟四叉樹類型處理。
本文僅僅描述對應 1,2,9 和 10 的文件格式。
--------------------------------------------------------------------------------
|數據類型 1: 顏色表(color-mapped)圖像
|--------|--------|------------------------------------------------------------
| 偏移 | 長度 | 描述
|--------|--------|------------------------------------------------------------
| 0 | 1 | 圖像信息字段(見本子表的后面)的字符數
| | |
| | | 本字段是 1 字節無符號整型,指出了圖像格式區別字段長度
| | | 其取值范圍是 0 到 255 ,當它為 0 時表示沒有圖像的
| | | 信息字段。
| | |
| | |
|--------|--------|------------------------------------------------------------
| 1 | 1 | 顏色表的類型
| | |
| | | 該字段為表示對應格式 1 的圖像而包含一個二進制 1
| | |
|--------|--------|------------------------------------------------------------
| 2 | 1 | 圖像類型碼
| | |
| | | 該字段總為 1 , 這也是此類型為格式 1 的原因
| | |
|--------|--------|------------------------------------------------------------
| 3 | 5 | 顏色表規格
| | |
| 3 | 2 | 顏色表首址
| | | 顏色表首元表項的整型(低位-高位)索引
| | |
| 5 | 2 | 顏色表的長度
| | | 顏色表的表項總數,整型(低位-高位)
| | |
| 7 | 1 | 顏色表表項的位(bit)數
| | | 16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
| | |
| | |
|--------|--------|------------------------------------------------------------
| 8 | 10 | 圖像規格
| | |
| 8 | 2 | 圖像 x 坐標起始位置
| | | 圖像左下角 x 坐標的整型(低位-高位)值
| | |
| | |
| 10 | 2 | 圖像 y 坐標起始位置
| | | 圖像左下角 y 坐標的整型(低位-高位)值
| | |
| | |
| 12 | 2 | 圖像寬度
| | | 以像素為單位,圖像寬度的整型(低位-高位)值
| | |
| 14 | 2 | 圖像高度
| | | 以像素為單位,圖像高度的整型(低位-高位)值
| | |
| 16 | 1 | 圖像每像素存儲占用位(bit)數
| | |
| | |
| 17 | 1 | 圖像描述符字節
| | | bits 3-0 - 每像素的屬性位(bit)數
| | |
| | | bit 4 - 保留,必須為 0
| | | bit 5 - 屏幕起始位置標志
| | | 0 = 原點在左下角
| | | 1 = 原點在左上角
| | | truevision 圖像必須為 0
| | | bits 7-6 - 交叉數據存儲標志
| | | 00 = 無交叉
| | | 01 = 兩路奇/偶交叉
| | | 10 = 四路交叉
| | | 11 = 保留
| | | 這一項應該設為 0,不要問我為什么
| | |
|--------|--------|------------------------------------------------------------
| 18 | 可變 | 圖像信息字段
| | | 包含一個自由格式的,長度是圖像記錄塊偏移 0 處的字節中的
| | | 值。它常常被忽略(即偏移 0 處值為 0 ),注意其最大可以
| | | 含有 255 個字符。如果需要存儲更多信息,可以放在圖像數據
| | | 之后
| | |
| | |
|--------|--------|------------------------------------------------------------
| 可變 | 可變 | 顏色表數據
| | |
| | | 起始位置由前一個字段的大小決定;其長度由單項數據大小
| | | 和數據項數目決定(在前面相應的說明字段中給出)
| | | 每項是 2 字節,3 字節或 4 字節,字節中沒有使用的位(bit)
| | | 被認為是屬性位。
| | |
| | | 4 字節表項中,字節 1 表示 BLUE,字節 2 表示 GREEN,
| | | 字節 3 表示 RED,字節 4 表示屬性
| | | 3 字節表項中各字節依次對應 BLUE,GREEN,RED
| | |
| | | 2 字節表項中,兩個字節分解成如下形式:
| | | arrrrrgg gggbbbbb
| | | 但是,由于低位在前,高位在后的存儲順序,從文件中讀出表項
| | | 時,將先讀入 gggbbbbb 而后讀入 arrrrrgg ;a 表示屬性位。
| | |
|--------|--------|------------------------------------------------------------
| 可變 | 可變 | 圖像數據字段
| | |
| | | 該字段給出了 (高度)x(寬度)個顏色表項索引,每個索引
| | | 以整數個字節的形式存儲(典型的例子如 1 或 2 個字節)
| | | 所有的數據都沒有符號,對于 2-字節表項而言,低位字節是
| | | 先存儲的。
| | |
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------
|數據類型 2: 無顏色表 rgb 圖像
|--------|--------|------------------------------------------------------------
| 偏移 | 長度 | 描述
|--------|--------|----------------------------------------------------------
| 0 | 1 | 圖像信息字段( 見本子表的后面 )的字符數
| | |
| | | 本字段是 1 字節無符號整型,指出了圖像格式區別字段長度
| | | 其取值范圍是 0 到 255 ,當它為 0 時表示沒有圖像的
| | | 信息字段。
| | |
|--------|--------|------------------------------------------------------------
| 1 | 1 | 顏色表類型
| | |
| | | 該字段的內容或者為 0 或者為 1;0 表示沒有顏色表,1 表示
| | | 顏色表存在。由于本格式是無顏色表的,因此此項通常被忽略。
| | | 提示:如果置為 1(targa 繪畫程序)將把邊框顏色設置為映射
| | | 中的第一種顏色
| | |
|--------|--------|------------------------------------------------------------
| 2 | 1 | 圖像類型碼
| | |
| | | 該字段總為 2 , 這也是此類型為格式 2 的原因
| | |
|--------|--------|------------------------------------------------------------
| 3 | 5 | 顏色表規格
| | |
| | | 如果顏色表類型字段為 0 則被忽略;否則描述如下
| | |
| 3 | 2 | 顏色表首址
| | | 顏色表首元入口的整型(低位-高位)索引
| | |
| 5 | 2 | 顏色表的長度
| | | 顏色表的表項總數,整型(低位-高位)
| | |
| 7 | 1 | 顏色表表項的位(bit)數
| | | 16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
| | |
| | |
|--------|--------|------------------------------------------------------------
| 8 | 10 | 圖像規格
| | |
| 8 | 2 | 圖像 x 坐標起始位置
| | | 圖像左下角 x 坐標的整型(低位-高位)值
| | |
| | |
| 10 | 2 | 圖像 y 坐標起始位置
| | | 圖像左下角 y 坐標的整型(低位-高位)值
| | |
| | |
| 12 | 2 | 圖像寬度
| | | 以像素為單位,圖像寬度的整型(低位-高位)值
| | |
| 14 | 2 | 圖像高度
| | | 以像素為單位,圖像高度的整型(低位-高位)值
| | |
| 16 | 1 | 圖像每像素存儲占用位(bit)數
| | | 它的值為16,24 或 32 等等決定了該圖像是 TGA 16,TGA24
| | | TGA 32 等等
| | |
| 17 | 1 | 圖像描述符字節
| | | bits 3-0 - 每像素對應的屬性位的位數;對于 TGA 16,
| | | 該值為 0 或 1,對于 TGA 24,該值為 0,
| | | 對于 TGA 32,該值為 8
| | |
| | | bit 4 - 保留,必須為 0
| | | bit 5 - 屏幕起始位置標志
| | | 0 = 原點在左下角
| | | 1 = 原點在左上角
| | | 對于 truevision 圖像必須為 0
| | | bits 7-6 - 交叉數據存儲標志
| | | 00 = 無交叉
| | | 01 = 兩路奇/偶交叉
| | | 10 = 四路交叉
| | | 11 = 保留
| | |
|--------|--------|------------------------------------------------------------
| 18 | 可變 | 圖像信息字段
| | | 包含一個自由格式的,長度是圖像記錄塊偏移 0 處的字節中的
| | | 值。它常常被忽略(即偏移 0 處值為 0 ),注意其最大可以
| | | 含有 255 個字符。如果需要存儲更多信息,可以放在圖像數據
| | | 之后
| | |
|--------|--------|------------------------------------------------------------
| 可變 | 可變 | 顏色表數據
| | |
| | | 如果顏色表類型為 0,則該域不存在,否則越過該域直接讀取
| | | 圖像顏色表規格中描述了每項的字節數,為 2,3,4 之一
| | |
| | |
| | |
| | |
|--------|--------|------------------------------------------------------------
| 可變 | 可變 | 圖像數據域
| | |
| | | 這里存儲了(寬度)x(高度)個像素,每個像素中的 rgb 色值
| | | 該色值包含整數個字節
| | |
| | |
| | | 3 字節表項中各字節依次對應 BLUE,GREEN,RED
| | |
| | | 2 字節表項中,兩個字節分解成如下形式:
| | | arrrrrgg gggbbbbb
| | | 但是,由于低位在前,高位在后的存儲順序,從文件中讀出表項
| | | 時,將先讀入 gggbbbbb 而后讀入 arrrrrgg ;a 表示屬性位
| | |
| | | 4 字節表項包含了分別代表 blue,green,red 及屬性的四個
| | | 字節;(由于硬件上的原因)有的時候 TGA 24 類型的圖像也象
| | | TGA 32 類型的圖像那樣存儲
| | |
| | |
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
|數據類型 9: runlength 編碼,帶顏色表的圖像
|--------|--------|------------------------------------------------------------
| 偏移 | 長度 | 描述
|--------|--------|------------------------------------------------------------
| 0 | 1 | 圖像信息字段(見本子表的后面)的字符數
| | |
| | | 本字段是 1 字節無符號整型,指出了圖像格式區別字段長度
| | | 其取值范圍是 0 到 255 ,當它為 0 時表示沒有圖像的
| | | 信息字段。
| | |
|--------|--------|------------------------------------------------------------
| 1 | 1 | 顏色表的類型
| | |
| | | 該字段為表示對應帶顏色表的圖像而總為 1
| | |
|--------|--------|------------------------------------------------------------
| 2 | 1 | 圖像類型碼
| | |
| | | 本類型該字段為二進制 9
| | |
|--------|--------|------------------------------------------------------------
| 3 | 5 | 顏色表規格
| | |
| | | 如果顏色表類型字段為 0 則被忽略;否則描述如下
| | |
| | |
| 3 | 2 | 顏色表首址
| | | 顏色表首元入口的整型(低位-高位)索引
| | |
| 5 | 2 | 顏色表的長度
| | | 顏色表的表項總數,整型(低位-高位)
| | |
| 7 | 1 | 顏色表表項的位(bit)數
| | | 16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
| | |
|--------|--------|------------------------------------------------------------
| 8 | 10 | 圖像規格
| | |
| 8 | 2 | 圖像 x 坐標起始位置
| | | 圖像左下角 x 坐標的整型(低位-高位)值
| | |
| | |
| 10 | 2 | 圖像 y 坐標起始位置
| | | 圖像左下角 y 坐標的整型(低位-高位)值
| | |
| | |
| 12 | 2 | 圖像寬度
| | | 以像素為單位,圖像寬度的整型(低位-高位)值
| | |
| 14 | 2 | 圖像高度
| | | 以像素為單位,圖像高度的整型(低位-高位)值
| | |
| 16 | 1 | 圖像每像素存儲占用位(bit)數
| | |
| | |
| 17 | 1 | 圖像描述符字節
| | | bits 3-0 - 每像素的屬性位(bit)數
| | |
| | | bit 4 - 保留,必須為 0
| | | bit 5 - 屏幕起始位置標志
| | | 0 = 原點在左下角
| | | 1 = 原點在左上角
| | | truevision 圖像必須為 0
| | | bits 7-6 - 交叉數據存儲標志
| | | 00 = 無交叉
| | | 01 = 兩路奇/偶交叉
| | | 10 = 四路交叉
| | | 11 = 保留
| | |
|--------|--------|------------------------------------------------------------
| 18 | 可變 | 圖像信息字段
| | | 包含一個自由格式的,長度是圖像記錄塊偏移 0 處的字節中的
| | | 值。它常常被忽略(即偏移 0 處值為 0 ),注意其最大可以
| | | 含有 255 個字符。如果需要存儲更多信息,可以放在圖像數據
| | | 之后
| | |
|--------|--------|------------------------------------------------------------
| 可變 | 可變 | 顏色表數據
| | |
| | | 起始位置由前一個字段的大小決定;其長度由單項數據大小
| | | 和數據項數目決定(在前面相應的說明字段中給出)
| | | 每項是 2 字節,3 字節或 4 字節,字節中沒有使用的位(bit)
| | | 被認為是屬性位。
| | |
| | | 4 字節表項中,字節 1 表示 BLUE,字節 2 表示 GREEN,
| | | 字節 3 表示 RED,字節 4 表示屬性
| | | 3 字節表項中各字節依次對應 BLUE,GREEN,RED
| | |
| | | 2 字節表項中,兩個字節分解成如下形式:
| | | arrrrrgg gggbbbbb
| | | 但是,由于低位在前,高位在后的存儲順序,從文件中讀出表項
| | | 時,將先讀入 gggbbbbb 而后讀入 arrrrrgg ;a 表示屬性位。
| | |
|--------|--------|------------------------------------------------------------
| 可變 | 可變 | 圖像數據域
| | |
| | | 本區域給出了(寬度)x(高度)個顏色表索引這些索引存放
| | | 在數據包中;有兩中類型的數據包:run-length 數據包,
| | | 以及未加工的數據包,每種類型的數據包含有 1-字節的頭信息,
| | | (其中指出了數據包類型和數目),其后是可變長度的數據域
| | | 頭信息中最高位為 1 表示 run-length 類型的數據包,當
| | | 它為 0 時,表示未加工的數據包
| | |
| | | 對于 run-length 數據包,頭信息含義如下
| | | __________________________________________________
| | | | 1 bit | 7 位的重復記數減一
| | | | id | 由于 7 位表示的最大值為 127,故最大 |
| | | | | 的運行大小為 128,(譯注:原文為 |
| | | | | the largest run size) |
| | | |-------|----------------------------------------|
| | | | 1 | c c c c c c c |
| | | --------------------------------------------------
| | |
| | | 對于未加工數據包,頭信息的含義如下
| | | __________________________________________________
| | | | 1 bit | 7 位的像素個數減一 |
| | | | id | 由于 7 位表示的最大值為 127,故該 |
| | | | | 類型的一個數據包中像素個數不能大于 |
| | | | | 128 |
| | | |-------|----------------------------------------|
| | | | 0 | n n n n n n n |
| | | --------------------------------------------------
| | |
| | | 對于 run-length 數據包而言,頭信息之后是一個簡單的
| | | 顏色索引,且假定該索引被重復頭信息中低 7 位表示的次數
| | | run-length 數據包也許會跨越掃描線
| | | (掃描線起始于某行結束于下一行)
| | |
| | | 對于未加工的數據包,頭信息之后是顏色索引(數值由頭信息
| | | 給出)該類型的數據包也可能跨越掃描線
| | |
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
|數據類型 10:run length 編碼,rgb 圖像
|--------|--------|------------------------------------------------------------
| 偏移 | 長度 | 描述
|--------|--------|------------------------------------------------------------
| 0 | 1 | 圖像信息字段(見本子表的后面)的字符數
| | |
| | | 本字段是 1 字節無符號整型,指出了圖像格式區別字段長度
| | | 其取值范圍是 0 到 255 ,當它為 0 時表示沒有圖像的
| | | 信息字段。
| | |
|--------|--------|------------------------------------------------------------
| 1 | 1 | 該字段的內容或者為 0 或者為 1;0 表示沒有顏色表,1 表示
| | | 顏色表存在。由于本格式是無顏色表的,因此此項通常被忽略。
| | | 提示:如果置為 1(targa 繪畫程序)將把邊框顏色設置為映射
| | | 中的第一種顏色
| | |
|--------|--------|------------------------------------------------------------
| 2 | 1 | 圖像類型代碼
| | |
| | | 本類型該字段為二進制 10
| | |
|--------|--------|------------------------------------------------------------
| 3 | 5 | 顏色表規格
| | |
| | | 如果顏色表類型字段為 0 則被忽略;否則描述如下
| | |
| | |
| 3 | 2 | 顏色表首址
| | | 顏色表首元入口的整型(低位-高位)索引
| | |
| 5 | 2 | 顏色表的長度
| | | 顏色表的表項總數,整型(低位-高位)
| | |
| 7 | 1 | 顏色表表項的位(bit)數
| | | 16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
| | |
|--------|--------|------------------------------------------------------------
| 8 | 10 | 圖像規格
| | |
| 8 | 2 | 圖像 x 坐標起始位置
| | | 圖像左下角 x 坐標的整型(低位-高位)值
| | |
| | |
| 10 | 2 | 圖像 y 坐標起始位置
| | | 圖像左下角 y 坐標的整型(低位-高位)值
| | |
| | |
| 12 | 2 | 圖像寬度
| | | 以像素為單位,圖像寬度的整型(低位-高位)值
| | |
| 14 | 2 | 圖像高度
| | | 以像素為單位,圖像高度的整型(低位-高位)值
| | |
| 16 | 1 | 圖像每像素存儲占用位(bit)數
| | |
| | |
| 17 | 1 | 圖像描述符字節
| | | bits 3-0 - 每像素的屬性位(bit)數
| | |
| | | bit 4 - 保留,必須為 0
| | | bit 5 - 屏幕起始位置標志
| | | 0 = 原點在左下角
| | | 1 = 原點在左上角
| | | truevision 圖像必須為 0
| | | bits 7-6 - 交叉數據存儲標志
| | | 00 = 無交叉
| | | 01 = 兩路奇/偶交叉
| | | 10 = 四路交叉
| | | 11 = 保留
| | |
|--------|--------|------------------------------------------------------------
| 18 | 可變 | 圖像信息字段
| | | 包含一個自由格式的,長度是圖像記錄塊偏移 0 處的字節中的
| | | 值。它常常被忽略(即偏移 0 處值為 0 ),注意其最大可以
| | | 含有 255 個字符。如果需要存儲更多信息,可以放在圖像數據
| | | 之后
| | |
|--------|--------|------------------------------------------------------------
| 可變 | 可變 | 顏色表數據
| | |
| | | 如果顏色表類型為 0,則該域不存在,否則越過該域直接讀取
| | | 圖像顏色表規格中描述了每項的字節數,為 2,3,4 之一
| | |
|--------|--------|------------------------------------------------------------
| 可變 | 可變 | 圖像數據域
| | |
| | | 本區域給出了(寬度)x(高度)個顏色表索引這些索引存放
| | | 在數據包中;有兩中類型的數據包:run-length 數據包,
| | | 以及未加工的數據包,每種類型的數據包含有 1-字節的頭信息,
| | | (其中指出了數據包類型和數目),其后是可變長度的數據域
| | | 頭信息中最高位為 1 表示 run-length 類型的數據包,當
| | | 它為 0 時,表示未加工的數據包
| | |
| | | 對于 run-length 數據包,頭信息含義如下
| | | __________________________________________________
| | | | 1 bit | 7 位的重復記數減一
| | | | id | 由于 7 位表示的最大值為 127,故最大 |
| | | | | 的運行大小為 128,(譯注:原文為 |
| | | | | the largest run size) |
| | | |-------|----------------------------------------|
| | | | 1 | c c c c c c c |
| | | --------------------------------------------------
| | |
| | | 對于未加工數據包,頭信息的含義如下
| | | __________________________________________________
| | | | 1 bit | 7 位的像素個數減一 |
| | | | id | 由于 7 位表示的最大值為 127,故該 |
| | | | | 類型的一個數據包中像素個數不能大于 |
| | | | | 128 |
| | | |-------|----------------------------------------|
| | | | 0 | n n n n n n n |
| | | --------------------------------------------------
| | |
| | |
| | | 對于 run length 數據包,頭信息之后是一個簡單顏色值,
| | | 且假定該值重復的次數為頭信息中記錄的數
| | | run-length 數據包也許會跨越掃描線
| | | (掃描線起始于某行結束于下一行)
| | |
| | | 對于未加工數據包,頭信息之后是顏色值(數目由頭信息指出)
| | |
| | |
| | | 顏色表項自身有 2-字節,3-字節或 4-字節幾種大小(分別
| | | 對應 TGA 16,TGA 24 和 TGA 32)形式如下:
| | |
| | |
| | | 3 字節表項中各字節依次對應 BLUE,GREEN,RED
| | |
| | | 2 字節表項中,兩個字節分解成如下形式:
| | | arrrrrgg gggbbbbb
| | | 但是,由于低位在前,高位在后的存儲順序,從文件中讀出表項
| | | 時,將先讀入 gggbbbbb 而后讀入 arrrrrgg ;a 表示屬性位
| | |
| | | 4 字節表項包含了分別代表 blue,green,red 及屬性的四個
| | | 字節;(由于硬件上的原因)有的時候 TGA 24 類型的圖像也象
| | | TGA 32 類型的圖像那樣存儲
| | |
--------------------------------------------------------------------------------