【问题标题】:Finding empty area in an Image to fill another image在图像中查找空白区域以填充另一个图像
【发布时间】:2012-10-06 03:41:32
【问题描述】:

我想在图像中找到空白区域(它的 x-y 坐标);从那我需要在那个空白区域填充另一个图像。

【问题讨论】:

    标签: android image canvas


    【解决方案1】:

    空白区域是指白色矩形吗?

    我要解决这个问题的方法是我会运行每个像素(x 轴/y 轴)的像素来搜索一个完全白色的像素,一旦我找到了这个像素,我就会运行一个方法,从那个开始像素,验证 X 轴上的直线上的像素和 Y 轴上的另一个像素,验证我要插入那里的图像的宽度和高度。如果这两条线上全是白色,那么我会在长度为math.sqrt(width*width + height*height) 的对角线上再次运行它,如果全是白色,我可以在那里填充图像,如果不是,请继续搜索从那条对角线的末端。

    虽然我宁愿搜索完全透明的像素(0 alpha)而不是搜索白色像素。我认为这对你的图像有用,但如果你碰巧有另一个图像,它有 3 条线,它们的尾巴和白色的精确长度结合在一起,它会失败。只是不要......这样做。

    您实际上可以验证该矩形中的所有像素,而不是仅检查这些行,但这可能会很慢并且不适用于您的图像,因为您恰好在空白区域的底部有那个高度。

    【讨论】:

      【解决方案2】:

      您想在图像中找到 WHITE 点,然后在下面尝试。 我希望它会对你有所帮助,但它会返回图像中的所有 WHITE 点,而不仅仅是空白区域。

                  Bitmap mBitmap = YOUR BITMAP;
      
                  ArrayList<Point> whitePoint = new ArrayList<Point>();
                  for (int i = 0; i < mBitmap.getWidth(); i++) {
                      for (int j = 0; j < mBitmap.getHeight(); j++) {
                          if(mBitmap.getPixel(i, j) == Color.WHITE)
                          {
                              whitePoint.add(new Point(i, j));
                          }
                      }
                  }
      

      我建议在空白区域使用透明颜色并检查透明而不是白色

      【讨论】:

      • 好的,谢谢。但是如何在不知道 x,y 坐标的情况下将透明颜色添加到空白区域?
      • 由设计师制作图像或更改位图,如 mBitmap.setPixel(x, y, transparentcolor)
      • 图片是来自服务调用的动态
      • hmmm :).. 像 mBitmap.setPixel(x, y, transparentcolor) 一样改变位图
      • 忘记了透明色,继续你的工作..你会用我的代码得到所有在白色区域的点
      猜你喜欢
      • 2014-11-18
      • 2011-03-19
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 2012-11-19
      • 2010-09-17
      • 2019-09-25
      相关资源
      最近更新 更多