decodeFile返回现有文件的null位图

时间:2012-07-13 15:42:46

标签: android bitmapfactory

我已经尝试了在stackoverflow上找到的所有解决方案来解决这个问题,但是徒劳无功。在运行以下代码时,mAlbumPhotoUri是“/mnt/sdcard/photo/1342147146535.jpg”,它是Uri类型。 file.exists()表示此文件存在,但执行最后一行代码后resultBitmap为null。

我做错了什么?

File file = new File(mAlbumPhotoUri.toString());
if(file.exists()){
   Toast.makeText(this, "File exists in /mnt", Toast.LENGTH_LONG);}
else {
Toast.makeText(this, "File NOT exists in /mnt", Toast.LENGTH_LONG);}

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true; //only get the size of the bitmap                

if (resultPhotoBitmap != null) {
    resultPhotoBitmap.recycle();
    }
String fname=new File(mAlbumPhotoUri.toString()).getAbsolutePath();
resultPhotoBitmap = BitmapFactory.decodeFile(fname, options);

1 个答案:

答案 0 :(得分:8)

inJustDecodeBounds添加选项BitmapFactory ;它只解码Bitmap的大小,并将该数据加载回选项对象的outHeightoutWidth。它不会解码实际的Bitmap并将其返回给您。

如果您想真正获得Bitmap本身,请删除该选项并再次致电decodeFile()