Android

Android Studio : 갤러리 사진 ImageView로 가져와서 보여주기

juju824 2020. 9. 28. 00:08

Q 어떤부분인가❓

 

Android Studio Programming을 하다보면 어떤 이미지 뷰에 갤러리 사진을 불러와서 띄우고 싶을 때가 있다.

👉 나같은 경우 갤러리 사진을 가져와서 내 정보 페이지 프로필 사진에 띄우는 경우

 

 

✔️ 우선, 내가 사진을 띄울 ImageView 가 무엇인지 알아야 한다

나의 ImageView는 Profile이라는 이름을 가진 친구였다

👇 MyprofileTab.java 👇

ImageView imageView = findViewById(R.id.profile);
//profile imageView 에 사진 넣는 경우

imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

     Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
     startActivityForResult(intent, REQUEST_CODE);

     }
});

 

이미지 뷰를 클릭하면 intent 실행

✔️ onActivityResult 함수로 넘어가게 된다

 

👇 onActivityResult 함수, 코드 아래에 추가해준다 👇

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
		//이미지 뷰를 클릭하면 시작되는 함수

        if(requestCode== REQUEST_CODE && resultCode==RESULT_OK && data!=null) {
        	//response에 getData , return data 부분 추가해주어야 한다
            
            selectedImage = data.getData();
            Uri photoUri = data.getData();
            Bitmap bitmap = null; 
            //bitmap 이용
            try {
                bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),photoUri);
                bitmap = rotateImage(bitmap, 90);
                //사진이 돌아가 있는 경우 rotateImage 함수 이용해서 사진 회전 가능
            } catch (IOException e) {
                e.printStackTrace();
            }
            
     		//이미지뷰에 이미지 불러오기 
            imageView.setImageBitmap(bitmap);

			//아래 커서 이용해서 사진의 경로 불러오기 
            Cursor cursor = getContentResolver().query(Uri.parse(selectedImage.toString()), null, null, null, null);
            assert cursor != null;
            cursor.moveToFirst();
            mediaPath = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
            Log.d("경로 확인 >> ", "$selectedImg  /  $absolutePath");

        }else{
            Toast.makeText(this, "사진 업로드 실패", Toast.LENGTH_LONG).show();
        }
    }

 

✔️ Bitmap 이용

이미지 관련한 코드들을 열심히 구글링 해보니 bitmap을 많이 이용하더라!

나같은 경우 이미지를 불러오면 사진이 돌아가 있어서 

이미지를 rotate해주는 코드도 따로 만들어줬다 👇👇

 

public static Bitmap rotateImage(Bitmap source, float angle) {
        Matrix matrix = new Matrix();
        matrix.postRotate(angle);
        return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(),
                matrix, true);
}

 

👾 이 세가지 코드를 같은 java file에 차곡차곡 쌓아준다면 이미지 보여주기 성공! 

 

강아지 사진을 불러왔다 ㅎ-ㅎ