투케이2K

786. (Android/Java) [유틸 파일] bitmapResizeImage : Bitmap 이미지 리사이징 수행 본문

Android

786. (Android/Java) [유틸 파일] bitmapResizeImage : Bitmap 이미지 리사이징 수행

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

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [RETURN] bitmapResizeImage : Bitmap 이미지 리사이징 수행
    // -----------------------------------------------------------------------------------------
    public static Bitmap bitmapResizeImage(Context mContext, Bitmap bitmap, int width, int height) {

        /**
         * // -----------------------------------------
         * [bitmapResizeImage 메소드 설명]
         * // -----------------------------------------
         * 1. Bitmap 이미지 리사이징 수행
         * // -----------------------------------------
         * 2. 호출 방식 :
         *
         *   // [1] : 이미지 to 비트맵
         *   Bitmap bitmap = C_App.rawToBitmap(A_Intro.this, R.raw.test_img);
         *
         *   // [2] : 비트맵 이미지 리사이징
         *   C_App.bitmapResizeImage(A_Intro.this, bitmap, 50, 50);
         *
         * // -----------------------------------------
         * 3. 리턴 데이터 :
         *
         * 리사이징 한 비트맵 이미지
         * // -----------------------------------------
         * */


        // [리턴 값 선언]
        Bitmap returnData = null;
        String M_LOG = "";
        String originSize = "";
        String resizeSize = "";


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

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

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

                originSize = String.valueOf(bitmap.getWidth()) + " / " + String.valueOf(bitmap.getHeight());

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

                ByteArrayOutputStream baos = new ByteArrayOutputStream();

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

                InputStream inputStream = new ByteArrayInputStream(baos.toByteArray());

                returnData = BitmapFactory.decodeStream(inputStream);

                if (returnData != null){
                    resizeSize = String.valueOf(returnData.getWidth()) + " / " + String.valueOf(returnData.getHeight());
                    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 (Exception e) {
            M_LOG = "[Exception] :: " + String.valueOf(e.getMessage());
            S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e);
        }


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


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

[결과 출력]

 

D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.C_App.bitmapResizeImage(C_App.java:10605)]
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