循环遍历位图像素以更改 android 中位图的颜色

use*_*800 2 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.rgb(255, 255, 255));

            }

        }
Run Code Online (Sandbox Code Playgroud)

如果我像这样只设置一个像素:

    bitmapPreview.setPixel(50, 50, Color.rgb(255, 255, 255));
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是当我尝试遍历位图像素时,它会强制关闭应用程序

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

谢谢!

Dav*_*ave 6

如果这是您使用的确切代码,则您的循环条件是错误的。您在两个维度上都超出了位图 1 个像素的限制,并且您使用了错误的变量来检查其中一个维度。在两个循环中更改<=为<,并x在第二个 for 条件中更改为y:

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));
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 老实说,在没有真正计算的情况下通过位图不应该杀死应用程序。AsyncTask 不是一个坏主意,但这不是您的问题。不过,您接受的答案取决于您。 (2认同)