Captured Image Resolution is too big

后端 未结 2 1221
-上瘾入骨i
-上瘾入骨i 2021-01-28 21:51

What I am Doing ?

I am allowing user to capture image, storing it into SD Card and uploading to server.

But getting resolution of Captured image

2条回答
  •  独厮守ぢ
    2021-01-28 22:44

    Try below code , It may help you

    first convert your image with your required height and width

    public static Bitmap scaleImage(String p_path, int p_reqHeight, int p_reqWidth) throws Throwable
    {
        Bitmap m_bitMap = null;
        System.gc();
        File m_file = new File(p_path);
        if (m_file.exists())
        {
            BitmapFactory.Options m_bitMapFactoryOptions = new BitmapFactory.Options();
            m_bitMapFactoryOptions.inJustDecodeBounds = true;
            BitmapFactory.decodeFile(m_file.getPath(), m_bitMapFactoryOptions);
            m_bitMapFactoryOptions.inSampleSize = calculateInSampleSize(m_bitMapFactoryOptions, p_reqHeight, p_reqWidth);
            m_bitMapFactoryOptions.inJustDecodeBounds = false;
            m_bitMap = BitmapFactory.decodeFile(m_file.getPath(), m_bitMapFactoryOptions);
        }
        else
        {
            throw new Throwable(p_path + " not found or not a valid image");
        }
        return m_bitMap;
    }
    
    
    private static int calculateInSampleSize(BitmapFactory.Options p_options, int p_reqWidth, int p_reqHeight)
    {
        // Raw height and width of image
        final int m_height = p_options.outHeight;
        final int m_width = p_options.outWidth;
        int m_inSampleSize = 1;
        if (m_height > p_reqHeight || m_width > p_reqWidth)
        {
            final int m_halfHeight = m_height / 2;
            final int m_halfWidth = m_width / 2;
            // Calculate the largest inSampleSize value that is a power of 2 and keeps both
            // height and width larger than the requested height and width.
            while ((m_halfHeight / m_inSampleSize) > p_reqHeight && (m_halfWidth / m_inSampleSize) > p_reqWidth)
            {
                m_inSampleSize *= 2;
            }
        }
        return m_inSampleSize;
    }
    

提交回复
热议问题