Android 无法在ImageView中显示图像

Android 无法在ImageView中显示图像,android,imageview,gallery,Android,Imageview,Gallery,我从图库中选取图像并在ImageView上显示图像。我能成功地做这件事。我的问题是,当我尝试设置从相机捕获的图像(.jpg图像)时,它们不会显示在imageview中,只是出现了一个空白屏幕。即使是.jpg类型的图像也能成功地显示出来,而这些图像并不是从相机上拍摄的。无法理解原因,可能是因为尺寸较大。请帮忙 以下是我的代码: public class ImagePick extends Activity { private Bitmap bitmap; private ImageView im

我从图库中选取图像并在ImageView上显示图像。我能成功地做这件事。我的问题是,当我尝试设置从相机捕获的图像(.jpg图像)时,它们不会显示在imageview中,只是出现了一个空白屏幕。即使是.jpg类型的图像也能成功地显示出来,而这些图像并不是从相机上拍摄的。无法理解原因,可能是因为尺寸较大。请帮忙 以下是我的代码:

public class ImagePick extends Activity {

private Bitmap bitmap;
private ImageView imv;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_upload);
imv = (ImageView) findViewById(R.id.targetimage);

  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  intent.setType("image/*");
  startActivityForResult(intent, 0);

}


protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

     switch(requestCode) {
     case 0:
         if(resultCode == RESULT_OK){ 
             Uri selectedImage = imageReturnedIntent.getData();
             String[] filePathColumn = {MediaStore.Images.Media.DATA};

             Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
             cursor.moveToFirst();

             int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
             String filePath = cursor.getString(columnIndex); // file path of selected image
             cursor.close();
                   //  Convert file path into bitmap image using below line.
             Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);

                   // put  bitmapimage in your imageview
             imv.setImageBitmap(yourSelectedImage);
         }
     }
}
}

提前感谢

您需要使用FileInputStream和BufferedInputStream读取图像,然后将图像转换为位图

    private FileInputStream is = null;
    private BufferedInputStream bis = null;


is = new FileInputStream(new File(imagePath));
        bis = new BufferedInputStream(is);
同时检查

谢谢,而不是:

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex); // file path of selected image
尝试:

并在位图解码后关闭光标


请记住,对SD卡的访问应该在异步任务中完成。你可以调整图像大小以适应屏幕,这样你就不会占用很多内存,看看我的另一个答案。关于如何做到这一点。

我该如何使用这些工具?你能解释一下吗?或者给我一些代码
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);