我正在使用 createBitmap 重新创建放大的图像,但收到以下错误消息。
Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference
使用 createScaledBitmap 时出现内存不足错误。我已经尝试过其他论坛的可能解决方案,但没有任何运气。
public Bitmap scaleToActualAspectRatio(Bitmap bitmap) {
Bitmap newbitmap = null;
try {
Matrix matrix = new Matrix();
matrix.postScale(scaledWidth, scaledHeight);
newbitmap = Bitmap.createBitmap(bitmap, 0, 0, scaledWidth, scaledHeight, matrix, false);
//bitmap.recycle();
} catch(Exception e) {
e.printStackTrace();
}
return newbitmap;
}
如有任何帮助,我们将不胜感激。
我希望这个函数对你有用,再想想比例值在这里 float ,你传递所需位图的高度和宽度。仔细阅读评论。
public Bitmap scaleToActualAspectRatio(Bitmap bitmap) {
Bitmap newBitmap = null;
try {
//width = 500 and height = 500
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int newWidth = 1200;
int newHeight = 1200;
// calculate the scale - in this case = 2.4f
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// create matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map 2.4f, 2.4f
matrix.postScale(scaleWidth, scaleHeight);
// recreate the new Bitmap
newBitmap = Bitmap.createBitmap(bitmap, 0, 0, newWidth, newHeight, matrix, true);
} catch (Exception e) {
e.printStackTrace();
}
return newBitmap;
}
我是一名优秀的程序员,十分优秀!