• ベストアンサー

C言語でbmpファイルの中身を表示(Unix使用)

こんにちは。私は30代の男性です。 C言語でビットマップ形式で保存された白黒の画像を、Unix上で白の全角スペースなどを使って表示させるにはどのようにしたらよろしいでしょうか? 例えばbmpファイルの画像が下図のように数字の「1」を表すものなら、それをUnix上で白の全角スペースで表すといった感じにです。  ■ ■■  ■  ■  ■ ■■■ 画像ファイルを扱うということ自体が初めてですので、参考になるテキストやサイトなどもお教え頂けるとありがたいです。 どうぞ宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★サイトを紹介します。 ・http://www.sm.rim.or.jp/~shishido/readbmp.html→『BMPファイルからDIBを読み込む』 ・http://www.sm.rim.or.jp/~shishido/dib256.html→『256色DIB』 ・http://www.sm.rim.or.jp/~shishido/dib2.html→『DIB操作関数を作る』 ※上記のリンクは全て同じサイト内のページです。 ★本を紹介します。 ・『ゲームプログラミング練習帳』という本を紹介します。→http://www.amazon.co.jp/gp/product/4875934424 ・『ゲームプログラミング練習帳』の第1章に描画・保存・読み込みの基本が載っています。 ・買う場合は税込みで 1995 円です。→上記のサイトが『本』の著者のホームページです。 関連ヘッダ: ・BITMAPFILEHEADER ・BITMAPINFO ・RGBQUAD ・上記で紹介しているのは、すべて Windows 環境を対象にしています。 ・ヘッダファイルなどは、自作して白黒(2色?)のビットマップのベタデータを  読み込んで処理して下さい。→読み込めないと処理できませんので、『BMP』  のファイル構造を最初に理解して下さい。 ・以上。おわり。→構造体をキーワードに検索するとたくさん情報が出ますよ。

参考URL:
http://oshiete1.goo.ne.jp/qa2659364.html
DT50
質問者

お礼

Oh-Orange様 いつもお世話になっております。ご回答ありがとうございます。上記サイト、参考になります。本についても余力があれば購入したいと思います。どうもありがとうございました。

その他の回答 (2)

  • ptakeda
  • ベストアンサー率53% (7/13)
回答No.2

この白黒の画像を保存するプログラムは、 自分で作られたものなのでしょうか? もしくは、そのプログラムのソースは見れるのですか? ソースが見れるのであれば中のデータがどのようになっている かわかると思うので、データ部分を読み出して、 1ならば■、0ならば_を表示して、 横のビット数で折り返していけば期待通りのことができると思います。 もし、ソースがないのであった、以下の条件なら、 一般的にビットマップ、bmpファイルというのであれば、 ほとんどの場合「Windows bitmap」だと思います。 10~13バイト目を読み込んでそこからが、 データなので、それで並べてみてください。 18~19バイト目:横のピクセル数 20~21バイト目:縦のピクセル数 になるので、後は同じです。 白黒じゃなかった場合は少し難しいですが、何とかなると思います。 「Windows bitmap」じゃなかったり、無圧縮でなかったりした場合は、 私にはわかりません。

参考URL:
http://ja.wikipedia.org/wiki/Windows%E3%83%93%E3%83%83%E3%83%88%E3%83%9E%E3%83%83%E3%83%97
DT50
質問者

お礼

ご回答ありがとうございます。 バイトに入っている情報、参考にさせて頂きます。ありがとうございました。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

http://ja.wikipedia.org/wiki/Windows_bitmap bmpを独自に読んで独自に表示するプログラムを自分で書くのは、ハッキリ言って「無謀」です。 ヘッダ情報で圧縮か無圧縮か、ピクセルの色数が幾つか、パレットがあるかないか、あるとしたらサイズは幾つか、とか、かなり複雑です。 bmpファイルを読み込んで、ファイルヘッダ情報に従って、イメージ情報をメモリ(画像用バッファ)に展開してくれるunixのC言語ライブラリルーチンとかがネット上に転がってると思うので、それを探して来て使って下さい。 「メモリ(画像用バッファ)に展開されたデータを参照して、白の全角スペースを書くか書かないか」ってプログラムなら、そんなに悩まない筈ですし。

DT50
質問者

お礼

ご回答ありがとうございました。