用c++实现图像的高度和宽度

Height and Width of Image using C++

本文关键字:高度 c++ 实现 图像      更新时间:2023-10-16

是否有一种方法可以通过头文件或其他方式从*.bmp文件中找到高度和宽度?我目前使用的是Visual Studio 2010。我知道头文件是54字节。

我现在有这个:

ifstream image;
image.open("image.bmp",std::ios_base::binary);
if (image.is_open()) 
{
cout<< "function successn";
} 
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);

是否有一种方法可以通过循环提取相关信息?如果可以的话,我希望能举个例子。

BMP文件的BITMAPFILEHEADER后面紧跟着BITMAPINFOHEADER或BITMAPCOREINFO。

后两者包含位图的高度/宽度。

如果你想在Windows中这样做,我会使用Windows .h中那些结构的定义。如果你在Linux或其他地方做,你可以使用MSDN中的定义(并确保设置编译器以确保结构的字段之间没有打包)。

有了它,您可以读取结构,并读出您关心的部分。我想你可以找到正确的偏移量,然后从那里读取正确的字节数,但我要读取整个结构体。这很简单,而且无论哪种方式,您都将读取一个磁盘扇区,因此您不太可能获得速度或类似的东西。