java如何在安卓中调整位图的大小
我得到一个空点异常。 为什么
private Bitmap changeDimens(int height,int width) {
Bitmap bitmap=((BitmapDrawable)modified.getDrawable()).getBitmap().copy(Bitmap.Config.ARGB_8888,true);
Matrix matrix = new Matrix();
matrix.postScale(width, height);
Bitmap bitmapEscaled=Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, false);
//bitmap.recycle();
//Bitmap bitmapEscaled=Bitmap.createScaledBitmap(bitmap,width,height,true);
return bitmapEscaled;
}
我试图得到一个由参数给出尺寸的位图,并在这一行中得到一个空指针:
Bitmap bitmapEscaled=Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, false);
在我的日志中:
java.lang.NullPointerException: Attempt to invoke virtual method 'void 安卓.graphics.Bitmap.setHasAlpha(boolean)' on a null object reference
# 1 楼答案
有一件事看起来不对劲
但是你的宽度和高度是整数。我猜它们是你想要的实际位图像素大小。这些是浮点值,它们与当前大小有关。所以如果你想让位图变大1/2,你可以使用
如果你想让它变大两倍
现在让我们假设你的宽度和高度是一些大小值,比如200。然后这一行将创建一个宽200倍、高200倍的位图,创建位图肯定会因内存不足而失败。如果传入的值小于1,则整数值将为0,并且将得到一个零大小的位图
# 2 楼答案
不确定是否需要以这种方式创建位图副本。 如果适合您的需要,您可以尝试以下片段: