java - 如何高效遍历Bitmap?

标签 java android image-processing nested-loops divide-and-conquer

我需要遍历位图图像的每个像素,这是我的代码,但是太慢了

    Bitmap img=......;
    int imgWidth = img.getWidth();
    int imgHeight = img.getHeight();
    for (int i = 0; i < imgWidth; i++) {
        for (int j = 0; j < imgHeight; j++) {
            int color = img.getPixel(i, j);
            int R = android.graphics.Color.red(color);
            int G = android.graphics.Color.green(color);
            int B = android.graphics.Color.blue(color);
            // do something
        }
    }

最佳答案

我已经解决了这个问题。这是我的新代码。

    int[] colors = new int[img.getWidth() * img.getHeight()];
    img.getPixels(colors, 0, img.getWidth(), 0, 0, img.getWidth(), img.getHeight());
    for (int i = 0; i < colors.length; i++) {
            int y = (int) (i / img.getWidth());
            int x = i % img.getWidth();
            int R = android.graphics.Color.red(colors[i]);
            int G = android.graphics.Color.green(colors[i]);
            int B = android.graphics.Color.blue(colors[i]);
        }
    }

新解大约需要 8 秒,旧解需要 27 秒。

关于java - 如何高效遍历Bitmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56715835/

相关文章:

Java字时钟

java - 为什么 websocket.send() 依赖于alert?

java - 你如何使用 gradle 的 `` exclude`` 来替换依赖项?

java - 检测图像的像素 block

c++ - 需要找到一种使用 OpenCV 在二维图像中检测息肉的方法

java - 谷歌应用程序引擎 url 获取服务 iurl 问题

java - 加载自定义 Android View 时出错 : Resources$NotFoundException: Resource ID #0x7f060007 type #0x12 is not valid

java - Microsoft翻译API,Translate.execute()方法在android中不调用

java - Andengine onAreaTouched TouchEvent 不起作用 - ACTION_OUTSIDE 和 ACTION_CANCEL

python - 如何移除移动物体以仅获取背景?