Image crop하는 기능은 몇번 사용해봤었는데 사용하려고 하면 헷갈린다.
그래서 정리해놓기!!!
(Crop기능을 직접 구현하시는 분들도 있지만 저는 라이브러리를 사용할거지요옹)
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0
<activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
android:theme="@style/Base.Theme.AppCompat"/>
private fun cropImage(uri: Uri?){
CropImage.activity(uri).setGuidelines(CropImageView.Guidelines.ON)
.setCropShape(CropImageView.CropShape.RECTANGLE)
//사각형 모양으로 자른다
.start(this)
}
val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
intent.putExtra("crop", true) //기존 코드에 이 줄 추가!
intent.action = Intent.ACTION_GET_CONTENT
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()}
}