玄関コンピュータの部屋各種解説コーナーCGファイル概説

1.4 ビットマップデータのファイルへの保存方法

ビットマップファイルの模式図
ファイルヘッダ
ファイル識別情報
画像のサイズ
フレームバッファの深さ
カラーマップの数
その他画像に関する各種パラメータ
カラーマップ
カラーマップの内容(オプション)
ビットマップイメージデータ
フレームバッファの内容

ディスプレイ上にビットマップ表現された画像データをファイルに保存する場合、目的に応じて色々な形式で保存しますが、おおむね左図のような形式が基本です。

ファイルヘッダの内容は画像ファイルの種類によって様々ですが、たいていは最初の方に種類を識別するための情報が入っていますので、それによって画像ファイルの種類を識別することができます。 カラーマップはカラーマップモデルだけにあり、ダイレクトカラーモデルの場合は存在しません。 ビットマップイメージデータはフレームバッファの内容を保存したもので、ファイル容量の大部分を占めます。 このため、たいていは圧縮して保存されます。

プレーン優先
フォーマット
ピクセル(0,0)のR値
ピクセル(1,0)のR値
:
ピクセル(0,0)のG値
ピクセル(1,0)のG値
:
ピクセル(0,0)のB値
ピクセル(1,0)のB値
:
ピクセル優先
フォーマット
ピクセル(0,0)のR値
ピクセル(0,0)のG値
ピクセル(0,0)のB値
ピクセル(1,0)のR値
ピクセル(1,0)のG値
ピクセル(1,0)のB値
:
:

フレームバッファはハードウェア的にはプレーンごとにひとかたまりのメモリとして扱われることが多いので、 ダイレクトカラーモデルの場合はRGB各プレーンごとに3つのメモリブロックとして出力する方が効率的です。 この形式を「プレーン優先フォーマット」と言います。 しかし、各種の画像処理ソフトではピクセルごとに色々な処理をすることが多いので、ピクセルごとにRGB値がまとまって保存されている方が便利です。 この形式を「ピクセル優先フォーマット」と言います。

大部分の画像ファイルはピクセル優先フォーマットで保存されますが、中にはプレーン優先フォーマットで保存されるものも、どちらの形式でも保存可能なものもあります。 ビットマップ表現された画像データは、通常はバイナリ形式で保存されます。 テキスト形式はエディタなどで読み書きできますので便利ですが、バイナリ形式に比べて効率が悪いので、ビットマップ表現された画像データの場合はあまり用いられません。

X-windowのビットマップファイル(xbm)のように、ASCIIのテキスト形式で保存される画像ファイルもたまにありますが、画像ファイルの入出力処理が非常に遅くなるので、アイコンなどの小さな画像に利用されるのが普通です。 それに対してベクトル表現された画像データは、たいていプログラムのようなコマンドとデータの集まりですから、PostScriptやHPGL(Hewlett-Packard Graphics Language)のようにテキスト形式で保存される方が一般的です。

ちなみにバイナリファイルの内容を調べるには、普通は16進ダンプをして、ずらりと並んだ16進数を解析します。 その作業を延々と続けているうちに、やがてコンビニエンスストアでおつりの計算をする時、無意識のうちに16進計算を行うようになり、人と会話をする時にも16進数でしゃべり、ついには真夜中に「攻殻機動隊」のビデオを見ながら16進数でうつろに笑うようになると、人間おしまいです。(^^;)