IT/Android
안드로이드 / image crop 라이브러리 사용
은정21
2023. 10. 5. 15:45
반응형
Android Image Cropper
Android Image Cropper는 쉽게 이미지를 크롭하는 라이브러리이다.
https://github.com/CanHub/Android-Image-Cropper
원하는 기능
프로필 이미지를 등록하고싶은데, 사용자가 이미지의 원하는 부분만 크롭해서 저장하게 하고 싶었다.
이미지를 선택하는 기능은 아래 링크에서 확인할 수 있다.
https://dev-ej2.tistory.com/80
이제 이미지를 선택했으니, 선택한 이미지의 uri를 가지고 crop을 해야한다.
사전 준비
1. 먼저 해당 라이브러리를 사용 할 수 있도록 app 수준 gradle에 추가를 해줍니다.
// image crop
implementation("com.vanniktech:android-image-cropper:4.5.0")
2. manifest에 theme를 적용한 activity를 추가한다.
<activity
android:name="com.canhub.cropper.CropImageActivity"
android:theme="@style/Base.Theme.AppCompat"
/>
이렇게 하면 라이브러리를 사용하기 위한 사전 준비가 끝난다.
라이브러리 사용
1. registerForAcitivityResult를 이용하여 크롭 결과를 콜백 받을 수 있다.
private val cropImage = registerForActivityResult(CropImageContract()) { result ->
if (result.isSuccessful) {
// returned uri 사용
val uriContent = result.uriContent
val uriFilePath = result.getUriFilePath(requireContext()) // optional usage
} else {
// An error occurred.
val exception = result.error
}
}
2. cropping acitivity를 시작하는 코드이다.
// cropping activity 시작
cropImage.launch(CropImageContractOptions(
uri = uri, // 크롭할 이미지 uri
cropImageOptions = CropImageOptions(
outputCompressFormat = Bitmap.CompressFormat.PNG
// 원하는 옵션 추가
)
))
guideline을 제거한다던가 높이, 너비 maxSize를 정하는 등 다양한 옵션을 CropImageOptions에 추가할 수 있다.
output이 jpeg가 디폴트라, png로 옵션을 설정한 예제이다.
결과는?
다음과 같이 적용이 된다. 크롭한 이미지는 uri를 받아 자유롭게 사용이 가능해서 편리하다.