我是一个完全的初学者。我会尽力解释自己。
int i, j;
string filename;
cout << "Please enter the file name: " << endl;
cin >> filename;
fstream stream;
stream.open(filename.c_str(),
ios::in|ios::out|ios::binary);
int file_size = get_int(stream, 2);
int start = get_int(stream, 10);
int width = get_int(stream, 18);
int height = get_int(stream, 22);
这部分应该得到文件及其值。
for ( i = 0; i < height; i++ )
{
for ( j = 0; j < width; j++)
{
for (int k = 0; k < split*split; k++){
int pos = stream.tellg();
int blue = stream.get();
int green = stream.get();
int red = stream.get();
这到达每个像素内部并获得RBG值。
我想要的是先将RBG值存储到2D数组中,然后对该数组进行一些操作。然后我想创建一个带有被操纵图像的新文件。
我不知道所以一些说明和一些代码会非常有用。
答案 0 :(得分:0)
这个库非常易于使用http://easybmp.sourceforge.net/。加载文件后,U可以轻松检查RGB值。
答案 1 :(得分:0)
许多地方都记录了Bmp文件格式。例如,on wikipedia。
最简单的方法是实现描述bmp标头的结构,并一次读取整个结构,然后读取单个像素。
您的阅读功能已损坏且无法正常运行,因为您没有读取文件签名 - 标题的“BM”字段。
在某些操作系统上,所有已经存在用于读取BMP的条带和功能。在Windows上,有BITMAPFILEHEADER。使用这些结构意味着您不使用“纯C ++”。
如果你还想自己阅读BMP,请阅读msdn文章aboud bmp或谷歌阅读“阅读bmp文件”教程。