相关疑难解决方法(0)

使用堆栈填充洪水

我在Java中使用递归Flood填充算法来填充图像的某些区域.使用非常小的图像可以正常工作,但是当de image变大时,JVM会给出Stack Over Flow Error.

这就是我必须使用我自己的堆栈使用Flood Fill重新实现该方法的原因.(我认为这是在这种情况下做到这一点的最好方法)

任何人都可以解释我如何编码吗?(如果你手边没有代码,算法的伪代码就可以了)

我在互联网上看了很多,但我还不太清楚.

编辑:我添加了我的递归代码

public void floodFill(int x, int y, Color targetColor,Color replacementColor) {

    if (img.getRGB(x, y) != targetColor.getRGB()) return;

    img.setRGB(x, y, replacementColor.getRGB());
    floodFill(x - 1, y, targetColor, replacementColor);
    floodFill(x + 1, y, targetColor, replacementColor);
    floodFill(x, y - 1, targetColor, replacementColor);
    floodFill(x, y + 1, targetColor, replacementColor);

    return;

}
Run Code Online (Sandbox Code Playgroud)

谢谢!

java image-manipulation flood-fill

12
推荐指数
2
解决办法
2万
查看次数

如何在Android中使用泛洪填充算法?

我是Android编程的新手,最近我尝试编写一个简单的应用程序,仅用于练习!在这一个中,我想在用户的点击上为图像着色,但我不知道如何启动它.我已经阅读了不同的主题,说使用"Flood Fill"算法.我在网上发现了它,但我不知道如何将它放入我的简单应用程序中.

我发现的代码:

private void FloodFill(Bitmap bmp, Point pt, int targetColor, int replacementColor) 
{
   Queue<Point> q = new LinkedList<Point>();
   q.add(pt);
   while (q.size() > 0) {
       Point n = q.poll();
       if (bmp.getPixel(n.x, n.y) != targetColor)
           continue;

    Point w = n, e = new Point(n.x + 1, n.y);

    while ((w.x > 0) && (bmp.getPixel(w.x, w.y) == targetColor)) {
        bmp.setPixel(w.x, w.y, replacementColor);
        if ((w.y > 0) && (bmp.getPixel(w.x, w.y - 1) == targetColor))
            q.add(new Point(w.x, w.y - 1));
        if ((w.y < bmp.getHeight() - …
Run Code Online (Sandbox Code Playgroud)

java android

12
推荐指数
2
解决办法
1万
查看次数

Android泛洪填充算法

有谁知道一个迭代和有效的洪水填充算法?

或者有没有办法实现递归floodfill算法没有堆栈溢出错误?

尝试使用堆栈的 @ Flood填充, 但我无法找到一种方法来处理白色和黑色图像.

java android image-processing flood-fill

11
推荐指数
4
解决办法
2万
查看次数

Android:如何只为图像的特定部分填充颜色?

我有像这样的图像:

在此输入图像描述 现在,我想将颜色填充到该图像的特定部分.如果我选择蓝色,如果我触摸Cap,那么帽子应该填充蓝色.同样的事情也应该发生在鼻子,嘴巴,眼睛等其他部位

那么,如何才能使用android?

任何budy都可以帮助我.

更新

我已尝试在我的应用中实施FloodFill算法.看这里

但在这之后我得到了例外:

    03-09 17:45:16.260: ERROR/AndroidRuntime(2558): java.lang.IllegalStateException
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.graphics.Bitmap.setPixel(Bitmap.java:847)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at com.project.fingerpaint.FinderPaintDemo.FloodFill(FinderPaintDemo.java:284)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at com.project.fingerpaint.FinderPaintDemo.access$3(FinderPaintDemo.java:272)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at com.project.fingerpaint.FinderPaintDemo$MyView.onTouchEvent(FinderPaintDemo.java:187)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.View.dispatchTouchEvent(View.java:3766)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558):     at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
03-09 17:45:16.260: ERROR/AndroidRuntime(2558): …
Run Code Online (Sandbox Code Playgroud)

android paint draw android-canvas

6
推荐指数
2
解决办法
2万
查看次数

Android - 使用另一个位图屏蔽位图

我有两个位图.这是位图1:

位图1:背景

这是位图2:

位图2:帧

最终结果应为:

位图决赛

我会很感激代码,但是,我更感谢对文档或教程的引用.我想完全理解代码,我一直在developer.android.com上搜索这么久没有运气.谢谢.

java android mask bitmap filter

5
推荐指数
1
解决办法
4231
查看次数