在 C++ 中使用 BMP 文件,Ubuntu

Woking With BMP File in C++, Ubuntu

我正在尝试使用 g++ 编译器在 linux 中处理 bmp 文件。我正在使用C++语言。

我需要从标准输入加载一个.bmp 文件。例如:

./a.out < test.bmp

所以我需要一个代码来完成这项工作。我认为存储整个 .bmp 文件很好,但我不知道该怎么做。

我试过这段代码,但没有成功:

vector<int> bitmap;
int b;
while ( cin >> b ) {
    bitmap.push_back(b);
    cout << "!" << endl;
}

那么我应该怎么做呢?

cin >> b 以文本模式读取文件,这不适用于二进制文件。使用这样的东西:

 ifstream myFile ("test.bmp", ios::in | ios::binary);

打开文件流,然后

if (!myFile.read (buffer, 100)) {
    // do thomething with data in buffer
}

我找到了一个正确的答案。 此代码从标准输入的 *.bmp 文件中读取 bmp_info_header:

char bmpHeader[54];
cin.get(bmpHeader, 54);

cin.get() 中的“54”告诉系统接受输入中最多 54 个数字并忽略其他数字。

现在,例如,如果我们想要查找 *.bmp 大小,我们应该使用此代码:

int filesize = *((int*)(headers + 2));