Truevision TGA ( TARGAとも呼ばれる)は、 Truevision(現在はAvid Technologyの一部)によって作成されたラスターグラフィックスファイル形式です。これは、IBM PC互換機で初めてハイカラーまたはトゥルーカラー表示をサポートしたグラフィックカードであるTARGAおよびVISTAボードのネイティブ形式でした。このグラフィックカードファミリーは、プロフェッショナルなコンピュータ画像合成を目的としており、TGA画像ファイルの通常の解像度はNTSCおよびPALビデオ形式の解像度と一致します。[ 2 ]
TARGAはTruevision Advanced Raster Graphics Adapterの頭字語です。TGAはTruevision Graphics Adapterの頭文字です。
TGA ファイルは、MS-DOS、Windows、macOSでは一般的に拡張子".tga"を持ちます(古いMacintoshシステムでは "TPIC"タイプ コードを使用します)。フォーマット自体は、最大 255 までの任意のピクセルビット深度を許可し、そのうち最大 15 ビットをアルファ チャネルに割り当てることができます。[ 3 ]ただし、実際にサポートされているビット深度は 8、15、16、24、32 のみで、16 ビットおよび 32 ビットのフォーマットでは、それぞれ 1 ビットおよび 8 ビットがアルファ チャネルに使用されます。カラー データは、カラー マップ、直接カラー、またはトゥルー カラーフォーマットで保存できます。画像データは、生で保存することも、オプションでPackBitsと同様のロスレスRLE 圧縮を使用することもできます。このタイプの圧縮は、一般的な写真画像にはパフォーマンスが劣りますが、アイコン、漫画、線画などの単純な画像には許容範囲内で機能します。
TGAファイル形式は、 1984年にAT&T EPICenterがIsland Graphics Inc.からのフィードバックを受けて定義・仕様化しました。AT&T EPICenterは、AT&Tが開発したカラーフレームバッファ用の新技術を市場に投入するために設立された、AT&Tの社内スピンオフ企業でした。後にTruevisionとなる企業は、1987年にAT&Tから従業員によるレバレッジド・バイアウト(LBO)によって買収されたものです。
EPICenterの最初の2枚のカード、VDA(ビデオディスプレイアダプタ)とICB(イメージキャプチャボード)は、TGAファイルフォーマットの初期バージョンを使用していた。ファイル拡張子「.vda」と「.icb」は、ボード固有のデータが含まれていることを示していた。
その後、アラン・ウラスク(当時EPICenterの責任者)、ブラッド・ピロー(EPICenter)、スティーブン・ドムピアー(Islandの社長)によって、より体系化されたファイル形式が必要であると判断されました。このファイル形式は、ブラッド・ピロー(EPICenter)とブライアン・ハント(EPICenter)によって作成・実装され、ボード固有の要素が少ないファイル形式へのニーズに応える形で開発されました。既存の形式に非常にシンプルな拡張が加えられ、幅、高さ、ピクセル深度、関連するカラーマップ、画像の原点に関する情報が含まれていました。ラベルフィールド(最大255文字)も初期仕様に含まれていましたが、ほとんど使用されませんでした。
当時、技術的に優れたファイル形式であるTIFFも登場しましたが、TIFF仕様をサポートするアプリケーション間でのファイルの共有や実装が非常に困難で複雑だったため、トゥルーカラー画像での使用は非常に限られていました。TGAファイル形式のシンプルさとプラットフォーム間の互換性の高さが、広く普及し、今日に至るまで世界中の様々なアプリケーションで成功を収めている主な理由です。
当初、TGAファイル形式はICB-PAINTおよびTARGA-PAINTプログラム(後にTIPSとして知られるようになった)で使用され、オンライン不動産閲覧や静止画ビデオ会議など、いくつかのプロジェクトでも使用されました。
現在のバージョン(2.0)には、「切手」(サムネイルとしてよく知られている)、アルファチャンネル、ガンマ値、テキストメタデータなど、いくつかの機能強化が含まれており、1989年にTruevision Inc.のショーン・スタイナーがケビン・フリードリーとデビッド・スポエルストラの指導を受けて作成しました。
発売当時は、デジタル画像処理の最先端技術を代表するものでした。今日でも、その最大色深度はハイエンドのプリプレスや高度な画像処理システムにはあまり適していませんが、主な出力対象がカラー印刷ではなく標準的なテレビ画面であるため、TGAはアニメーションやビデオ業界で広く使用されています。[ 4 ]
非圧縮24ビットTGA画像は、他の主要な24ビットストレージフォーマットと比較して比較的シンプルです。24ビットTGAには、18バイトのヘッダーと、パックされたRGBデータとしての画像データのみが含まれています。これに対し、BMPでは行を4バイト境界にパディングする必要があり、TIFFとPNGはメタデータコンテナであり、画像データや属性をファイル内の固定位置に配置しません。
32ビットTGA画像にはアルファチャンネル(キー信号)が含まれており、Avid Dekoなどのキャラクター生成プログラムでよく使用されます。
すべての値はリトルエンディアンです。フィールド番号とサブフィールド番号は仕様書バージョン2.0に準拠しています。
バージョン2.0では、拡張機能エリアとフッターが追加されました。開発者エリアは、アプリケーション固有の情報を保存するために設けられています。
画像IDの長さ(フィールド1)
0~255 画像IDフィールドを構成するバイト数。画像IDフィールドには任意の情報を含めることができますが、一般的には画像の作成日時やシリアル番号が含まれます。
TGA仕様のバージョン2.0以降では、イメージが作成された日時が拡張機能領域で考慮されるようになりました。
カラーマップの種類(フィールド2)
値は次のとおりです。
画像タイプ(フィールド3)
下位3ビットで列挙され、4ビット目はRLEのフラグとして使用されます。可能な値の例は次のとおりです。
画像タイプ 1 および 9: ピクセル深度の値に応じて、画像データ表現は、ピクセルの色を定義するカラー マップへの 8、15、または 16 ビットのインデックスです。 画像タイプ 2 および 10: 画像データは、ピクセル 色の直接表現です。ピクセル深度が 15 ビットおよび 16 ビットの場合、各ピクセルは色ごとに 5 ビットで格納されます。ピクセル深度が 16 ビットの場合、最上位のビットは透明度用に予約されています。ピクセル深度が 24 ビットの場合、各ピクセルは色ごとに 8 ビットで格納されます。32 ビットのピクセル深度は、追加の 8 ビットのアルファ チャネルを定義します。 画像タイプ 3 および 11: 画像データは、グレースケール データの直接表現です。このタイプの画像のピクセル深度は 8 ビットです。
カラーマップ仕様(フィールド4)
3つのサブフィールドがあります。
画像でカラーマップ全体が実際に使用されない場合、最初のエントリのインデックスをゼロ以外にすることで、カラーマップの必要な部分のみをファイルに保存できます。
画像仕様(フィールド5)
6つのサブフィールドがあります。
画像記述子:
データストレージのインターリーブモード:
TGA仕様のバージョン1.0は非常に基本的なものであり、多くの開発者はより多くの情報を保存する必要性を感じていたため、アプリケーション固有の追加セクションをファイルに追加するという方法を選択した。
仕様のバージョン2.0では、これらのアプリケーション固有の拡張機能/追加機能は開発者エリアでサポートされます。仕様に関係するのは開発者エリアのオフセットとサイズのみであり、開発者はエリア内に自由に好きなものを追加できます。
TGAデコーダーが開発者領域の情報を解釈できない場合、通常はそれを無視します。これは、その情報が別のアプリケーションによって作成されたものとみなされるためです。開発者は、開発者領域のデータがアプリケーションと互換性があるかどうかを判断するロジックをアプリケーションに組み込むことを推奨します。そのための1つの方法として、ファイルフッターのソフトウェアIDを確認することが挙げられます。
TGAファイルにフッターが含まれている場合、それはTGAバージョン2ファイルである可能性が高い。フッターはファイルの最後の26バイトであり、そのうち最後の18バイトは固定値である。
Truevisionテクニカルガイドの付録Cに記載されているTGAファイルフォーマット仕様の旧バージョンでは、ランレングスエンコード(RLE)パケットはスキャンラインをまたぐ可能性があると規定されています。「ランレングスパケットの場合、ヘッダーの後に単一の色値が続き、これはヘッダーで指定された回数だけ繰り返されると想定されます。パケットはスキャンラインをまたぐ可能性があります(あるラインで始まり、次のラインで終わる)。」
しかし、TGA v2.0仕様書の24ページには、正反対のことが書かれています。「ランレングスパケットは、複数のスキャンラインのピクセルをエンコードしてはなりません。あるスキャンラインの末尾と次のスキャンラインの先頭に同じ値のピクセルが含まれている場合でも、それらは別々のパケットとしてエンコードする必要があります。つまり、ランレングスパケットは、あるラインから別のラインに折り返してはなりません。」
したがって、TGAリーダーは、元の仕様の一部であったため、スキャンラインをまたぐRLEデータパケットを処理できる必要があります。ただし、TGAファイルを保存(作成)する際には、新しいv2.0 TGA仕様に準拠するために、RLEデータパケットをスキャンラインの境界内に制限する必要があります。