1

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

我究竟做错了什么?

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);
4

1 回答 1

8

inJustDecodeBounds向您添加选项就是这样BitmapFactory做的;它仅解码 的大小并将该数据加载回选项对象的和。它不会解码实际数据并将其返回给您。BitmapoutHeightoutWidthBitmap

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

于 2012-07-13T20:19:42.160 回答