強火で進め

このブログではプログラム関連の記事を中心に書いてます。

File APIでビットマップファイルの情報の取得をしてみた


Firefox 3.6でFile APIというファイルのバイナリデータにアクセスするAPIが搭載されました。

この様なJPEGファイルのEXIF情報を取得するデモも公開されています。

File API & Firefox 3.6
http://demos.hacks.mozilla.org/openweb/FileAPI/

自分もBMPファイルの情報を取得するサンプルを作ってみました。
Firefox 3.6でこちらを開くと試せます。

BMPファイルをドラッグするとBMPの情報とパレットを持っている場合はそのパレットの色情報をパレットを持ってないフルカラーなどの画像の場合は先頭の256ピクセル分の色を以下の様に表示します(こちらは canvas を使って描画しています)。Macユーザの方はパレット付きのBMPファイルの生成が大変(GIMPなどを使う必要が有る)ためこちらにサンプルファイルを用意しまいた。ファイル名の最後についている文字が色数です。

なおパレットを使わないフルカラーのビットマップなどの場合には画像データの先頭から256ピクセルの画像情報を表示する様にしています。

データの取得には上記で紹介した「JPEGファイルのEXIF情報を取得するデモ」で使用されている exif.js に定義されている関数を使用しました。以下の様な関数がデータの取得にとても便利です。こちらのファイルのライセンスはMPL Licenseとなっています。

関数名 内容
getByteAt Byte(符号無し8bit)データの取得
getShortAt Signed Short(符号有りの16bit)データの取得
getSLongAt Signed Long(符号有りの32bit)データの取得
getLongAt Unsigned Long(32bit)データの取得
getStringAt 文字列データの取得