使用setPixel()方法时遇到问题

时间:2017-01-06 13:22:02

标签: android image image-processing pixel

有人可以解释一下setPixel()方法在Android中的运作方式吗?我试图替换位图上的一些像素。我使用getPixel()方法及其各自的颜色(例如green = Color.green(a[i][j]);)提取它们,但我无法将它们设置为新值,以便在屏幕上显示已处理的图像。

编辑:这是进行某些处理的地方。我尝试通过算法转换为灰度

 for (int i = 0; i < grayWidth; i++) {
            for (int j = 0; j < grayHeight; j++) {
                a[i][j] = myImage.getPixel(i, j);
                red = Color.red(a[i][j]);
                green = Color.green(a[i][j]);
                blue = Color.blue(a[i][j]);
                gray = (red + green + blue) / 3;
                a[i][j] = gray;
            }
        }

然后替换像素:

for (int m = 0; m < grayHeight; m++) {
            for (int n = 0; n < grayWidth; n++) {
                grayScale.setPixel(m, n, a[m][n]);
            }
        } 

最后在屏幕上显示

imageView.setImageBitmap(grayScale);

很抱歉没有在第一时间彻底解释/

1 个答案:

答案 0 :(得分:0)

  1. 为什么在没有任何代码的情况下发布问题?如果我们不知道你想要做什么,请把自己放在我们的位置,我们如何帮助你?您只能用英语表达您的问题,在大多数情况下,这不等于编程语言。我们希望看到后者,并通过英语描述支持您正在做的事情以及正在进行的事情。

  2. 根据提供的信息和Android Dev Page for Bitmap,我可以假设您的BitMap图片可能不是可变。这会抛出IllegalStateException,但是没有看到你的LogCat / Code,我不能确定是否是这种情况。

  3. 如果BitMap确实是不可变的,那么您可以尝试查看converting immutable bitmap to mutable并重试。