当项目工程需要对bitmap进行动态的改变宽度和高度时,代码如下:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), normalId);
bitmap.setWidth(30);
bitmap.setHeight(30);
这样在代码执行到这里的时候可能出现异常IllegalStateException: only mutable bitmaps may be reconfigured
解决方法就是,对bitmap重新计算压缩比,然后重新生成bitmap对象
代码如下:
public Bitmap alterSizeBitmap(Bitmap bitmap,int newWidth,int newHeight) {
//计算压缩的比率
float scaleWidth = ((float) newWidth) / bitmap.getWidth();
float scaleHeight = ((float) newHeight) / bitmap.getHeight();
//获取想要缩放的matrix
Matrix matrix =new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
//获取新的bitmap
return Bitmap.createBitmap(bitmap,0,0, bitmap.getWidth(), bitmap.getHeight(), matrix,true);
}
网友评论