为了账号安全,请及时绑定邮箱和手机立即绑定

为啥不能直接在原来的bitmap上直接操作?

为啥不能直接在原来的bitmap上直接操作?

正在回答

1 回答

 

在canvas类中你可以看到无论是构造方法还是setBitmap(Bitmap bitmap) 中都有

if (!bitmap.isMutable()) {

            throw new IllegalStateException(

                            "Immutable bitmap passed to Canvas constructor");

        }

就是说如果bitmap不可改变的情况下,canvas是不允许进行绘制的,当你用BitmapFactory.decodeResource,返回的bitmap是默认状态下的mIsMutable=false;(其他方法应该也是一样的,你自己可以看看),而Bitmap.createBitmap()中可以看到返回的是 

Bitmap bm = nativeCreate(null, 0, width, width, height, config.nativeInt, true);这最后一个参数是true的也就是 mutable,说可以改变的位图

    private static native Bitmap nativeCreate(int[] colors, int offset,

                                              int stride, int width, int height,

                                            int nativeConfig, boolean mutable);


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android图像处理-打造美图秀秀从它开始
  • 参与学习       27243    人
  • 解答问题       65    个

图像色彩的分析与处理,演示市面上常见的图像处理特效的实现方法

进入课程

为啥不能直接在原来的bitmap上直接操作?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信