如何处理Android着色书应用程序的图像?

时间:2015-08-10 13:10:25

标签: android eclipse image android-framework

我有一个关于Android设备的着色书类应用的想法。

但是,我没有实际处理图像的经验,因此我可以为它们着色。我担心我的问题可能过于模糊,但这是我用自己的经验做的最好的事情,所以如果你试着回答请耐心等待(:

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

我正在寻找的结果是这样的图像:

Mandala

让应用程序的用户选择一种颜色并填写空格。

我可以管理ui和编程应用程序的其他部分,但是我没有任何想法如何处理这样的图像,以便应用程序可以将白色空间识别为段并获得为它们着色的能力

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

提前感谢哦,光荣的stackoverflow社区< 3

3 个答案:

答案 0 :(得分:1)

这个问题对于Stack Overflow而言过于宽泛,可能会被关闭,但与往常一样,您应该将问题分解为更小的部分。

步骤1:处理图像,使其仅包含黑白图像。您现在发布的图片包含"灰白色"将使填充变得更加困难的文物,所以摆脱它们。

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

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

步骤4:输出图像。

您可以将这些步骤细分为更小的步骤。如果您遇到特定步骤,那么您可以发布MCVE来展示您尝试过的内容,并且可以更轻松地帮助您。

答案 1 :(得分:1)

你可以做下一个:

  1. 获取图片的位图实例
    Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
  2. 当用户触摸屏幕时,获得相对于图像的触摸点的x,y
  3. 使用Flood填充算法填充白色区域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));

答案 2 :(得分:1)

点击此链接: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