【发布时间】:2015-01-24 12:22:49
【问题描述】:
我尝试使用 FreeImage 库将 PNG 作为纹理加载(从内存中)。这是代码片段:
FIMEMORY *fiStream = FreeImage_OpenMemory(streamData, size);
FREE_IMAGE_FORMAT fileFormat = FreeImage_GetFileTypeFromMemory(fiStream, 0);
FIBITMAP *image = FreeImage_LoadFromMemory(fileFormat, fiStream, 0);
int bitsPerPixel = FreeImage_GetBPP(image);
width = (int)FreeImage_GetWidth(image);
height = (int)FreeImage_GetHeight(image);
我正在使用 FILE 和 fopen 打开文件,然后将流读取到 streamData 对象。文件和流被正确读取。
结果是:fileFormat = -1,image 为 NULL。
我也尝试使用 FreeImage 通过 FreeImage_Load 直接从磁盘加载 PNG 文件,但结果是一样的 - 它返回 NULL。
有人遇到过类似的问题吗?你能推荐一个可以从内存中读取数据的 FreeImage 替代品吗?
【问题讨论】:
-
你解决了吗?我在这里有类似的问题:stackoverflow.com/questions/42120978/…
-
@user7428910 实际上我们更改了处理 png 的库。无法使其与 FreeImage 一起使用
标签: android opengl-es android-ndk texture2d freeimage