【问题标题】:FreeImage problems on Android (NDK)Android (NDK) 上的 FreeImage 问题
【发布时间】: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 替代品吗?

【问题讨论】:

标签: android opengl-es android-ndk texture2d freeimage


【解决方案1】:

尝试使用此代码从内存中加载图像:

File file = new  File("/sdcard/Images/image1.jpg");

if(file.exists()){
    Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
    ImageView image = (ImageView) findViewById(R.id.imageview);
    image.setImageBitmap(bitmap);
}

【讨论】:

  • 感谢您的快速回答,而是寻找纯原生解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多