获取FreeImage像素数据格式

Get FreeImage pixel data format?

本文关键字:数据格式 像素 FreeImage 获取      更新时间:2023-10-16

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

在FreeImage中很容易确定555 vs 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_ConvertTo16Bits555()FreeImage_ConvertTo16Bits565()函数将其转换为所需的格式。