java.lang.OutOfMemoryError - BitmapFactory.decode(strPath)

后端 未结 5 1229
[愿得一人]
[愿得一人] 2020-11-29 22:21

I am getting java.lang.OutOfMemoryError, whenever i am calling UploadActivity.java

Line Number 176 is:

5条回答
  •  -上瘾入骨i
    2020-11-29 23:04

    before calling Bitmap bm=BitmapFactory.decodeFile(strPath);

    call this.. Bitmap bm =decodeSampledBitmapFromResource(strPath,reqWidth,reqHeight);

    if you get again java.lang.OutOfMemoryError then let me know

    public static int calculateInSampleSize(BitmapFactory.Options options,
                int reqWidth, int reqHeight) {
            // Raw height and width of image
            final int height = options.outHeight;
            final int width = options.outWidth;
            int inSampleSize = 1;    
            if (height > reqHeight || width > reqWidth) {
    
                final int halfHeight = height / 2;
                final int halfWidth = 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 ((halfHeight / inSampleSize) > reqHeight
                        && (halfWidth / inSampleSize) > reqWidth) {
                    inSampleSize *= 2;
                }
            }
            return inSampleSize;
        }
    
    public static Bitmap decodeSampledBitmapFromResource(String strPath,int reqWidth, int reqHeight) {
    
            // First decode with inJustDecodeBounds=true to check dimensions
            final BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
            BitmapFactory.decodeFile(strPath, options);
            // Calculate inSampleSize
            options.inSampleSize = calculateInSampleSize(options,reqWidth,
                    reqHeight);
            // Decode bitmap with inSampleSize set
            options.inJustDecodeBounds = false;
            return BitmapFactory.decodeFile(strPath, options);;
    }
    

提交回复
热议问题