2015-05-11 5 views
0

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

if (requestCode == REQUEST_PICK_IMAGE_FROM_GALLERY) { 

      Uri selectedImg = data.getData(); 
      String[] filePath = {MediaStore.Images.Media.DATA}; 
      Cursor c = getActivity().getContentResolver().query(selectedImg, filePath, null, null, null); 
      c.moveToFirst(); 
      int columnIndex = c.getColumnIndex(filePath[0]); 
      String picturePath = c.getString(columnIndex); 
      bitmap = BitmapFactory.decodeFile(picturePath,options); 
      mUserProfileImage.setImageBitmap(bitmap); 
    } 

ответ

0
Bitmap realImage; 
     final BitmapFactory.Options options = new BitmapFactory.Options(); 
      options.inSampleSize = 5; 

      options.inPurgeable=true;     

      options.inInputShareable=true;    


     realImage = BitmapFactory.decodeByteArray(data,0,data.length,options); 
     ExifInterface exif = null; 
     try { 
      exif = new ExifInterface(path + c.getTime().getSeconds() 
        + ".jpg"); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     try { 
      Log.d("EXIF value", 
        exif.getAttribute(ExifInterface.TAG_ORIENTATION)); 
      if (exif.getAttribute(ExifInterface.TAG_ORIENTATION) 
        .equalsIgnoreCase("1")) { 
       realImage = rotate(realImage, 90); 
      } else if (exif.getAttribute(ExifInterface.TAG_ORIENTATION) 
        .equalsIgnoreCase("8")) { 
       realImage = rotate(realImage, 90); 
      } else if (exif.getAttribute(ExifInterface.TAG_ORIENTATION) 
        .equalsIgnoreCase("3")) { 
       realImage = rotate(realImage, 90); 
      } else if (exif.getAttribute(ExifInterface.TAG_ORIENTATION) 
        .equalsIgnoreCase("0")) { 
       realImage = rotate(realImage, 90); 
      } 
     } catch (Exception e) { 

     } 

     image.setImageBitmap(realImage); 
+0

hi devcelebi, это «данные», были возвращены данные в onActivityResult и что такое «ExifInterface» и «c»? Спасибо за быстрый ответ. –

+0

Exifinterface для orient.c - это имя файла. Если вам не нужен элемент управления ориентацией, вы не будете писать exif.You можете попытаться использовать bitmapfactory.options в этом коде – devcelebi

1
if(selectedImg!=null) { c = getActivity().getContentResolver().query(selectedImg, filePath, null, null, null); }else{ Toast.makeText(mContext,"This image does not exiest in device",Toast.LENGTH_SHORT).show(); return; } f = new File(picturePath); 

mUserProfileImage.setImageBitmap (BitmapFactory.decodeFile (путь, опционы)); // Вызов этого после скопированного изображения и удалить, а затем после

if (f != null) { 
     f.delete(); // previously i set f in imageView and already handled NPE, so no crash appeared. 
    } 

Я получил решение проблемы, когда я захват изображения с камеры, он получил хранящийся в temp.png, и я скопировать этот файл в каком-либо другой path и удалите temp.png. Поэтому, когда я снова пытаюсь установить удаленное изображение, оно не устанавливается, и я также обрабатывал NEP.

Я отлаживал и исправлял код. :)

+0

Это нормально, чтобы ответить на ваш собственный вопрос, но опубликовать полное решение, которое описывает именно то, что вы сделали, чтобы исправить эту проблему, и включите все изменения кода, которые вы сделали, чтобы заставить его работать. –

Смежные вопросы