有人可以解释一下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);
很抱歉没有在第一时间彻底解释/
答案 0 :(得分:0)
为什么在没有任何代码的情况下发布问题?如果我们不知道你想要做什么,请把自己放在我们的位置,我们如何帮助你?您只能用英语表达您的问题,在大多数情况下,这不等于编程语言。我们希望看到后者,并通过英语描述支持您正在做的事情以及正在进行的事情。
根据提供的信息和Android Dev Page for Bitmap,我可以假设您的BitMap图片可能不是可变。这会抛出IllegalStateException
,但是没有看到你的LogCat / Code,我不能确定是否是这种情况。
如果BitMap确实是不可变的,那么您可以尝试查看converting immutable bitmap to mutable并重试。