Получить формат данных пикселей FreeImage?

Это простой вопрос, но я не могу найти ответ где-нибудь в документации. Я знаю, что FreeImage поддерживает 1, 4, 8, 16, 24, and 32+ bit изображений. Но кроме того, в документации упоминается, что 16 bit изображения могут быть в любом 555 или же 565 формат. Я хотел бы знать, в каких форматах хранятся другие битовые глубины изображения? или если форматы произвольны, есть ли способ динамически извлечь формат из библиотеки FreeImage?

1

Решение

Очень легко определить режим 555 против 565 в 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
}
}

И вы всегда можете использовать FreeImage_ConvertTo16Bits555() а также FreeImage_ConvertTo16Bits565() функции для преобразования в формат, который вы хотите.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]