2 znl 12 znl_12 于 2013.04.17 11:43 提问

使用 setPixels 的错误

我想编辑 images,但是使用 setPixels 时获得错误

 picw = pic.getWidth();
        pich = pic.getHeight();
        picsize = picw*pich;        
        int[] pix = new int [picsize];
        pic.getPixels(pix, 0, picw, 0, 0, picw, pich);  
        pic.setPixels(pix,0,pic.getWidth(),0,0,pic.getWidth(),pic.getHeight());

使用 setPixels 获得非法状态异常

由于: java.lang.IllegalStateException
   android.graphics.Bitmap.setPixels(Bitmap.java:878)
   com.sandyapps.testapp.testapp.onCreate(testapp.java:66)

2个回答

windspeaker
windspeaker   2013.04.17 17:31
已采纳

根据文档中的说明

public void setPixel (int x, int y, int color)

Since: API Level 1
Write the specified Color into the bitmap (assuming it is mutable) at the x,y coordinate.
Parameters

x   The x coordinate of the pixel to replace (0...width-1)
y   The y coordinate of the pixel to replace (0...height-1)
color   The Color to write into the bitmap
Throws

IllegalStateException   if the bitmap is not mutable
IllegalArgumentException    if x, y are outside of the bitmap's bounds.

IllegalStateException表示这个位图是不可变的,要修改就自己建一个副本吧

hxn_217
hxn_217   2013.04.17 14:24

我觉得 Bitmap 没变。
如果这样的话创建一个可变的 Bitmap 复本,使用Bitmap.copy(Bitmap.Config config, boolean isMutable)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!