【问题标题】:BitmapFactory.decodeFile() returns nullBitmapFactory.decodeFile() 返回 null
【发布时间】:2016-05-28 03:36:34
【问题描述】:

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

【问题讨论】:

  • 通过在logcat中打印值检查file_uri是否为空
  • 其实我试过了,路径正常。

标签: android bitmap bitmapfactory


【解决方案1】:

尝试通过应用以下代码找到媒体存储的绝对 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);

【讨论】:

    猜你喜欢
    • 2016-10-17
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多