代码之家  ›  专栏  ›  技术社区  ›  Azmisov

获取FreeImage像素数据格式?

  •  1
  • Azmisov  · 技术社区  · 12 年前

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

    1 回复  |  直到 12 年前
        1
  •  0
  •   Sergey K.    11 年前

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