BitmapFactory.decodeFile()返回null

时间:2016-05-28 03:36:35

标签: android bitmap bitmapfactory

的Manifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature
    android:name="android.hardware.camera2"
    android:required="true" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

按钮OnClickListner

button.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
          getFileUri();
          i.putExtra(MediaStore.EXTRA_OUTPUT, file_uri);
          startActivityForResult(i, 10);
      }
});

getFileUri()

private void getFileUri() {
    image_name = "testing123.jpg";
    file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
            + File.separator + image_name);
    file_uri = Uri.fromFile(file);
}

OnActivityResult()

if(requestCode == 10 && resultCode == RESULT_OK){
    bitmap = BitmapFactory.decodeFile(file_uri.getPath());
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);

    byte[] array = stream.toByteArray();
    encoded_string = Base64.encodeToString(array, 0);
}

首先,有许多类似的问题,但没有一个适用于我的情况。

我试图在拍照后将图像发送到我的服务器,但我遇到了BitmapFactory.decodeFile()的问题。问题是它返回null,即使我的图库中存在拍摄的图片。我认为真正的问题是我的照片大小;它通常在3.0 MB到5.0 MB之间。但是,我无法确定,因为它没有告诉我为什么它不能被解码。

代码来自:https://www.youtube.com/watch?v=dV46_-AS4Pg

1 个答案:

答案 0 :(得分:0)

尝试使用以下代码

找到媒体存储的绝对Uri
 Cursor c=getContentResolver().query(file_uri.getData(),new String[]{MediaStore.Images.Media.DATA},null,null,null);
c.moveToFirst();
    String path=c.getString(c.getColumnIndex(MediaStore.Images.Media.DATA));

    BitmapFactory.decodeFile(path);