为什么我的Bitmap缩放后似乎是空的

时间:2013-12-11 11:58:58

标签: android

我正在尝试缩放位图,使其大小加倍。

但是在缩放后,位图显示为空,所有都是纯灰色......

这是代码:

Matrix matrix = new Matrix();

    // resize the bit map
    matrix.postScale(2, 2);

    // recreate the new Bitmap and set it back
    Bitmap bm2=Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);   
    //bm.recycle();

编辑编辑编辑编辑

我认为这是内存问题,如果我用小图片做它就可以了。

问题依旧是大图片!!!

感谢任何建议!!!

1 个答案:

答案 0 :(得分:0)

Bitmap Doc开始,显然Bitmap.createBitmap()返回相同的位图或源位图的一部分。所以它可能在这里它返回相同的位图对象。但是这里你要回收它< / p>

bm.recycle();

这就是为什么你会变空

使用此方法

    public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {
    int width = bm.getWidth();
    int height = bm.getHeight();
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    Matrix matrix = new Matrix();
    matrix.postScale(scaleWidth, scaleHeight);

    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height,
            matrix, false);
    return resizedBitmap;
}

并将宽度传递为1920,将高度传递为2560