2次元画像処理 BMPのソースを表示
新しいページはコチラ
移動:
案内
,
検索
== '''概要''' == BMP形式のファイルは比較的読み込み易い形式になってます。最初の54byteがHeader情報になっていて、この中に画像の高さpixelと横幅pixelの情報がありますので、これさえ抜き出せれば、あとはRGBの情報を読み込めば、表示できます。 とは言いつつも、それだけでは特殊な形式のBitmapファイルもありますので読み込みエラーに遭遇する可能性がありますし、書き出す時も、もう少し情報をしっかりと最初の決まり事や各バイトの決まり事に従って付与しておかないと他のアプリでも画像を開くことができないというエラーになるようなアプリになってしまう可能性もあります。 *Bitmapファイルヘッダー情報 :00~01 2Byte:''''B','M'にあたるアスキーコード0x42→B 0x4d→M 固定です。''' :02~05 4Byte:ファイルサイズ[Byte]を格納します。符号なし整数として記載。。 :06~07 2byte:常に0の予約領域1 :08~09 2byte:常に0の予約領域2 :10~13 4Byte:ファイル先頭から画像データまでのバイト数。24bitColorRGBファイルならパレット情報を埋め込む必要もなく54ビットで事足りるヘッダになるので、0x36です。符号なし整数として記載。 ※符号なし整数部はリトルエンディアン方式なので 10~13の情報は54ビットを表すためには0x00,0x00,0x00,0x36を逆順にならべて0x36,0x00,0x00,0x00になります。 *Bitmap情報ヘッダー情報Windows系 :14~17 4Byte:情報ヘッダのバイト数。24bitColorRGBファイルなら40byteなので、0x28です。0x28,0x00,0x00,0x00ですね。 :18~21 4Byte:'''画像の横幅pixel''' :22~25 4Byte:'''画像の高さpixel''' :26~27 2Byte:プレーン数。つまり画像の区画数です。1枚分、1区画しか使えないので、1で固定です。0x01です。0x01,0x00ですね。 :28~29 2Byte:カラービット数。24bitColorRGBなら24です。0x18です。0x18,0x00ですね。HTMLの色を#000000~#FFFFFFであらわすあれと同じ表現方法です。ほかにもモノクロの1bitや16色4bit、256色8bit、65535色16bit法があります。 :30~33 4Byte:圧縮方式。0で圧縮無しのよくあるbmpになります。したがって、0x00,0x00,0x00,0x00となるのが通常だと思います。 ::他にも1,2,3,4,5の3種類の方式が選択できるようになっています。それぞれの圧縮方式については後述したいと思います。 ::・1:RLE8という方式。正式にはラン レングス エンコード(Run Length Encoded 8bits Per Pixel)です。 ::・2:RLE4という方式。正式にはラン レングス エンコード(Run Length Encoded 4bits Per Pixel)です。 ::・3:Bitfieldsというマスク(RGBデータに影響を与えるデータ)を与える圧縮無し方式の特殊なモノという感じです。 ::・4:JPEG圧縮方式。bmpファイルの中身がJPEGになるという特殊用途です。 ::・5:PNG圧縮方式。bmpファイルの中身がPNGになるという特殊用途です。 ::いずれもあまりみかけませんが、規格にはあるので、対応しないとダメなのかもしれません。対応しませんと宣言して画像処理アプリを公開するということもアリでしょうか?使う人にわかってもらうことが大事ですよね。全部の圧縮方式に対応していないと捕まるとかそういうことはないです。さも完璧な画像処理アプリを装って、上記にきちんと対応していないプログラムを公開すると叩かれるかもしれません。気を付けてください。BMPも意外と複雑な仕組みのものがあったりするということです。せめて、このフラグを読み取って圧縮方式がxxxになっているファイルです。このアプリでは開けません。というようなメッセージが出るような仕組みを持たせておくとアプリ利用者は合点がいくのではないでしょうか? [[ファイル:20161216 BitmapHeaderSample.png|600px|thumb|none|Bitmapのヘッダーのサンプル]]
2次元画像処理 BMP
に戻る。
個人用ツール
3.141.7.31
このIPアドレスのトーク
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ