본문 바로가기
Front-end/Android (안드로이드 앱 개발)

Android Studio , 사진 가져오기 , Glide

by javapp 자바앱 2021. 1. 8.
728x90

휴대폰 내 사진첩에서 사진을 가져와서

Glide 을 적용하여 사진 형태를 원 형태로 보여주려고 한다.

 

 

 


1.

종속성 설정

dependencies {
    implementation 'com.github.bumptech.glide:glide:4.11.0'
    // Skip this if you don't want to use integration libraries or configure Glide.
    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}

 

2.

권한 설정

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

 

3.

<java 코드>

로컬 사진첩으로 넘어간다.

    private int GALLEY_CODE = 10;
    /...
                Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setType(MediaStore.Images.Media.CONTENT_TYPE);

                startActivityForResult(intent,GALLEY_CODE);

 

4.

절대 경로 구하기

android에서 api로 사진의 절대경로를 구할 수 없기 때문에 손코딩을 해야된다.

    //절대경로를 구한다.
    private String getRealPathFromUri(Uri uri)
    {
        String[] proj=  {MediaStore.Images.Media.DATA};
        CursorLoader cursorLoader = new CursorLoader(this,uri,proj,null,null,null);
        Cursor cursor = cursorLoader.loadInBackground();

        int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String url = cursor.getString(columnIndex);
        cursor.close();
        return  url;
    }

 

5.

사진 고른 후 돌아오는 코드
로컬 파일에서 업로드

ivProfile = (ImageView)findViewById(R.id.iv_profile);

    private String imageUrl="";
    private ImageView ivProfile;
    
	@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        if(requestCode == GALLEY_CODE)
        {
            imageUrl = getRealPathFromUri(data.getData());
            RequestOptions cropOptions = new RequestOptions();
            Glide.with(getApplicationContext())
                    .load(imageUrl)
                    .apply(cropOptions.optionalCircleCrop())
                    .into(ivProfile);
        }

        super.onActivityResult(requestCode, resultCode, data);
    }

.load(url) --> 사진의 절대 경로

.apply(cropOptions.optionalCircleCrop()) --> 원형태

.into(ivProfile); --> imageView 에 출력

 

 

Glide

댓글