Загрузка изображений с прозрачностью под FreeImage

Я успешно использую классную библиотеку FreeImage для загрузки изображений в различных форматах.

Среди них GIF и PNG с прозрачностью информации.

После загрузки изображений я конвертирую их в 32bpp используя FreeImage_ConvertToRawBits, С моими png-изображениями это работает нормально, и я могу получить все четыре компонента Red/Green/Blue/Alpha со значимыми значениями Alpha.

С изображениями GIF, напротив, Альфа-плоскость остается все 255, хотя FreeImage_IsTransparent говорит правда.

Что мне не хватает? Связано ли это с тем, что GIF-файлы палитрированы? Как мне справиться с этим?

1 ответ

Решение

Я нашел четкий ответ, посмотрев на исходный код: прозрачность не обрабатывается при преобразовании палитризованного изображения в 32 бита. Поле Alpha всегда установлено на 255.

В любом случае, вполне возможно получить прозрачность из исходного растрового изображения с палитрой, пиксель за пикселем, зная значение прозрачного цвета (FreeImage_GetTransparentIndex(dib)).

Другие вопросы по тегам