透明度付 BMP のフォーマット
Skymaker の出力している透明度付 BitMap のバイナリフォーマットは以下の通りです。
なお、DWORD (4 byte) は、下位バイトが先に記録される Intel フォーマットです。
Skymaker outputs following bit map (BMP) with transparency, when 'WT' command assigned.
DWORD data are recorded in LSB-first (Intel integer) format.
0000 'B'
0001 'M'
0002 DWORD File Length // = (width)*(height)*4 + 134
0006 00 00 // reserved 1
0008 00 00 // reserved 2
000A 86 00 00 00 // bit map start address (=134)
000E 6C 00 00 00 // Windows 95 type bit map (BITMAPV4)
0012 DWORD Width (X) // = (width)
0016 DWORD Height (Y) // = (height)
001A 01 00 // plane (=1)
001C 20 00 // bits/pixel (=32)
001E 03 00 00 00 // compression type (=3: BI_BITFIELDS)
0022 00 00 00 00 // N/A (compressed bitmap data size) (=0)
0026 FF 00 00 00 // horizontal resolution (pixel/meter)) (=0xFF)
002A FF 00 00 00 // vertical resolution (pixel/meter)) (=0xFF)
002E 00 00 00 00 // N/A (number of colors) (=0)
0032 00 00 00 00 // N/A (number of important colors) (=0)
0036 FF 00 00 00 // bit mask (red)
003A 00 FF 00 00 // bit mask (green)
003E 00 00 FF 00 // bit mask (blue)
0042 00 00 00 FF // bit mask (alpha)
0046 'B' // = LCS_sRGB
0047 'G'
0048 'R'
0049 's'
004A 00 00 00 00 // CIE RGB-XYZ table 3*3*4 bytes
004E 00 00 00 00
0052 00 00 00 00
0056 00 00 00 00
005A 00 00 00 00
005E 00 00 00 00
0062 00 00 00 00
0066 00 00 00 00
006A 00 00 00 00
006E 01 00 00 00 // gamma (red)
0072 01 00 00 00 // gamma (green)
0076 01 00 00 00 // gamma (blue)
007A FF 00 00 00 // (red)
007E 00 FF 00 00 // (green)
0082 00 00 FF 00 // (blue)
// (bit map follows ...)
0086 Red (00-FF) at (x,y)=(0,height-1)
0087 Green (00-FF) at (x,y)=(0,height-1)
0088 Blue (00-FF) at (x,y)=(0,height-1)
0089 Alpha (00-FF) at (x,y)=(0,height-1)
: :
: :
(repeated (width)*(height) times ...)
(end of file)
上記は、Win32 SDK の、BITMAPV4 (Windows 95 version) の定義に従っています。
ビットマップは、左下を先頭に、左から右、下から上の順で、格納されます。
Windows 3.1 形式では B, G, R 順が標準ですが、本フォーマットでは R, G, B, A の順です。
必ず 4 byte の倍数となるため、1水平ラインごとの終端処理は特に不要となっています。
BITMAPV4、BITMAPV5 形式 BMP は、一時期 Windows Update された Windows 98
ペイントブラシのバグによって生成されていました。
また、Windows 98 付属の Imaging によって、透明度付 BITMAPV5 形式 BMP
が生成されていました。
また、
「BitMap の極み」(希葉 竜胆 氏)
で出力される透明度付 BMP ファイルも上記と同じフォーマットでした。
BITMAPV4 形式 BMP ファイルについては、Win32 SDK
では運用方法が不明瞭なデータ部分があり
(BITMAPV4HEADER のヘッダ構造については完全な定義有り)、
本 Skymaker の透明度付 BMP は、これらの BITMAPV4・BITMAPV5 形式の実際の BMP
ファイルを逆解析したフォーマットに従って生成しています。
〜
補足:
- ビットマップには、OS/2 形式、Windows 3.1 形式、Windows 95 形式、Windows 98 形式があります。
- 一般に、ペイントソフトで BMP 形式として出力されるファイルは、Windows 3.1 形式です。
- 透明度 (αチャネル) については、BITMAPV4 以降で定義されています。
- Skymaker では、RLE4・RLE8 圧縮と、16 bit/pixel 特殊フォーマット、topdown BMP
を含む、上記全形式の読込みに対応しています。
MacBinary の付加された BMP ファイルも読込み可能です。(自動スキップ)
透明/不透明 (Alpha) を反転して読込むことも可能です。(先に「 TE 0,-1 」のように指定)
- Skymaker の出力するビットマップは、
透明度なしの場合 Windows 3.1 形式 (24 bit/pixel(bpp) 標準 BGR 順)、
透明度つきの場合 Windows 95 形式 (32 bit/pixel(bpp) RGBA 順) (WT コマンド指定時)
です。V2.30 以降 (2002 年リリース) 同じ形式で生成しています。
- Windows XP 以降のペイント (ペイントブラシ) およびビュアーで、RGB プレーンのみ正常表示されるようになりました。
Windows 95, 98, Me のペイント (ペイントブラシ) での表示は真っ白となります。
IrfanView (V2.13), Imaging (Windows Me 標準アクセサリ) では、RGB プレーンのみ正常表示されています。
- Susie Plug-in で BMP ファイル対応のものが指定された場合は、Susie Plug-in の処理を優先します。
(先に判定しています)
- Susie Plug-in 経由時も、BITMAPV4 / BITMAPV5 形式で受渡しされれば、透明度付画像として読込み可能です。
もし、不具合等みつかりましたら、サポートへご連絡ください。
Last update 2007.5.13
Copyright(c) F.Issiki 2004,2007