Bimap设置宽高时出现,报错

2020-08-04  本文已影响0人  撩人的风光

当项目工程需要对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);

}

上一篇 下一篇

猜你喜欢

热点阅读