Android Bitmap rotate, resize, combine Kotlin
2023. 7. 28. 19:06ㆍandroid
개인 프로젝트를 진행하며 비트맵을 다루게 되어 세가지 함수를 만들었다. 다른 분들도 도움이 되길 바라면서 사용했으면 싶어서 소개한다.
1. rotate Bitmap - 비트맵 회전
fun rotateBitmap(bitmap: Bitmap, angle: Float): Bitmap {
val matrix = Matrix()
matrix.setRotate(angle)
return Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
}
예시
rotateBitmap(pictureImg.toBitmap(), 90f)
시계 방향 90도 회전된 비트맵을 만들어준다.
2. resize Bitmap - 비트맵 사이즈 변경
fun resizeBitmap(bitmap: Bitmap, newWidth: Int, newHeight: Int): Bitmap {
return Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, true)
}
예시
val resizedCapture = resizeBitmap(
captureImg.asAndroidBitmap(),
rotatedPicture.width,
rotatedPicture.height
)
3. combined Bitmap - 비트맵 합성
fun combineBitmap(picture1: Bitmap, picture2: Bitmap): Bitmap {
val resultWidth = max(picture1.width, picture2.width)
val resultHeight = max(picture1.height, picture2.height)
val resultBitmap = Bitmap.createBitmap(resultWidth, resultHeight, picture1.config)
val canvas = Canvas(resultBitmap)
canvas.drawBitmap(picture1, 0f, 0f, Paint())
canvas.drawBitmap(picture2, 0f, 0f, Paint())
return resultBitmap
}
1을 먼저 그리고 그 위에 2를 그린다. 그러므로 위로 올려서 합성하고 싶은 비트맵을 매개변수 picture2의 인자로 사용하면 된다.
3가지 함수를 잘 조합하여 카메라에서 찍은 사진과 별도의 사진을 내가 원하는 규격에 맞게 합성할 수 있다.
'android' 카테고리의 다른 글
Android Version Catalog란? (0) | 2023.07.31 |
---|---|
Google I/O Extended 2023 Seoul 후기 (0) | 2023.07.31 |
Android Service 정리 자세하게 (0) | 2023.06.01 |
android context란 무엇인가? (0) | 2023.05.28 |
android contentProvider를 이용하여 공유 저장소 미디어 파일에 엑세스 하는 방법을 통한 예시와 공홈 번역 및 공부 (0) | 2023.05.27 |