如何处理 android 涂色书应用程序的图像?

How to process an image for an android coloring book app?

我想为 Android 台设备开发一款涂色本应用。

但是,我没有实际处理图像以便为它们着色的经验。我担心我的问题可能太模糊了,但这是我根据我的经验所能做的最好的,所以如果你试图回答,请耐心等待 (:

所以这是我的问题。目前我不打算使用任何基于 sprite 的引擎,因为我没有办法支付我知道如何使用的引擎。所以这让我只能使用基本的 Android 框架。

我要的结果是这样的图像:

然后让应用的用户选择一种颜色并填充空白。

我可以设法完成 ui 并对应用程序的其他部分进行编程,但是我完全不知道如何处理这样的图像,以便应用程序可以将空白区域识别为段和获得给它们上色的能力。

如果您需要有关我的问题的更多信息,请提问!

提前谢谢你,光荣的 Whosebug 社区 <3

这个问题对于 Stack Overflow 来说太宽泛了,可能会被关闭,但一如既往,你应该把你的问题分解成更小的部分。

第 1 步:处理图像,使其只包含黑色和白色。您 post 编辑的图像现在包含 "off-white" 会使填充变得更加困难的伪影,因此请摆脱它们。

第 2 步:检测用户点击的位置。当用户点击时,您需要知道该点击在图像中的位置。

第 3 步:从该点开始,填充它周围的(白色)区域。 Google 是你的朋友,但 flood fill algorithm 是一个很好的起点。

第四步:输出图像。

您可以将这些步骤中的任何一个分解为更小的步骤。当您在某个特定步骤遇到困难时,您可以 post 一个 MCVE 显示您尝试过的内容,这样会更容易帮助您。

您可以执行下一步:

  1. 获取图像的位图实例
    Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
  2. 当用户触摸屏幕时获取触摸点相对于图像的 x,y
  3. 使用Flood fill算法填充白色区域https://en.wikipedia.org/wiki/Flood_fill
  4. 要获取位置 (x,y) 处的像素,请使用:

    myBitmap.getPixels(pixels, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(), myBitmap.getHeight());

  5. 要更改位置 (x,y) 处的像素值,请使用: myBitmap.setPixel(x, y, Color.rgb(255, 255, 0));

检查此 link :Android flood-fill algorithm

使用 QuickLinearFloodFilelr 填充白色区域。

像这样:

QueueLinearFloodFiller f = new QueueLinearFloodFiller(mBitmap,clr_int,mPaint.getColor());
            f.setFillColor(mPaint.getColor());
            f.setTargetColor(clr_int);
            f.setTolerance(10);
            f.floodFill(p1.x,p1.y); //fill bitmap, at p1 with p1's color and fill with Color from Switch