在android中通过位图像素循环更改位图的颜色

在android中通过位图像素循环更改位图的颜色,android,bitmap,Android,Bitmap,我正在尝试根据十六进制值更改位图的颜色 在我尝试使用颜色选择器中选择的颜色使用myBitmap.setPixel之前,我只是想让它与rgb一起工作,如下所示: for (int x = 0; x <= myBitmap.getWidth(); x++) { for (int y = 0; x <= myBitmap.getHeight(); y++) { myBitmap.setPixel(x, y, Color.r

我正在尝试根据十六进制值更改位图的颜色

在我尝试使用颜色选择器中选择的颜色使用myBitmap.setPixel之前,我只是想让它与rgb一起工作,如下所示:

    for (int x = 0; x <= myBitmap.getWidth(); x++) {

            for (int y = 0; x <= myBitmap.getHeight(); y++) {

                myBitmap.setPixel(x, y, Color.rgb(255, 255, 255));

            }

        }
它工作得很好,但当我尝试循环通过位图像素时,它会强制关闭应用程序

任何关于如何进行此操作的建议,或关于如何根据颜色选择器返回的值更改位图颜色的其他建议。从颜色选择器返回的值的格式如下:白色=-1或蓝色=-15658590


谢谢

应用程序强制关闭的原因是您正在执行CPU密集型操作。 长时间运行的操作应始终在AsyncTask中执行,而不是在应用程序的UI线程上执行

选项1:

创建AsyncTask类的子类,并在doInBackground方法中执行像素操作。这不会强制关闭应用程序

选项2:(位图操作的更好选择)


使用RenderScript执行此类图形操作。RenderScript是跨平台的,可以比java代码中的循环更快地执行像素操作。

如果这正是您正在使用的代码,则循环条件是错误的。您在两个维度上都超出了位图的限制1个像素,并且您使用了错误的变量来检查其中一个维度。更改
非常感谢!我会试试你的推荐!不客气。如果它解决了你的问题,你可以接受答案。如果没有,请发布带有错误消息的日志,我会再试一次。事实上,我在异步任务中使用了您的修复程序,所以你们两个都帮了我很多忙!我如何接受两者?LOL说实话,在没有真正计算的情况下通过位图不应该杀死应用程序。异步任务不是个坏主意,但这不是你的问题。不过,你接受的答案取决于你自己。
    bitmapPreview.setPixel(50, 50, Color.rgb(255, 255, 255));
for (int x = 0; x < myBitmap.getWidth(); x++) {
    for (int y = 0; y < myBitmap.getHeight(); y++) {
        myBitmap.setPixel(x, y, Color.rgb(255, 255, 255));
    }
}