ここで、最も簡単な方法であるBMPを分析する方法を説明する必要があります。これはより大きなプログラムのほんの一部であり、私はこれを行う時間があまりありません。基本的には、黒のピクセルと白のピクセルの「座標」だけが必要です。私はいくつかの調査を行い、次のサイトが興味深いことを発見しました。
サイトI、サイトII
2番目のサイトは洗練されていますが、そこに投稿されたコードは理解できます。最初のものははるかに複雑なようです(そしてWindowsでのみ動作しますが、私はそれを避けようとします)、2番目のものはBorland固有のヘッダーであるvcl.hを使用しています(私はVisualStudioを使用しています)。ヘルプ、提案、またはそのトピックをカバーするサイトへのリンクをいただければ幸いです。
PS:私が質問した方法が気に入らない場合は、これが私の最初の投稿です。追加情報が必要な場合はお問い合わせください。
これがあなたの助けに感謝するコードです。
// read_and_send_bmp.cpp
#include <iostream><\code>
#include <string>
#include "bitmap_image.hpp"
using std::string;
using std::cin;
using std::cout;
using std::endl;
char * check(string name_of_bitmap);
int main()
{
string name_of_bitmap;
cout << "Name of file: ";
cin >> name_of_bitmap;
char * toPrint = check(name_of_bitmap);
cout << endl << "this is the value of 'toPrint': "<< toPrint;
/* send
...
*/
system("PAUSE");
return 0;
}
char * check(string name_of_bitmap)
{
bitmap_image myBitMapImage(name_of_bitmap);
int size = myBitMapImage.pixel_count();
char * toReturn = new char[size+1];
for(int i = 0; i < myBitMapImage.pixel_count(); i++)
toReturn[i] = 'f';
int h = 1;
for(int j = 0, jlen = myBitMapImage.height(); j < jlen; j++)
{
for(int i = 0, ilen = myBitMapImage.width(); i < ilen; i++, h++)
{
if(myBitMapImage.red_channel(i, j) == 0 && myBitMapImage.green_channel(i, j) == 0 && myBitMapImage.blue_channel(i, j) == 0)
{
toReturn[(j)*myBitMapImage.width()+i] = 'b';
cout << "pixel nr." << (j)*myBitMapImage.width()+i << " = b" << endl;
}
else
{
toReturn[(j)*myBitMapImage.width()+i] = 'w';
cout << "pixel nr." << (j)*myBitMapImage.width()+i << " = w" << endl;
}
}
}
toReturn[size]='\0';
return toReturn;
}