2

Я хочу показать изображение, взятое из галереи, в изображение. Но этого не происходит. Я не понимаю, почему. Я могу использовать функцию камеры очень хорошо и видеть изображение в изображении с камеры, но не тот, который вы берете из галереи. Можете ли вы, ребята, помочь мне, пожалуйста?Как показать изображение из галереи в ImageView?

Вот мой код

protected Button mFromCamera; 
protected Button mFromGallery; 
protected ImageView mImageView; 

private static final int CAMERA_REQUEST = 1888; 
private static final int SELECT_PHOTO = 100; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    //Initialize ImageView 
    mImageView = (ImageView) findViewById(R.id.ImgPrev); 
    //Initialize Camera 
    mFromCamera = (Button) findViewById(R.id.FromCamera); 

    //use camera 
    mFromCamera.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_REQUEST); 
     } //use camera end 

    }); 

    //initialize button 
    mFromGallery = (Button) findViewById(R.id.FromGallery); 

    //pick a photo 
    mFromGallery.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      photoPickerIntent.setType("image/*"); 
      startActivityForResult(photoPickerIntent, SELECT_PHOTO); 
     } 
    });//pick a photo end 
} 



//previewing Image 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     //from the gallery 
     case SELECT_PHOTO: 
      if (requestCode == SELECT_PHOTO && resultCode == RESULT_OK && null!= data) { 
       Uri selectedImage = data.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 picturePath = cursor.getString(columnIndex); 
       cursor.close(); 

       mImageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
      } 
      break; 
     //from the camera 
     case CAMERA_REQUEST: 
      if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 
       Bitmap photo = (Bitmap) data.getExtras().get("data"); 
       mImageView.setImageBitmap(photo); 
      } 
      break; 
    } 
}//Preview Image End 

Единственная проблема, изображение, выбранное из галереи не отображается в ImageView. Я пробовал рассматривать случай для «SELECT_PHOTO» так же, как и с «CAMERA_REQUEST». и это тоже не сработало.

ответ

1

Возможно BitmapFactory.decodeFile(picturePath) не возвращается. Проверь это. И проверьте, если вы добавили разрешения в AndroidManifest.xml:

android.permission.WRITE_EXTERNAL_STORAGE 
android.permission.READ_EXTERNAL_STORAGE 

BitmapFactory.decodeFile (String Filepath) в документации: http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeFile(java.lang.String)

возвраты: полученных декодируются растровым или нулевых если путь равен null или не может быть декодирован.

+0

Я не знал, что мне нужно разрешение. позвольте мне проверить ...... –

+0

IT WORKED !!! СПАСИБО!!! Я потратил 3 часа на это. Я чувствую себя глупым. лол –

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