Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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++ 获取免费图像像素数据格式?_C++_Freeimage - Fatal编程技术网

C++ 获取免费图像像素数据格式?

C++ 获取免费图像像素数据格式?,c++,freeimage,C++,Freeimage,这是一个简单的问题,但我似乎无法在文档中找到答案。我知道FreeImage支持1、4、8、16、24和32位以上的图像。但除此之外,文档还提到,16位图像可以是555或565格式。我想知道其他图像位深度存储为什么格式?或者,如果格式是任意的,是否有办法从FreeImage库中动态检索格式?在FreeImage中很容易确定555与565模式: unsigned red_mask, green_mask, blue_mask; red_mask = FreeImage_GetRedMask(dib)

这是一个简单的问题,但我似乎无法在文档中找到答案。我知道FreeImage支持
1、4、8、16、24和32位以上的图像。但除此之外,文档还提到,
16位
图像可以是
555
565
格式。我想知道其他图像位深度存储为什么格式?或者,如果格式是任意的,是否有办法从FreeImage库中动态检索格式?

在FreeImage中很容易确定555与565模式:

unsigned red_mask, green_mask, blue_mask;
red_mask = FreeImage_GetRedMask(dib);
green_mask = FreeImage_GetGreenMask(dib);
blue_mask = FreeImage_GetBlueMask(dib);
if (FreeImage_GetBPP(dib) == 16)
{
   if ((red_mask == FI16_565_RED_MASK) && 
       (green_mask == FI16_565_GREEN_MASK) &&
       (blue_mask == FI16_565_BLUE_MASK))
   {
      // We are in RGB16 565 mode
   }
   else
   {
      // We are in RGB16 555 mode
   }
}

您可以始终使用
FreeImage\u convertto16bit555()
FreeImage\u convertto16bit565()
函数来转换为所需的格式。

当然,您可以查看代码。有空。