【Colum】


アイコンのフォーマット
 アイコンのフォーマットは、サイズや1つのファイルに含まれているアイコン の数によって少しずつ違います。ここでは、32*32のアイコンのフォーマットを 取り上げています。


★フォーマットの概要★

アイコンのフォーマットは、次のものから成り立っています。

IconFileHeader 16バイト
IconInfoHeader 6バイト
BitmapInfoHeader 40バイト
パレット 64バイト
ピクセルデータ 512バイト
マスクデータ 128バイト

 このように、32*32のサイズのアイコンの場合、ファイルサイズは、これらの 合計 16+6+40+64+512+128=766バイトになります。


★IconFileHeader★

IconFileHeaderは、次のような情報が格納されています。

情報名 内容 サイズ
icoReserved 予約 2バイト
icoResourceType リソースタイプ 2バイト
icoResourceCount アイコンの数 2バイト

★IconInfoHeader★

IconInfoHeaderは、次のような情報が格納されています。

情報名 内容 サイズ
Height アイコンの幅 1バイト
ColorCount アイコンの高さ 1バイト
icoResourceCount カラー数 1バイト
Reserved1 予約 1バイト
Reserved2 予約 2バイト
Reserved3 予約 2バイト
icoDIBSize アイコンファイルのサイズ 4バイト
icoDIBOffset BitmapInfoHeaderまでのバイト数 4バイト


★BitmapInfoHeader★

BitmapInfoHeaderは、次のような情報が格納されています。

情報名 内容 サイズ
Size BITMAPINFOHEADERのサイズ=40バイト 4バイト
Width ピクセルデータの幅 4バイト
Height ピクセルデータの高さ 4バイト
Planes カラープレーン数 2バイト
BitCounts 色数(ビット単位) 2バイト
Compression 圧縮形式 4バイト
Sizeimage ピクセルデータのサイズ 4バイト
XPelsPerMeter 水平解像度 4バイト
YPelsPerMeter 垂直解像度 4バイト
ColorUsed 使用カラー数 4バイト
ColorImportant 重要なカラー数 4バイト


★パレット★

 アイコンの色数は基本的に16色なので、ビットマップの16色のカラーパレットと 同じです。(モノクロについては説明を省きます)


★ピクセルデータ★

(16色)

 色数が16であるので、1バイトで2つのピクセルデータが保存できます。 ピクセルデータの先頭は、画像の左下隅の座標で、横方向1ラインずつピクセルデータが 保存されます。この時、上位4ビットに 偶数ピクセル,下位4ビットに奇数ピクセルの情報が格納されます。

★マスクデータ★

 ビットマップのフォーマットと一番違う部分は、このマスクデータです。 ビットマップには、マスクデータというものがありませんでした。マスク データとは、ピクセルデータの色が透明色かそうでないかを保存するものです。  128バイトしかないので、1バイトで8ピクセルのデータを圧縮保存します。 マスクデータの先頭は、画像の左下隅の座標で、横方向1ラインずつマスクデータが 保存されます。 最上位ビットに、8ピクセルの一番左の座標,最下位ビットに8ピクセルの一番右 の座標についての情報が保存されます。


アイコンのフォーマットは、サイズやリソースの数が違う場合でも、それほど 違いはありません。バイナリエディタなどで調べてみてください。