![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/015.gif)
📱테스트 환경
Samsung Galaxy Android 13 • Android 10
😢 내가 겪은 문제
DB에 저장되어있는 이미지를 가져와서 ImageView 에 넣고 wrap_content / wrap_content 해주고 크기를 봤는데 ...
너무 처참하게 작아서 잘 안보였다 .. 그래서 reSize 를 해주고싶었는데 잘 안됐다 .. 검색해서 이것저것 찾아봤는데
내 얇디얇은 지식으로는 이해하기 쉽지 않았다 ...!! 그래서 열심히 뒤져서 결국 해냈는데 해당 코드를 기록해 놓고 싶었다 : )
먼저 ByteArray Type 으로 넘어온 이미지를 Bitmap 형식으로 변환해주었다. 그래야 ImageView 에 넣어줄 수 있다 !!
val imageBitmap = BitmapFactory.decodeByteArray(imageByteArray, 0, imageByteArray.size)
이런 다음에 이제 Bitmap 을 ImageView 에 넣어주면 화면에 이미지를 확인할 수 있다.
원하는 넓이와 높이를 적어주면 해당 뷰에 원하는 크기로 이미지를 조정하여 볼 수있다.
val imageView = findViewById<ImageView>(R.id.ImageView)
imageView.setImageBitmap(Bitmap.createScaledBitmap(imageBitmap, 원하는 넓이, 원하는 높이, false))
하지만, 내가 원하는건 넓이는 화면 전체 크기에 맞추고, 높이는 비율에 맞게 조절하고싶었다.
해서 열심히 계산을 돌려서 넓이는 부모의 넓이, 높이는 비율에 맞게 커지되, 최대높이에서 130dp 를 뺀 만큼 커지게 변경하였다.
최종 코드는 이렇다 : )
val pullScreen = findViewById<ConstraintLayout>(R.id.pullScreen)
val imageView = findViewById<ImageView>(R.id.ImageView)
// 부모 뷰의 너비와 높이 가져오기
val parentWidth: Int = pullScreen.width
val parentHeight: Int = pullScreen.height
// 이미지의 원래 너비와 높이 가져오기
val originalWidth = imageBitmap.width
val originalHeight = imageBitmap.height
// 비율 계산
val aspectRatio = originalWidth.toFloat() / originalHeight
// 새로운 높이와 너비 계산
val newWidth = parentWidth
var newHeight = Math.round(parentWidth / aspectRatio)
// 최대 높이 제한
val maxHeightPixels = pullScreen.height - TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 130f, resources.displayMetrics).toInt()
if (newHeight > maxHeightPixels) {
newHeight = maxHeightPixels
}
imageView.setImageBitmap(Bitmap.createScaledBitmap(imageBitmap, newWidth, newHeight, false))
이렇게 해서 DB 에서 가져온 ByteArray 를 Bitmap 으로 변경하고, 비율에 맞게 내가 원하는 형태로 변경하여 이미지를 보여주었다.
첨엔 정말 간단하게 해결할 수 있을 것 같았는데, 생각보다 시간이 걸린 걸 봐서는 더 열심히 공부해야겠다 .... :(
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] intent.() vs intent. setFlags() 차이점 (0) | 2023.08.10 |
---|---|
[Kotlin] MAC .apk • .aab Build (0) | 2023.08.10 |
[Kotlin] This view is not constrained vertically: at runtime it will jump to the top unless you add a vertical constraint (0) | 2023.08.09 |
[Kotlin] Activity 간에 데이터 주고받는 방법 (0) | 2023.08.09 |
[Kotlin] 앱 알림 보내기 (0) | 2023.08.09 |