拡張子について拡張子は、「.BMP」「.RLE」「.DIB」などが存在します。データの構成DIB(Device Independent Bitmaps)フォーマットは、以下のようなデータで構成されています。
詳しい説明まず、BITMAPFILEHEADERがファイルの先頭にあり、Windows形式の場合はBITMAPINFOHEADER、OS/2形式の場合はBITMAPCOREHEADERが、その後ろにあります。 その後ろにカラーインデックス(パレット)、最後にイメージデータが保存されています。 ○Windows形式の場合 BITMAPFILEHEADER ↓ BITMAPINFOHEADER ↓ RGBQUAD[n](カラーインデックス) ↓ 実際のイメージ ○OS/2形式の場合 BITMAPFILEHEADER ↓ BITMAPCOREHEADER ↓ RGBTRIPLE[n](カラーインデックス) ↓ 実際のイメージ カラーインデックスと実際のイメージは、 色数によってサイズが違い、以下のようになっています。 モノクロ カラーインデックスは2個存在し、 イメージは、1ピクセルにつき1bit使用する。(0〜1) 16色 カラーインデックスは16個存在し、 イメージは、1ピクセルにつき4bit使用する。(0h〜Fh) 256色 カラーインデックスは256個存在し、 イメージは、1ピクセルにつき1byte使用する。(0h〜FFh) 16万色 カラーインデックスは存在しない。 イメージは、以下の3byteで構成される。 1byte 青の輝度(0h〜FFh) 1byte 緑の輝度(0h〜FFh) 1byte 赤の輝度(0h〜FFh) 圧縮について圧縮には、以下のような種類があります。○BI_RLE8 256色用の圧縮方法。 コード化モードと絶対モードが存在し、混在して使用されます。 □コード化モード 以下の例を見れば分かる通り、第1バイトに連続するデータの数、 第2バイトにカラーインデックスが格納されています。 01 23 → 23 02 46 → 46 46 03 69 → 69 69 69 また、00から始まるコードは、以下のような意味があります。 00 00 → 行の終端を意味する 00 01 → イメージそのものの終端を意味する 00 02 xx yy → 現在位置から横xx,縦yyのオフセットで次のデータが始まる事を意味する □絶対モード 絶対モードとは、コード化モードで圧縮できなかった部分を そのまま格納するもので、第2バイト(03h〜FFh)が連続するデータの数、 その次からは、カラーインデックスが格納されます。 00 03 45 60 → 456 00 04 56 78 → 5678 ○BI_RLE4 16色用の圧縮方法。 以下のような感じで、1バイト目にデータの数、 2バイト目からは、カラーインデックスとなります。 03 45 → 454 09 12 34 56 78 90 → 123456789 05 12 34 50 00 00 → 12345 |