有没有办法通过头文件或其他方式从* .bmp文件中查找高度和宽度?我目前正在使用Visual Studio 2010.我发现头文件是54个字节。
我目前有这个:
ifstream image;
image.open("image.bmp",std::ios_base::binary);
if (image.is_open())
{
cout<< "function success\n";
}
else
{
cout<< "unable to open file";
}
//get length of file:
image.seekg(0, image.end);
int n = image.tellg();
image.seekg (0, image.beg);
//allocate memory:
char* res = new char[n];
//read data as a block:
image.read(res, n);
有没有办法可以循环提取相关信息?如果可能,我会很感激。
提前致谢。
答案 0 :(得分:4)
BMP文件的BITMAPFILEHEADER后面紧跟BITMAPINFOHEADER或BITMAPCOREINFO。
后两者包含位图的高度/宽度。
如果你想在Windows中这样做,我会使用windows.h中这些结构的定义。如果您在Linux或其他地方进行此操作,则可以使用MSDN中的定义(并确保设置编译器以确保结构字段之间没有打包)。
有了这个,你可以阅读结构,并读出你关心的作品。我想你可以寻找正确的偏移,然后从那里读取正确的字节数,但我会读取整个结构。这很简单,无论哪种方式你都会读取一个磁盘扇区,所以你不太可能获得速度或类似的东西。