bmp文件,访问数据

时间:2013-12-29 13:50:46

标签: c++ image-processing

这是一个bmp文件头:

    unsigned char header[54] = {
    0x42,        // identity : B
    0x4d,        // identity : M
    0, 0, 0, 0,  // file size
    0, 0,        // reserved1
    0, 0,        // reserved2
    54, 0, 0, 0, // RGB data offset
    40, 0, 0, 0, // struct BITMAPINFOHEADER size
    0, 0, 0, 0,  // bmp width
    0, 0, 0, 0,  // bmp height
    1, 0,        // planes
    24, 0,       // bit per pixel
    0, 0, 0, 0,  // compression
    0, 0, 0, 0,  // data size
    0, 0, 0, 0,  // h resolution
    0, 0, 0, 0,  // v resolution 
    0, 0, 0, 0,  // used colors
     0, 0, 0, 0   // important colors
  };

现在,我如何访问.bmp文件中的数据并将它们存储到数组中?

1 个答案:

答案 0 :(得分:0)

位图标题是文件中的一个部分,用于保存有关图像和位图类型的信息。如果要读取24位位图文件的各个像素,可以从标题中收集有关其大小的信息,然后使用它来遍历文件并获取数据。

从标题中,您可以清楚地看到像素数据从文件中的位置54开始。这是一个24位位图,因此每个像素由3个字节表示。

您还需要考虑填充。如果位图的宽度不能被4整除,则添加填充字节。 +更正:如果宽度*(每像素字节数)不能被4整除。

如果您真的想要查看位图的结构,并在编写代码时更容易可视化,请获取十六进制编辑器并创建小位图文件并在十六进制编辑器中打开它们。您可以看到字节的排列方式以及标题开头和结尾的位置,以及其他信息。