日記 intime o'
ico(またはcur)のファイルフォーマット 2009/1/29(Thu.)画像ico(またはcur)の中身を書いてみる。 数字は、特に何もない限り10進法。 0xが頭に付く数字は16進法。単位はbyte。 16鍼法は前後が逆になったりする(リトルエンディアン)。 例えば、0xABCDEFをEF CD ABで表す。 (1)画像の中身は上から順に ・ファイルヘッダ ・情報 ・データ部 (2)それぞれの詳細 (i)ファイルヘッダ 予約領域 data size: 2byte 0x00 0x00 ファイルタイプ data size: 2byte icoでは0x01 0x00, curでは0x02 0x00 アイコンの個数 data size: 2byte 0x01 0x00(1個の場合) (ii)情報 アイコンの幅 data size: 1byte 32くらい(例えば) アイコンの高さ data size: 1byte アイコンの色数 data size: 1byte (0x00にすれば256) 予約領域 data size: 1byte hotspotX data size: 2byte (curの場合のカースル座標) hotspotY data size: 2byte (curの場合のカースル座標) データサイズ data size: 4byte データ部のoffset data size: 4byte 複数アイコンを含める場合、ヘッダのアイコンの個数を増やして、 アイコンの幅~データサイズを繰り返す。 (iii)データ部 ここのoffset data size: 4byte 40にしとけばいい アイコンの幅 data size: 4byte アイコンの高さ data size: 4byte カラープレーン数data size: 2byte 色数(bit) data size: 2byte 圧縮形式 data size: 4byte 水平解像度 data size: 4byte 垂直解析度 data size: 4byte 使用色数 data size: 4byte 重要な色数 data size: 4byte (iii)データ部 まずピクセルデータ。BGR0の順番で計4byte。ただし、0は予約領域。 次にマスクデータ。1ピクセルに対して1bitで0なら通常、1なら透過。 これを1にした時、そのときピクセルは(0x00)*4にすれば透過、 ピクセルを(0xff)*4にしたら反転。 ピクセルの順番はbmpと同じで、一番左下から始まり、右に進み端ま で来たら左に戻って一つ上の行に行き、ふたたび右に進み…の繰り返し。 参考: http://www.google.co.jp/search?hl=ja&q=ico%E3%80%80%E3%83%95%E3 %82%A1%E3%82%A4%E3%83%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3 %83%83%E3%83%88
コメ(0) | トラ(0)
(c)Kero's World