상황
커스텀 크롭 뷰에서 이미지를 크롭 하기 위한 기능을 만들던 도중 직접 찍은 사진의 경우 이미지가 가로로 로드되는 것을 확인하였다. 다른 다운로드한 사진이나 스크린샷 같은 경우 정상적으로 로드됨에 반하여
원인
원인은 사진에는 exif 정보 라는 메타데이터가 존재하는데 이 정보에는 사진을 찍을 때의 각도 같은 정보 등이 담겨 있다. 그런데 내가 사용한 비트맵 팩토리에서는 이 exif 정보를 읽지 않고 그냥 가로로 사진을 로드한다고 한다.
해결
해결 방법 자체는 간단하였다. Glide 라이브러리를 사용하거나 exif 정보를 읽어 그에 맞는 조치를 취해주면 된다.
Glide를 사용하여 해결한 모습
fun setImageUri(imageUri: Uri) {
Glide.with(this)
.asBitmap()
.load(imageUri)
.into(object : com.bumptech.glide.request.target.CustomTarget<Bitmap>() {
override fun onResourceReady(resource: Bitmap, transition: com.bumptech.glide.request.transition.Transition<in Bitmap>?) {
bitmap = resource
setInitialOffset(resource)
invalidate()
}
override fun onLoadCleared(placeholder: Drawable?) {
// 필요 시 처리
}
})
}'TeamProject > ImadAndroid' 카테고리의 다른 글
| DialogFragment 등장 퇴장 애니메이션 적용 [Kotlin] (0) | 2024.12.24 |
|---|---|
| 안드로이드 팝업 메뉴에 이미지 추가 [Kotlin] (2) | 2024.12.20 |
| Fragment에서 menuInflater 사용 (0) | 2024.07.04 |
| 리사이클러뷰 스크롤시 페이지 요청 (0) | 2024.04.24 |
| 작품 검색 기능 로직 변경 (0) | 2024.04.22 |
댓글