투케이2K

496. (kotlin/코틀린) [유틸 파일] bitmapResizeImage : Bitmap 이미지 리사이징 수행 본문

Kotlin

496. (kotlin/코틀린) [유틸 파일] bitmapResizeImage : Bitmap 이미지 리사이징 수행

투케이2K 2024. 4. 30. 19:52

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [RETURN] bitmapResizeImage : Bitmap 이미지 리사이징 수행
        // -----------------------------------------------------------------------------------------
        fun bitmapResizeImage(mContext: Context, bitmap: Bitmap, width: Int, height: Int): Bitmap? {
            /**
             * // -----------------------------------------
             * [bitmapResizeImage 메소드 설명]
             * // -----------------------------------------
             * 1. Bitmap 이미지 리사이징 수행
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * // [1] : 이미지 to 비트맵
             * var bitmap = C_App.rawToBitmap(A_Intro@this, R.raw.test)
             *
             * // [2] : 비트맵 이미지 리사이징
             * C_App.bitmapResizeImage(A_Intro@this, bitmap!!, 50, 50)
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 :
             *
             * 리사이징 한 비트맵 이미지
             * // -----------------------------------------
             */


            // [리턴 값 선언]
            var returnData: Bitmap? = null
            var M_LOG = ""
            var originSize = ""
            var resizeSize = ""


            // [로직 처리 실시]
            try {

                // [인풋 데이터 체크]
                if (bitmap != null && width > 0 && height > 0) {

                    // -------------------------------------------
                    // [true] : [픽셀 형태를 조정해 주어서 이미지가 선명하게 보이도록 도움을 줍니다]
                    // -------------------------------------------
                    // [false] : [지금  픽셀 형태 그대로 스케일을 조절하므로 이미지가 깨지거나 흐려보일 수 있습니다]
                    // -------------------------------------------
                    originSize = bitmap.width.toString() + " / " + bitmap.height.toString()

                    val resizedBmp = Bitmap.createScaledBitmap(bitmap, width, height, true)

                    val baos = ByteArrayOutputStream()


                    // -------------------------------------------
                    // [JPEG : 압축 이미지 타입]
                    // -------------------------------------------
                    // [quality : 압축 정도]
                    // -------------------------------------------
                    // [0 = 최대 압축(작은 이미지에 적합한 최소 품질)]
                    // -------------------------------------------
                    // [100 = 최소 압축(큰 이미지에 적합한 최대 품질)]
                    // -------------------------------------------
                    resizedBmp.compress(Bitmap.CompressFormat.JPEG, 100, baos)

                    val inputStream: InputStream = ByteArrayInputStream(baos.toByteArray())

                    returnData = BitmapFactory.decodeStream(inputStream)

                    if (returnData != null) {
                        resizeSize = returnData.width.toString() + " / " + returnData.height.toString()
                        M_LOG = "[Success] :: Bitmap Resize"
                    } else {
                        M_LOG = "[Error] :: returnData Is Null"
                    }

                    // [스트림 닫기]
                    baos.close()
                    inputStream.close()

                } else {
                    M_LOG = "[Error] :: Input Data Is Null"
                }

            } catch (e: Exception) {
                M_LOG = "[Exception] :: " + e.message.toString()
                S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e)
            }


            // [로그 출력 실시]
            ///*
            // ===============================================================
            S_Log._D_("Bitmap 이미지 리사이징 수행", arrayOf(
                "INPUT [WIDTH] :: $width",
                "INPUT [HEIGHT] :: $height",
                "ORIGIN_SIZE :: $originSize",
                "RESIZE_SIZE :: $resizeSize",
                "M_LOG :: $M_LOG",
                "RETURN :: " + returnData.toString()
            ))
            // ===============================================================
            // */


            // [리턴 반환 실시]
            return returnData
        }
 

[결과 출력]

 

D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.kotlinproject.C_App.bitmapResizeImage]
I/: ----------------------------------------------------
I/: [LOG :: NOW TIME :: 2024-04-30 07:56:02 화요일]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: Bitmap 이미지 리사이징 수행]
I/: ----------------------------------------------------
I/: [LOG :: INPUT [WIDTH] :: 50]
I/: ----------------------------------------------------
I/: [LOG :: INPUT [HEIGHT] :: 50]
I/: ----------------------------------------------------
I/: [LOG :: ORIGIN_SIZE :: 1025 / 883]
I/: ----------------------------------------------------
I/: [LOG :: RESIZE_SIZE :: 50 / 50]
I/: ----------------------------------------------------
I/: [LOG :: M_LOG :: [Success] :: Bitmap Resize]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: android.graphics.Bitmap@3aa935b]
D///===========//: ================================================

 

반응형
Comments