我遇到了BitmapFactory.decodeFileDescriptor返回空位图的问题。 提供的文件描述符来自:
AssetManager.openFd("test.png").getFileDescriptor();
路径正确,文件存在,没有抛出异常,FileDescriptor.Valid()返回true。
我看过的其他代码示例似乎没有这个问题。
这让我很难过,我不知道该如何从这里开始。 有什么想法吗?
答案 0 :(得分:4)
我遇到了同样的问题。首先,我将FileInputStream.getFD和BitmapFactory.decodeFileDescriptor放在不同的线程中,它返回null。
PhotoDecodeTask task = new PhotoDecodeTask();
task.execute(new FileInputStream(filePath).getFD());
private class PhotoDecodeTask extends AsyncTask<FileDescriptor,Integer,Bitmap>{
@Override
protected Bitmap doInBackground(FileDescriptor... params) {
...
return BitmapFactory.decodeFileDescriptor(params[0],null, opts);
}
}
我试着把它们放在同一个帖子里,我的作品。但我不知道为什么。
PhotoDecodeTask task = new PhotoDecodeTask();
task.execute(filePath);
private class PhotoDecodeTask extends AsyncTask<String,Integer,Bitmap>{
@Override
protected Bitmap doInBackground(String... params) {
...
FileDescriptor fd = new FileInputStream(params[0]);
return BitmapFactory.decodeFileDescriptor(fd,null, opts);
}
}
答案 1 :(得分:1)
我遇到了同样的问题。我必须按如下方式更改我的代码:
InputStream imgFile = context.getAssets().open(imagePath);
BitmapFactory.decodeStream(imgFile);
所以我没有使用BitmapFactory.decodeFileDescriptor,而是使用了decodeStream。