728x90
오늘은 Android Studio 사진 가져오기, 사진 찍은 후 Crop 기능을
라이브러리 사용하지 않고 설정하는 법에 대해 포스팅 하겠습니다.
1. Manifests 추가 (Manifests 를 추가했으면 당연히 permission 확인 후 검사 로직 추가해주는 것은 기본 입니다.)
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2. 권한 검사 후 허용 로직 추가 (이 부분은 넘어가겠습니다!)
MainActivity (버튼 두개와 이미지 한개를 만들었다고 설정하겠습니다.)
1. 갤러리에서 사진 가져온 후 크롭기능
1-1. 버튼리스너 설정.
override fun onBindView() = with(binding) {
tvChoiceAlbum.setOnClickListener {
openGalleryForImage()
}
}
1-2 갤러리 함수 설정
private fun openGalleryForImage() {
Intent(Intent.ACTION_PICK).apply {
putExtra("crop", true)
type = MediaStore.Images.Media.CONTENT_TYPE
choiceAlbumLauncher.launch(this)
}
}
1-3 launcher 설정
private val choiceAlbumLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
it.data?.let { data ->
data.data?.let { dataUri ->
Glide.with(binding.Img)
.load(it)
.transform(CircleCrop())
.into(binding.Img)
}
}
}
이렇게 갤러리에서 크롭 기능을 사용할 경우에는 Intent 쪽에 intent.putExtra("crop", true) 를 설정해주시면 됩니다.
보너스로 서버로 이미지 파일을 보내야 될 경우에는 절대경로가 필요한데 절대경로를 알 수 있는 코드는 아래와 같습니다.
val cursor = requireActivity().contentResolver.query(
dataUri,
null,
null,
null,
null
)
cursor?.let { cu ->
cu.moveToFirst()
val columnIndex = cu.getColumnIndex(MediaStore.Images.Media.DATA)
val mediaPath = cu.getString(columnIndex)
cu.close()
val file = File(mediaPath)
}
사진찍은 후 Crop 설정하는 것은 다음 포스팅에서 계속하겠습니다.
'안드로이드' 카테고리의 다른 글
[Android Studio] Bitmap Image to File Convert. Kotlin (0) | 2023.04.25 |
---|---|
[Android Studio] 사진 가져오기, 사진 찍은 후 Crop 하기 2편 ! (Kotlin) (0) | 2023.04.14 |
[Android Studio] CharSequence 와 String 비교하는 법 Kotlin. (0) | 2023.03.28 |
[Android Studio] 카카오 링크 공유 API 사용하기! (0) | 2023.03.23 |
[Android Studio] ParselableArrayList 로 Intent 하는 법! (Kotlin) (0) | 2023.03.17 |