• ベストアンサー

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

ptakedaの回答

  • 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
質問者

お礼

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

関連するQ&A

  • C言語でBMP画像(ファイル)は作れますか?(Unix使用)

    こんにちは。私は30代男性です。 先日はBMPを読み込んでUnix上でイメージ表示するプログラムを作ろうとしていましたが、ようやく完成しました。ご協力いただいた方々にお礼申し上げます。 次にチャレンジしようとしていることは、「BMPファイルに画像を書き出す。」というものです。画像は横4ピクセル・高さ256ピクセルのサイズで、とりあえず1行ずつRBG値を増やして「色の作成」の時に出てくるような長方形型の色指定用のグラデーション表示をしてみようかなと思っています。 →つまり、色の変化はRBG(0,0,0,)からRBG(255,255,255)にずらしていくという感じです(黒→灰色→白とでもいいましょうか)。 これはパレットに設定する値をfor分でループさせればいいかなと思いましたが、プログラムでBMP画像を作り出すことは無理なんでしょうか?ファイルがない状態からファイル名を指定して作るとしたら、offset値をどのように設定したらいいのかなど、わからないことだらけです。 アドバイスを頂けたらありがたいです。どうぞ宜しくお願い致します。

  • bmpファイルが開きません。

    ウェブサイトからの画像などは(ビットマップ)Adobeで 開くのですが、友人からHotmailへ送ってもらった ビットマップ イメージ画像が開きません。 ‐‐‐ ファイル形式用プラグインはファイルを 解析することができません。 従って、「◯◯◯◯.bmp」を 開く事ができませんでした。 ‐‐‐‐ このように表示されます。 宜しくお願いします。(;^_^A

  • C言語でBMPファイルの内容を表示 その2(Unix使用)

    こんにちは。私は30代の男性です。 以前、コマンドラインで指定したBMPファイルの中身をバイナリ形式で読み込むということにチャレンジして、とりあえずBITMAPFILEHEADER構造体の中の情報を引き出すことには成功しました。 ※以前の質問とご回答 → http://okwave.jp/qa2837931.html fread関数を使ってoffsetという情報(ファイル先頭から画像データまでのバイト数)を取り出すことができたので、あとはBMPファイルの先頭アドレスからoffsetのバイト数分だけ進んだ箇所からデータを取り出して出力すれば、数値として格納されている画像データが引き出せると思ったのですが、うまくいきません。 どのようにアドレスを指定すれば、バイナリ形式の画像データを表示できるのでしょうか?宜しくお願い致します。

  • c言語を使いダイアログにbmpを表示したい 

    はじめまして、 私は、c言語は初心者なのでが、ダイアログボックスに、画像(bmp)が表示することができません。 ソースは、 hdc = BeginPaint(hDlg, &ps); //指定ウィンドウ内での描写準備 // ビットマップをファイルからロードする hBitmap = ::LoadBitmap( NULL, _T("test.bmp") ); // ウィンドウのデバイスコンテキストハンドルを取得する hDC = GetDC( hDlg ); // メモリデバイスコンテキストを作成する hCompatDC = CreateCompatibleDC( hDC ); // ロードしたビットマップを選択する GetObject(hBitmap, sizeof(BITMAP), &bmp); // ビットマップをウィンドウに転送する(表示する) if(hBitmap != NULL){ StretchBlt( hDC, 0, 0, 100, 100, hCompatDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY ); SendDlgItemMessage( hDlg, IDC_STATIC, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); } なのですが、これはメインウィンドウでは動くのですが、ダイアログボックスでは動かずこまっています。 どうか、助言のほどよろしくお願いします。

  • excel に bmpファイルを貼り付け

    excelファイルにbmpを貼り付けようと思っているのですが、 1bmpファイルが大き過ぎて困っています  どのようにすると小さくなるのでしょうか? bmpファイルは ペイントを用いて ファイルの種類:24ビット ビットマップ(*.bmp;*.dib) にて保存したものです

  • bmpファイルの明暗について

    **.bmp のファイル(白黒)があります この画像の明暗を 1pixel 単位で数値化したいのです  例えば 真っ白 = 0 真っ黒 = 255 また、そのデータを csv ファイル等に保存したいのですが 可能でしょうか? 宜しくお願いいたします

  • C言語でBMPの迷路を解く。

    こんにちは。私は30代の男性です。 先日はCSVファイルの読み取りについて投稿しましたが、無事解決できました。アドバイスを下さった方々にはお礼申し上げます。 次は、「BMPファイルで書かれた迷路を解く」というようなことを試みています。下がイメージ図になりますが、「□は白」で「■は黒」で「※(ゴール)は青」とします。■が道で■しか進めず、他の道とは交差しない一本道であるとします。表記の都合上、下記だとスペースがありますが、実際はもちろん■は繋がっていますし「□」は白なので、実際は何もみえません。 0 x→ y■□□□□□□□□□□□□ ↓■□□□□□□□□□□□□  ■□□□※■■□□□□□□  ■□□□□□■□□□□□□  ■□■■■■■□□□□□□  ■□■□□□□□□□□□□  ■■■□□□□□□□□□□ 下記のような図を一つ一つ進みながら、左上の座標をx,y=(0,0)として一つ一つ座標を表示しながら進み、「※(青)」で「ゴール」と表示するには、どのようにしたらよいでしょうか? BMPの画像は、交差しない一本道の画像ならどのような画像でも対応できるようにしたいのですが、上下左右どのような動きもしなくてはならないので、どのような条件でどのようにコーディングしたらいいのかわからず悩んでいます。 どなたかよきアドバイスをお願い致します。

  • フォトショップでBMPファイルが開けない

    現在Phtoshop6.0を使っています。(WindowsXP) 主に、フリーソフトでキャプチャした画像を編集するのに使っています。 先日までjpegで保存していたのですが、新たにbmpで保存した画像の編集にもチャレンジしようと思い始めました。 ところが、bmpで保存した画像を開こうとすると 「<ファイル名>を開くことができません。ファイル形式モジュールでファイルの解析を実行できません。」 と出て開く事ができません。 何故なのでしょうか? 分かる方、教えて下さい。お願いします。

  • 画像(bmp等)の保存形式について

    画像(bmp等)の保存形式について 画像の保存のフォーマットについて質問です。 bmpの形式についてのwebページをみてみたんですが、 structを書いてメンバをかいていたりするんですが、 bmpのファイルをテキストエディタでみてみてもうまくみれないし、 やっぱりバイナリエディタでみると数字の羅列なんですが、 実際に作る場合にはstructとかを書いた後に使うコンパイラみたいなものがあるんでしょうか? struct等C言語のプログラミングの知識はあります。 よろしくお願いします。

  • JPEG・BMPファイル

    JPEG・BMPファイルを形式をかえられますか? JPEG→BMP BMP→JPEG ダウンロードなど一回保存したからの変更。