我正在尝试缩放位图,使其大小加倍。
但是在缩放后,位图显示为空,所有都是纯灰色......
这是代码:
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();
编辑编辑编辑编辑
我认为这是内存问题,如果我用小图片做它就可以了。
问题依旧是大图片!!!
感谢任何建议!!!
答案 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