【问题标题】:Get FreeImage pixel data format?获取 FreeImage 像素数据格式?
【发布时间】:2013-07-03 23:37:22
【问题描述】:

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

【问题讨论】:

  • 当然,你可以看看代码。它可用。

标签: c++ freeimage


【解决方案1】:

在 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_ConvertTo16Bits555()FreeImage_ConvertTo16Bits565() 函数转换为您想要的格式。

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2021-10-19
    • 2013-11-06
    • 1970-01-01
    相关资源
    最近更新 更多