Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何确定BMP图像是否包含来自标题的BGR或BGRA像素?_C++_Bmp - Fatal编程技术网

C++ 如何确定BMP图像是否包含来自标题的BGR或BGRA像素?

C++ 如何确定BMP图像是否包含来自标题的BGR或BGRA像素?,c++,bmp,C++,Bmp,我不知道如何确定BMP图像是否包含BGR或BGRA颜色。我写了一个简单的BMP阅读器,但在不同的图像上有不同的值 我已经找到了两个选择 简单BGR 255、255、255 第四个值是0 255,255,255,0 有没有办法从位图信息头中找出哪个选项?位图文件的前54个字节是头。读取包含位图的宽度和高度以及BIBITCUNT的内容 对于32位4字节图像,biBitCount为32 BGRA 对于24位3字节图像,biBitCount为24 BGR 对于基于调色板的位图,biBitCount也可以

我不知道如何确定BMP图像是否包含BGR或BGRA颜色。我写了一个简单的BMP阅读器,但在不同的图像上有不同的值

我已经找到了两个选择

简单BGR 255、255、255 第四个值是0 255,255,255,0
有没有办法从位图信息头中找出哪个选项?

位图文件的前54个字节是头。读取包含位图的宽度和高度以及BIBITCUNT的内容

对于32位4字节图像,biBitCount为32 BGRA 对于24位3字节图像,biBitCount为24 BGR


对于基于调色板的位图,biBitCount也可以是16位或8、4、1。

位图文件中的前54个字节是头。读取包含位图的宽度和高度以及BIBITCUNT的内容

对于32位4字节图像,biBitCount为32 BGRA 对于24位3字节图像,biBitCount为24 BGR


biBitCount也可以是16位,对于基于调色板的位图,可以是8、4、1。

很复杂:很复杂:我从某个Microsoft网站下载了一张8位BMP的示例图片。我试着读那张图片,每四分之一像素的颜色是0。这怎么可能?它不能是BGR,因为第一、第二和第三种颜色匹配。8位位图256色有调色板。调色板大小为1024字节256色*4字节。像素在54+1024之后开始,这些像素不是BGR值,而是调色板的索引。在这种情况下,每个像素仅为1字节。我从一些微软网站下载了一张8位BMP的示例图片。我试着读那张图片,每四分之一像素的颜色是0。这怎么可能?它不能是BGR,因为第一、第二和第三种颜色匹配。8位位图256色有调色板。调色板大小为1024字节256色*4字节。像素在54+1024之后开始,这些像素不是BGR值,而是调色板的索引。在这种情况下,每个像素仅为1字节