2

我成功地使用了很酷的 FreeImage 库来加载各种格式的图像。

其中,带有透明度信息的 gif 和 png。

加载图像后,我使用FreeImage_ConvertToRawBits. 使用我的 png 图像,这工作正常,我可以检索所有四个具有有意义 Alpha 值的红色/绿色/蓝色/Alpha 分量。

相反,对于 gif 图像,Alpha 平面仍然是所有 255,即使FreeImage_IsTransparent说的是真的。

我错过了什么?这与 gif 被调色的事实有关吗?我该如何处理?

4

1 回答 1

2

我通过查看源代码找到了一个明确的答案:将调色图像转换为 32 位时不处理透明度。Alpha 字段始终设置为 255。

无论如何,很可能从原始调色位图中逐个像素地检索透明度,知道透明颜色的值 ( FreeImage_GetTransparentIndex(dib))。

于 2013-02-19T15:08:26.207 回答