2013-03-08 76 views
1

這是一個簡單的問題,但我似乎無法在文檔中的任何地方找到答案。我知道FreeImage支持1, 4, 8, 16, 24, and 32+ bit圖片。但除此之外,文檔中提到16 bit圖像可以是555565格式。我想知道其他圖像位深度存儲爲什麼格式?或者如果格式是任意的,是否有辦法從FreeImage庫中動態地檢索格式?獲取FreeImage像素的數據格式?

+0

當然,你可以看看代碼。它可用。 – 2013-03-08 11:27:26

回答

0

這是很容易確定的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()功能轉換成你想要的格式。