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

7) バイトの順番(byte_order)

ビットマップイメージデータブロックにおける、ワード中のバイトの保存順を表します。

・コード0…リトルエンディアン形式

主としてIntel系CPUを使用したシステムにおける保存形式で、下位バイトが先に保存されます。 Interl系CPUシステムでは、実際にはメモリ上でもリトルエンディアン形式で記憶されていますが、ワードデータが処理される場合は本来のバイト順に並び替えられて処理されます。

メモリ上のワードイメージ(32ビットの場合)
第1バイト第2バイト第3バイト第4バイト
ワード
     ↓
ファイル上のワードイメージ(32ビットの場合)
第4バイトワード
第3バイト
第2バイト
第1バイト
::
・コード1…ビッグエンディアン形式

上位バイトが先に保存されます。

メモリ上のワードイメージ(32ビットの場合)
第1バイト第2バイト第3バイト第4バイト
ワード
     ↓
ファイル上のワードイメージ(32ビットの場合)
第1バイトワード
第2バイト
第3バイト
第4バイト
::

8) ビットマップユニット(bitmap_unit)

ビットマップイメージデータブロックにおけるワードのビット数を表し、8、16、32の3種類があります。 通常、UNIXシステムでは32ビットです。

9) ビットの順番(bitmap_bit_order)

ビットマップイメージデータブロックにおける、バイト中のビットの保存順を表します。

・コード0…リトルエンディアン形式

下位ビットが先に保存されます。

メモリ上のビットイメージ(4ビット/ピクセルの場合)
76543210
P0P1
     ↓
ファイル上のビットイメージ(4ビット/ピクセルの場合)
76543210
P1P0
:
・コード1…ビッグエンディアン形式

上位ビットが先に保存されます。

メモリ上のビットイメージ(4ビット/ピクセルの場合)
76543210
P0P1
     ↓
ファイル上のビットイメージ(4ビット/ピクセルの場合)
76543210
P0P1
:

10) スキャンラインのパディング数(bitmap_pad)

ビットマップイメージデータブロックにおける各行のパディング単位をビット単位で表したもので、8、16、32の3種類があります。 各行はパディング単位の倍数になるように、行の末尾に値0のデータがパディングされます。 通常、ワード境界に合わせてパディングされるように、この値はビットマップユニットbitmap_unitと同じ値に設定されます。

11) ピクセルあたりのビット数(bits_per_pixel)

1ピクセルを保存するのに必要なビット数です。 ピクセルはバイトまたはワード(ビットマップユニットbitmap_unit)単位でパディングされるため、イメージの深さpixmap_depthが1、4、8ビットの場合はその値と同じであり、 15または16ビットの場合は16、24ビットの場合は、ワードが16または32ビットならば32となります。

12) スキャンラインあたりのバイト数(bytes_per_line)

ビットマップイメージデータブロックにおける1行のバイト数で、次のような値になります。(int()は整数化関数です)

width_b=int({pixmap_width×bits_per_pixel+7}/8)
pad_b=int(bitmap_pad/8)
bytes_per_line=int({width_b+pad_b−1}/pad_b)×pad_b

13) ビジュアルクラス(visual_class)

画像を表示するディスプレイの特性を表すコードで、次のような種類があります。

・コード0…StaticGray

ピクセルあたり1ビットのモノクロディスプレイで、ほとんどのモノクロディスプレイがこれです。

・コード1…GrayScale

ソフトウェアからロード可能なグレーマップを持つモノクロディスプレイで、ピクセル値は濃淡の程度を規定したグレーマップの番号を指定します。 このクラスはあまり使用されていません。

・コード2…StaticColor

固定のハードウェアカラーマップを持つカラーディスプレイで、ピクセル値は固定カラーマップの番号を指定します。 IBM社のCGA規格のような低解像度のディスプレイがこれに相当しますが、現在はほとんど使用されていません。

・コード3…PseudoColor

ソフトウェアからロード可能なカラーマップを持つカラーディスプレイで、ピクセルあたり4ビットまたは8ビットが普通です。 IBM社のVGA規格のような低価格ディスプレイがこれに相当し、フルカラーではないカラーディスプレイはほとんどがこのクラスです。

・コード4…TrueColor

ピクセル値が3つの値で構成され、それぞれRGB各原色の値を直接指定するダイレクトカラーディスプレイで、一般に「フルカラーディスプレイ」と呼ばれるものは、ほとんどがこれに相当します。

・コード5…DirectColor1

RGB各原色ごとにソフトウェアからロード可能な独立したカラーマップを持つディスプレイで、ピクセル値は原色ごとにカラーマップの番号を指定する3つの値によって構成されます。 このクラスもあまり使用されていません。

一般に2色モノクロ画像はStaticGray、256色までのカラー画像はPseudoColor、32K色以上のカラー画像はTrueColorと思えばほぼ間違いないでしょう。

14) ZPixmap形式時の赤・緑・青のマスク(red_mask、green_mask、blue_mask)

TrueColorまたはDirectColorの場合に、ピクセル内のどのビットがどの原色に対応するかを指定するマスク値です。 例えばピクセルあたり24ビットで、赤・緑・青の値がこの順序で並んでいる場合、

red_mask=FF0000H=1111 1111 0000 0000 0000 0000
green_mask=00FF00H=0000 0000 1111 1111 0000 0000
blue_mask =0000FFH=0000 0000 0000 0000 1111 1111

となります。

15) 論理ピクセルあたりのビット数(bits_per_rgb)

カラーの原色値を構成する理論的なビット数のことで、カラーマップ画像の場合はカラーマップの原色あたりの階調数の、2を底とした対数値log2(階調数)になり、ダイレクトカラー画像の場合はビットマップイメージデータの原色あたりのビット数になります。 何となくややこしい説明ですが、ほとんどの場合は単に8ビットとなります。(^^;)

16) カラーマップの総エントリ数(colormap_entries)

画像が作成されたディスプレイのカラーマップ数で、カラーマップの総エントリ数(2pixmap_depth)を表します。 このデータは参考のためのものであり、原則として画像表示には影響を与えません。

17) 色構造の数(ncolors)

ファイルに保存されたカラーマップのエントリ数で、実際の画像を表示するのに必要な色数が少ない場合にはcolormap_entriesより少ない場合もあります。

18) ウィンドウの横幅と高さ(window_width、window_height)

画像が表示されていたウィンドウの幅と高さをピクセル単位で表した値で、ウインドウの境界までビットマップ・イメージデータに含まれていない限り、イメージの幅pixmap_widthと高さpixmap_widthと同じ値です。

18) ウィンドウの左上角のX座標とY座標(window_x、window_y)

画像が表示されていたウィンドウの、左上角のX座標とY座標をピクセル単位で表した値です。 画像を表示する場合は必ずしも元と同じ位置に復元する必要はありませんので、このデータは無視されることが多いようです。

19) ウィンドウの境界線の幅(window_bdrwidth)

画像が表示されていたウィンドウの境界線の幅をピクセル単位で表した値です。 window_zとwindow_yと同様、このデータも無視されることが多いようです。

20) イメージ名(name)

イメージ名を表す任意の長さのASCII文字列で、文字列の最後はヌル文字(00H)で終了している必要があります。 このため、フィールドのサイズは(文字数+1)バイトになります。 通常、イメージ名としては画像が表示されていたウィンドウの名前が使用されます。