2013-03-08 3 views
1

C'est une question simple, mais je n'arrive pas à trouver la réponse nulle part dans la documentation. Je sais que FreeImage supporte les images 1, 4, 8, 16, 24, and 32+ bit. Mais à côté de cela, la documentation mentionne que les images 16 bit peuvent être au format 555 ou 565. Je voudrais savoir quels formats les autres profondeurs de bit d'image sont stockées en tant que? ou si les formats sont arbitraires, existe-t-il un moyen de récupérer dynamiquement le format, à partir de la bibliothèque FreeImage?Obtenez le format de données de pixel FreeImage?

+0

Bien sûr, vous pourriez juste regarder dans le code. C'est disponible. –

Répondre

0

Il est très facile de déterminer 555 vs 565 dans le mode FreeImage:

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 
    } 
} 

Et vous pouvez toujours utiliser FreeImage_ConvertTo16Bits555() et FreeImage_ConvertTo16Bits565() fonctions pour convertir au format que vous désirez.

Questions connexes