我成功使用酷炫的FreeImage库加载各种格式的图像。
其中,gif和png具有透明度信息。
加载图像后,我使用FreeImage_ConvertToRawBits
将它们转换为32bpp。使用我的png图像,这个工作正常,我可以检索所有四个具有有意义的Alpha值的红色/绿色/蓝色/ Alpha组件。
使用gif图像,相反,即使FreeImage_IsTransparent
表示正确,Alpha平面仍然全部为255。
我错过了什么?这与GIF调色板的事实有关吗?我该如何处理?
答案 0 :(得分:2)
通过查看源代码我找到了一个明确的答案:将调色图像转换为32位时,透明度未处理。 Alpha字段始终设置为255。
无论如何,很有可能逐个像素地从原始的调色板位图中检索透明度,知道透明颜色的值(FreeImage_GetTransparentIndex(dib)
)。