【问题标题】:out of memory by resizing bitmap通过调整位图大小导致内存不足
【发布时间】:2014-06-11 16:37:42
【问题描述】:

我正在尝试将位图的大小调整为自定义 X 和 Y,并且我使用的代码有时会运行到 OutOfMemory 异常中。我环顾四周,找到了一些如何使用 InputStream 调整位图大小的解决方案,但我找不到任何方法如何将其调整为自定义 X 和 Y 尺寸。有人可以给我一个建议吗?

这是我的代码:

try {

            Point scr = Sys.screenSize(getActivity());

                    // MY CUSTOM X and Y    
            int newWidth = (int) Sys.convertDpToPixel(linheight, getActivity())
                    * lines;
            int newHeight = scr.x;

            Bitmap bitmap = BitmapFactory.decodeResource(getActivity()
                    .getResources(), R.drawable.field);

            int width = bitmap.getWidth();
            int height = bitmap.getHeight();
            float scaleWidth = ((float) newWidth) / width;
            float scaleHeight = ((float) newHeight) / height;
            // CREATE A MATRIX FOR THE MANIPULATION
            Matrix matrix = new Matrix();
            // RESIZE THE BIT MAP
            matrix.postScale(scaleWidth, scaleHeight);

            // "RECREATE" THE NEW BITMAP
            bm = Bitmap
                    .createBitmap(bitmap, 0, 0, width, height, matrix, false);
            bitmap.recycle();
            matrix = null;
            iv.setImageBitmap(bm);
        } catch (OutOfMemoryError e) {
            e.printStackTrace();
        }

【问题讨论】:

    标签: android image bitmap inputstream


    【解决方案1】:

    我认为你想要的是 createScaledBitmap:

    Bitmap resizedBitmap = 
           Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 2011-07-16
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 2012-07-03
      • 2011-01-08
      相关资源
      最近更新 更多