민프

[Android] 프로필 사진을 만들어보자!!(카메라, 앨범, 사진CROP) 본문

[Android]

[Android] 프로필 사진을 만들어보자!!(카메라, 앨범, 사진CROP)

민프야 2021. 7. 3. 20:09

 

일단 프로필 사진 CROP에 필요한 라이브러리를 찾아보았는데

https://ourcodeworld.com/articles/read/930/top-10-best-android-image-cropping-crop-widget-libraries

https://github.com/ArthurHub/Android-Image-Cropper 

 

ArthurHub/Android-Image-Cropper

Image Cropping Library for Android, optimized for Camera / Gallery. - ArthurHub/Android-Image-Cropper

github.com

이 라이브러리를 사용해서 진행하였다.

진행 순서는 
1. Manifest에 해당 라이브러리에 대한 내용 추가
2. Graddle에 해당 라이브러리에 대한 내용 추가

3. 해당 라이브러리의 실행을 위한 JAVA 코드 넣기

4. 선택한 사진의 Result값이 잘 들어오는지 LOG로 확인

5. 선택한 사진이 프로필 사진ImagaView에 잘 적용이 되는지 확인

그럼 이 진행순서로 진행해보겠슴다~

 

1. menifest에 해당 라이브러리에 대한 내용 추가

        <activity
            android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
            android:theme="@style/Base.Theme.AppCompat" />

2. Graddle에 해당 라이브러리에 대한 내용 추가

    implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.+'//이미지 크롭

3. 해당 라이브러리의 실행을 위한 JAVA 코드 넣기

   //프로필 이미지 관련
   ImageView acti_edit_myprofile_user_img = findViewById(R.id.acti_edit_myprofile_user_img);
   requestPermission();
   
        //권한 부여 받기
     private void requestPermission(){
        PermissionListener permissionListener = new PermissionListener() {
            @Override
            public void onPermissionGranted() {
                onSelectImageClick(acti_edit_myprofile_user_img);
            }

            @Override
            public void onPermissionDenied(List<String> deniedPermissions) {

            }
        };
        TedPermission.with(this)
                .setPermissionListener(permissionListener)
                .setRationaleMessage("사진을 추가하기 위해서는 권한 설정이 필요합니다.")
                .setDeniedMessage("[설정] > [권한] 에서 권한을 허용할 수 있습니다..")
                .setPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA
                        ,Manifest.permission.WRITE_EXTERNAL_STORAGE)
                .check();
    }//requestPermission()     
        
        
    
            /** Start pick image activity with chooser. */
    public void onSelectImageClick(View view) {
        CropImage.activity(null).setGuidelines(CropImageView.Guidelines.ON).start(this);
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
            CropImage.ActivityResult result = CropImage.getActivityResult(data);
            Log.d(TAG+ " onActivityResult", String.valueOf(result));
            //크롭 성공시
            if (resultCode == RESULT_OK) {
                acti_edit_myprofile_user_img = findViewById(R.id.acti_edit_myprofile_user_img);
                acti_edit_myprofile_user_img.setImageURI(result.getUri());

                //실패시
            } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {

            }
        }
    }

4. 선택한 사진의 Result값이 잘 들어오는지 LOG로 확인

D/activity_edit_myProfile onActivityResult: com.theartofdev.edmodo.cropper.CropImage$ActivityResult@c9ef640

5. 선택한 사진이 프로필 사진ImagaView에 잘 적용이 되는지 확인

 

잘 적용 되는 것을 확인할 수 있다~~~

다음 포스팅에서는 
해당하는 프로필 사진을 
Bimap -> String으로 해서 DB에 저장해봐야겠다~

Comments