我正在使用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;
}
任何帮助都将不胜感激。
答案 0 :(得分:0)
我希望这个函数适合你,还有一个想法比例值浮动在这里,你传递所需位图的高度和宽度。仔细阅读评论。
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;
}