Установить ImageView из Uri

private File createImageFile() {
        File picturesDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
        String timeStamp = sdf.format(new Date());

        File imageFile = new File(picturesDirectory, "picture" + timeStamp +".jpg");

        SharedPreferences fileLocation = getSharedPreferences("filePath", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = fileLocation.edit();
        editor.putString("file", imageFile.toString());
        ImageView photoImg = (ImageView)findViewById(R.id.photoImg);
        photoImg.setImageURI(Uri.fromFile(imageFile));
        editor.commit();

        return imageFile;
    }

Я пытаюсь отобразить изображение, снятое с помощью камеры, однако после того, как снимок сделан, изображение не отображается в моем ImageView. Изображение определенно сохраняется, так как я могу просмотреть его в своей галерее.

Я посмотрел на stackoverflow, и ни один из ответов, похоже, у меня не работает, я пробовал использовать BitmapFactory, но это тоже не работает. Любой вклад будет очень признателен

Этот imageFile вообще существует? new File() не создает файл.

ADM 08.05.2018 20:06

Если URI действителен. Следуйте Этот ответ.

ADM 08.05.2018 20:07

Возникает ли исключение при запуске этого кода? Было бы полезно узнать, с чем мы имеем дело, если это так. Когда это происходит, проверьте logcat и посмотрите, сможете ли вы найти какие-либо ошибки или предупреждения, и дайте нам знать, если найдете что-нибудь подходящее.

Tharkius 08.05.2018 20:16

@ADM файл изображения существует по пути, поскольку он доступен в моей галерее, я также могу поделиться изображением через приложение, просто не могу заставить его отображать в просмотре изображения

lmthrn 08.05.2018 22:12
0
4
690
2

Ответы 2

Используйте код, это поможет вам

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) { 
        Bitmap photo = (Bitmap) data.getExtras().get("data");   
        imageView.setImageBitmap(photo); 
    }
} 
private void takePhotoFromCamera() {

        str_SaveFolderName = Environment.getExternalStorageDirectory() + "/folder_name";
        str_randomnumber = String.valueOf(Calendar.getInstance().getTimeInMillis());
        wallpaperDirectory = new File(str_SaveFolderName);
        if (!wallpaperDirectory.exists())
            wallpaperDirectory.mkdirs();
        str_Camera_Photo_ImageName = str_randomnumber + ".jpg";
        str_Camera_Photo_ImagePath = str_SaveFolderName + "/" + str_randomnumber + ".jpg";

        System.err.println(" str_Camera_Photo_ImagePath  " + str_Camera_Photo_ImagePath);

        f = new File(str_Camera_Photo_ImagePath);
        startActivityForResult(new Intent(
                MediaStore.ACTION_IMAGE_CAPTURE).
                putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)), Take_Photo);

    }

И onActivityResult () -

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == this.RESULT_CANCELED) {
            return;
        }

        if (requestCode == Take_Photo) {

            imageview.setImageBitmap(
                    decodeSampledBitmapFromResource(getResources(),
                            R.id.simpleImageView, 100, 100));
        }
}

Другие вопросы по теме