Bitmap对象在调用setPixel()方法时遇到java.lang.IllegalStateException错误

我前两天在制作抠图DIY脸谱的demo时,遇到一个头疼的问题:将ImageView里的图片转为Bitmap对象后,我试图将其中的白色像素甄别出来,并调用setPixel方法辅以新的颜色。

结果系统无情地报错,AndrodRuntime Caused by:java.lang.IllegalStateException

四处百度无果,求助谷歌,终于在一个国外论坛找到了答案。

原来,从ImageView里读取的Bitmap,或者加载drawable里的图片资源,返回的都是一个immutalbe的bitmap,所以不能用setpixels

必须采取类似Bitmap bmp = Bitmap.createBitmap(2, 2, Bitmap.Config.ARGB_8888);的方式,返回的才是一个mutable的bitmap,可以修改像素

特记于此,自己备忘,也供后人解惑。