ICO(CUR) ファイルフォーマット


ICO(CUR) ファイル全体構造
  名称 サイズ
ファイルヘッダ IconFileHeader 6バイト
アイコンNO.1 アイコンヘッダ IconInfoHeader 16バイト
アイコンNO.2 アイコンヘッダ IconInfoHeader 16バイト


アイコンNO.1 情報ヘッダ BitmapInfoHeader 40バイト
パレット 可変長
画像データ ピクセルデータ 可変長
マスクデータ 可変長
アイコンNO.2 情報ヘッダ BitmapInfoHeader 40バイト
パレット 可変長
画像データ ピクセルデータ 可変長
マスクデータ 可変長




IconFileHeader (ICONDIR構造体)

アドレス (サイズ) 名称 内容
0x0000 (2) icoReserved 予約 常に0
0x0002 (2) icoResourceType リソースタイプ
1 - アイコン
2 - カーソル
0x0004 (2) icoResourceCount アイコンの数


IconInfoHeader (ICONDIRENTRY構造体)

アドレス (サイズ) 名称 内容
0x0006 (1) Width アイコンの幅 (0の場合は256ピクセル)
0x0007 (1) Height アイコンの高さ (0の場合は256ピクセル)
0x0008 (1) ColorCount カラー数 (256色以上なら0)
0x0009 (1) Reserved1 予約
0x000A (2) Reserved2 予約 (ホットスポットx座標)
0x000C (2) Reserved3 予約 (ホットスポットy座標)
0x000E (4) icoDIBSize アイコンファイルのサイズ
0x0012 (4) icoDIBOffset BitmapInfoHeaderまでのバイト数


BitmapInfoHeader

アドレス (サイズ)名称内容
0x0016 (4) bcSize ヘッダサイズ (=40) ※ここが、40でない時はPNGファイルの可能性がある
0x001A (4) bcWidth 画像の幅 (ピクセル)
0x001E (4) bcHeight 画像の高さ (ピクセル)
bcHeight の値が正数なら,画像データは下から上へ
bcHeight の値が負数なら,画像データは上から下へ
0x0022 (2) bcPlanes プレーン数 常に 1
0x0024 (2) bcbcBitCount 1画素あたりのデータサイズ (bit)
例)256 色ビットマップ = 8
0x0026 (4) biCopmression 圧縮形式
0 - BI_RGB (無圧縮)
1 - BI_RLE8 (RunLength 8 bits/pixel)
2 - BI_RLE4 (RunLength 4 bits/pixel)
3 - BI_BITFIELDS (Bitfields)
(4 - BI_JPEG)
(5 - BI_PNG)
0x002A (4) biSizeImage 画像データ部のサイズ (byte)
96dpi ならば3780
0 の場合もある
0x002E (4) biXPixPerMeter 横方向解像度 (1mあたりの画素数)
96dpi ならば3780
0 の場合もある
0x0032 (4) biYPixPerMeter 縦方向解像度 (1mあたりの画素数)
96dpi ならば3780
0 の場合もある
0x0036 (4) biClrUsed 格納されているパレット数 (使用色数)
0 の場合もある
0x003A (4) biCirImportant 重要なパレットのインデックス
0 の場合もある


パレット

bcBitCount の値が 8〜1 の場合に存在する。

1パレットあたりの構造
サイズRGBQUAD (4)内容
1rgbBlue青 0 〜 255
1rgbGreen緑 0 〜 255
1rgbRed赤 0 〜 255
1rgbReserved予約領域 0


画像データ

ピクセルデータ(XORイメージ)


マスクデータ(ANDイメージ)


戻る