public void floodFill(Bitmap bitmap, Point point, int i, int j) {
int k = bitmap.getWidth();
int l = bitmap.getHeight();
if (i != j) {
LinkedList linkedlist = new LinkedList();
do {
int i1 = point.x;
int j1;
for (j1 = point.y; i1 > 0 && !isBlack(bitmap.getPixel(i1 - 1, j1),j); i1--) {
}
boolean flag = false;
boolean flag1 = false;
while (i1 < k && !isBlack(bitmap.getPixel(i1, j1), j)) {
bitmap.setPixel(i1, j1, j); //main
if (!flag && j1 > 0 && !isBlack(bitmap.getPixel(i1, j1 - 1), j)) {
linkedlist.add(new Point(i1, j1 - 1));
flag = true;
} else if (flag && j1 > 0 && isBlack(bitmap.getPixel(i1, j1 - 1), j)) {
flag = false;
}
if (!flag1 && j1 < l - 1 && !isBlack(bitmap.getPixel(i1, j1 + 1), j)) {
linkedlist.add(new Point(i1, j1 + 1));
flag1 = true;
} else if (flag1 && j1 < l - 1 && isBlack(bitmap.getPixel(i1, j1 + 1), j)) {
flag1 = false;
}
i1++;
}
point = (Point) linkedlist.poll();
} while (point != null);
}
}
private boolean isBlack(int i, int j) {
while (Color.red(i) == Color.green(i) &&
Color.green(i) == Color.blue(i) &&
Color.red(i) < 100 || i == j) {
return true;
}
return false;
}
我使用此代碼來填充圖像的任何部分點擊各種顏色的形狀。它工作得很好,不會在邊界留下白色邊緣,但問題在於它的工作太慢。我怎麼能加快速度?洪水填充算法運行緩慢,我怎麼能加快這個算法?
你可以使用JNI算法您的應用程序。哪個性能比java更快 –