C whithout WINDOWS.H電気ショック療法どのように配列にBMPファイルを置くために、C++、C
編集私は配列を変更する配列にbmpの色を取得したい 標準のlib
C whithout WINDOWS.H電気ショック療法どのように配列にBMPファイルを置くために、C++、C
編集私は配列を変更する配列にbmpの色を取得したい 標準のlib
使用して、バイナリストリームを使用して、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に詳しい説明があります。もちろん
File f = new File(fileName);
//get the file length
//create a buffer big enough.
file.read(buffer, size)...
配列は、すべてのビットマップヘッダ情報だけでなく、カラーマップが含まれますので、あなたは本当に、配列内のビットマップファイルを望んでいない可能性があります。
これが宿題であれば(そして私はそれが賭けている)、あなたはヘッダーセクションと "マップ"セクションを持つ新しい構造体を作成することができます。ヘッダーの大きさそれがどれほど大きいかを示す変数がヘッダーにあると考えてください)。これを手にすれば、マップデータだけを簡単に取得できます。
私はCBitmapオブジェクトを試してみた後、CBitmapのコードを掘り下げて、必要なビットを引き出します。
申し訳ありませんがコードを提供しています。私は最近C/C++の世界にいませんので、それは以前と同じくらい新鮮ではありません。
いくつかはlibの.. Boost/mfcの使用を示唆しています。これらは重く、アプリを膨らませます。彼らは素晴らしいものではありませんが、あなたがそれらを必要としていることを確認してください。 – baash05
ライブラリを使用していない限り、C++では 'File f = new File(fileName);を書くことはできません。 CはFILEを定義していますが、あなたはそのように使うことはできません。 – rob05c
正しい、ブースト=鼓動。しかし、それが自分のビットマップを解析しているなら...しかし、boostは私が知っているビットマップライブラリを持っていません。彼はwindows.hを言った。それはMFCを意味しません。リンク先のEasyBmpライブラリはかなり小さく見えます。 – rob05c
'file = fopen(" file.bmp "、" rb "); fread(バッファ、1、ファイルサイズ、ファイル); ' –
あなたがしようとしていることを明確にすることはできますか?配列内のファイルデータの実際のバイト数をBMP形式にしますか?または、配列内のイメージデータを他の種類のフォーマットにしたいですか? –
この宿題はありますか?色ではピクセル値を意味しますか? –