如何使用 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 匹配项。
希望对您有所帮助
我有一个 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 匹配项。
希望对您有所帮助