如何使用 C 程序将 .bmp 图像转换为字节数组

How to convert a .bmp image into Byte array using C Program

我有一个 1280 x 720 像素的 .bmp 文件,我想将其加载到声明如下的 image2 中:

uint8_t *imageByte=NULL;

image2 是一个名为 home1.bmp

的文件

我想读取 bmp 文件并将 .bmp 图像转换为字节数组 imageByte,我将使用它与 home.bmp

进行比较

我对 c 编程比较陌生,所以任何人都可以告诉我我应该如何使用它?谢谢! 这是我的 bmp 图像比较代码的一部分,它将比较 image1 和 image2

# define BYTES_PER_PIXEL 4
# define BITMAP_HEADER 54
 int temp_width = 1280;
 int temp_height = 720;
 int temp_x = 0;
 int temp_y = 0;
 uint8_t k = 0;
 char* image1= "E:\home.bmp";
 fp = fopen(image,"rb"); 
 fseek(fp, 0, SEEK_SET);
fseek(fp, BITMAP_HEADER, SEEK_SET);
for(temp_y=0; temp_y<temp_height; temp_y++)
{
    temp_x = 0; 

    for(temp_x=0; temp_x < (temp_width * BYTES_PER_PIXEL); temp_x++)
    {
        int read_bytes = fread(&k, 1, 1, fp);
        if(read_bytes != 0)
        {
            if(k != imageByte[temp_x])
            {

                printf("CompareImage :: failed \n");
                fclose(fp);

            }
        }
        else
        {
           printf("CompareImage :: read failed \n");
        }
    }
}
 printf("CompareImage :: passed \n");

如上所述,BMP文件以 1] 一个文件 header,提供有关文件的信息,如大小 ..etc 2] BMP 信息 header 提供有关 BMP 属性的更多信息 这些结构具有固定大小

以下link 似乎是您的完美参考 http://paulbourke.net/dataformats/bmp/

您应该能够摆脱在大多数情况下成本很高的逐字节比较,只需从头读取两个 header 结构并进行比较。 仅逐字节比较 headers 匹配项。

希望对您有所帮助