检测Android屏幕上的颜色

时间:2015-07-03 08:27:56

标签: android image colors

  1. 是否有适用于Android的程序可以在屏幕上检测到pixel color并对该x,y坐标进行点击事件?

  2. 检测某些区域的颜色并获取该像素坐标(如果程序不存在)的最佳算法是什么?

  3. 这个程序的和平检测400x400像素区域的颜色:

    //Set aim color
    var rgb = 197137164;
    
    //Init x,y pixels
    var x = 0;
    var y = 0;
    var ex = 0;
    
    :myloop
    for(x; x<400; x++)
    {
       for(y;y<400;y++)
       {
          if(getcolor(x,y) == rgb)
          {
            RaiseEvent(x,y);
            set ex = 1;           
            break;
          }
          if(ex == 1){break;}
       }        
    }
    sleep(10000); 
    set x = 0;
    set y = 0;
    set ex = 0;
    goto myloop;
    

    但我猜这个算法工作得很慢。我需要优化这个算法,但是现在我不知道怎么做。有任何想法吗?或者任何程序已经存在,我不需要创建自行车?

1 个答案:

答案 0 :(得分:0)

编辑: 尝试不逐个获取每个像素,而是使用getpixels()方法,并迭代像素数组,它实际上要快一些像素。

所以当你得到那个一维像素数组时,你可以迭代它。

假设您有400x200像素(80000)。因此,您使用for循环迭代像素,并检查像素的颜色是否与您搜索的颜色匹配。 像这样:

var coordinate;
for(int i=0; i<pixels.length;i++){
    if(pixel[i] == yourcolor){
       coordinate=i;
       break;
    }
}
var coordX = coordinate%400; //coordinate X = which column
var coordY = coordinate/200; //coordinate Y = which row

因此,如果匹配像素是第400个,则它将是第二行中的第一个像素(因为索引是从0 - > 0-399 =第一行,400-799 =第二行,依此类推)。 / p>

上一个假设:

我认为它很慢,因为它睡眠时间为10000毫秒,删除该命令。

sleep(10000);

另外我建议不要将多个命令放在一行中。