2012-03-14 4 views
1
私は標準のlib C++またはを使用してアレイにfile.bmpを置くことができる方法

C whithout WINDOWS.H電気ショック療法どのように配列にBMPファイルを置くために、C++、C

編集私は配列を変更する配列にbmpの色を取得したい 標準のlib

+4

'file = fopen(" file.bmp "、" rb "); fread(バッファ、1、ファイルサイズ、ファイル); ' –

+1

あなたがしようとしていることを明確にすることはできますか?配列内のファイルデータの実際のバイト数をBMP形式にしますか?または、配列内のイメージデータを他の種類のフォーマットにしたいですか? –

+0

この宿題はありますか?色ではピクセル値を意味しますか? –

答えて

5

使用して、バイナリストリームを使用して、BMPする置く:

#include <fstream> 

char buffer[100]; 
ifstream myFile ("myImage.bmp", ios::in | ios::binary); 
myFile.read (buffer, 100); 

myFile.close(); 

をしかし、あなたはそのように行う上で主張すれば、それは少しトリッキーになります解析します。 boost GIL(bmpはサポートしていません)やthis open source bmp libraryなど、一般的なC++イメージライブラリを調べることをお勧めします。

サードパーティまたはOS固有のライブラリを使用できない場合は、データを自分で解析する必要があります。 C++の標準ライブラリには、それを行うためのものは何も含まれていません。まず、BMP構造に身を任せることから始める必要があります。 Wikipedia's articleに詳しい説明があります。もちろん

+0

'fstream.h'が失敗する可能性が高い(つまり、' fstream.h'が存在するシステムはわかりません)。あなたは 'fstream'を意味しました。 – netcoder

+0

@netcoder感謝しました。一定。 – rob05c

0
File f = new File(fileName); 
//get the file length 
//create a buffer big enough. 
file.read(buffer, size)... 

配列は、すべてのビットマップヘッダ情報だけでなく、カラーマップが含まれますので、あなたは本当に、配列内のビットマップファイルを望んでいない可能性があります。

これが宿題であれば(そして私はそれが賭けている)、あなたはヘッダーセクションと "マッ​​プ"セクションを持つ新しい構造体を作成することができます。ヘッダーの大きさそれがどれほど大きいかを示す変数がヘッダーにあると考えてください)。これを手にすれば、マップデータだけを簡単に取得できます。

私はCBitmapオブジェクトを試してみた後、CBitmapのコードを掘り下げて、必要なビットを引き出します。

申し訳ありませんがコードを提供しています。私は最近C/C++の世界にいませんので、それは以前と同じくらい新鮮ではありません。


bitbltのドキュメントをチェックしてください。あなたの配列を変更するのに役立ちます。また、すばやくGoogle検索して、これのほとんどを見つけることができました。 http://www.vbforums.com/showthread.php?t=261522私がビットマップを取得した最初のヒットだった How to change, modify, cut and swap pixels from BITMAP少し下のページでしたが、まだ..グーグル最初に、最後に。

+0

いくつかはlibの.. Boost/mfcの使用を示唆しています。これらは重く、アプリを膨らませます。彼らは素晴らしいものではありませんが、あなたがそれらを必要としていることを確認してください。 – baash05

+0

ライブラリを使用していない限り、C++では 'File f = new File(fileName);を書くことはできません。 CはFILEを定義していますが、あなたはそのように使うことはできません。 – rob05c

+0

正しい、ブースト=鼓動。しかし、それが自分のビットマップを解析しているなら...しかし、boostは私が知っているビットマップライブラリを持っていません。彼はwindows.hを言った。それはMFCを意味しません。リンク先のEasyBmpライブラリはかなり小さく見えます。 – rob05c

関連する問題