본문 바로가기
TeamProject/ImadAndroid

이미지가 가로로 로드 되는 경우

by 둥글레차35 2024. 8. 9.

상황

커스텀 크롭 뷰에서 이미지를 크롭 하기 위한 기능을 만들던 도중 직접 찍은 사진의 경우 이미지가 가로로 로드되는 것을 확인하였다. 다른 다운로드한 사진이나 스크린샷 같은 경우 정상적으로 로드됨에 반하여

 

원인

원인은 사진에는 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?) {
                    // 필요 시 처리
                }
            })
    }

댓글