[Android] 불러온 Image Crop하기

Jinny·2021년 3월 1일
1

Android

목록 보기
13/32


Image crop하는 기능은 몇번 사용해봤었는데 사용하려고 하면 헷갈린다.
그래서 정리해놓기!!!

(Crop기능을 직접 구현하시는 분들도 있지만 저는 라이브러리를 사용할거지요옹)

👉 Image-cropper 라이브러리 사용하기

1. build.gradle에 라이브러리 추가하기

implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0

2. Manifest에 crop Activity 추가하기

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

3. cropImage 메서드 만들어주기

private fun cropImage(uri: Uri?){
	CropImage.activity(uri).setGuidelines(CropImageView.Guidelines.ON)
            .setCropShape(CropImageView.CropShape.RECTANGLE)
            //사각형 모양으로 자른다
            .start(this)
    }

4. 갤러리 열기 메서드에 intent.putExtra("crop", true) 추가하기

val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
intent.putExtra("crop", true) //기존 코드에 이 줄 추가!
intent.action = Intent.ACTION_GET_CONTENT

5. onActivityResult 구현하기

when (requestCode){
            PICK_IMAGE_FROM_ALBUM -> {
                data?.data?.let { uri ->
                    cropImage(uri) //이미지를 선택하면 여기가 실행됨
                }
                photoUri = data?.data
                imageView.setImageURI(photoUri)
            }
            CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE -> {
            //그후, 이곳으로 들어와 RESULT_OK 상태라면 이미지 Uri를 결과 Uri로 저장! 
                val result = CropImage.getActivityResult(data)
                if(resultCode == Activity.RESULT_OK){
                    result.uri?.let {
                        imageView.setImageBitmap(result.bitmap)
                        imageView.setImageURI(result.uri)
                        photoUri = result.uri

                    }
                }else if(resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE){
                    val error = result.error
                    Toast.makeText(this@AddPhotoActivity, error.message, Toast.LENGTH_SHORT).show()
                }
            }
            else ->{finish()}

        }

👉 결과

profile
신입 개발자👩‍💻

0개의 댓글