快速分析大型阵列

时间:2016-01-08 21:48:51

标签: java arrays performance

所以,我想非常快速地分析屏幕上每个像素的颜色。为此,我在双嵌套for循环中使用Robot.getPixelColor(i, j),其中i是我的屏幕宽度,j是我的屏幕高度。当然,这需要很长时间,因为我有一个1080屏幕。关于如何加快进程的任何建议?现在需要大约一个小时,我需要大约5秒。或者这是不可能的?在此先感谢!!

1 个答案:

答案 0 :(得分:0)

机器人很适合拍摄大图,也许适用于个别像素

至于你获得图像的所有像素 - 我得到大约50倍的加速。

  long tm=System.currentTimeMillis();
int i;
Toolkit it=Toolkit.getDefaultToolkit();
  Dimension d=it.getScreenSize();
  int w=(int)d.getWidth(), h=(int)d.getHeight();
  Rectangle rect=new Rectangle(0, 0, w, h);
  Robot r=null;
  try {
    r=new Robot();
  }
  catch(AWTException awte){ };
  BufferedImage ib=r.createScreenCapture(rect);
  int[] pix=ib.getRGB(0, 0, w, h, null, 0, w);
  for(i=0; i<pix.length; i++) pix[i]=pix[i]&0x00ffffff;
      System.out.println("t1 "+(System.currentTimeMillis()-tm));
       tm=System.currentTimeMillis();
  for(i=0; i<pix.length; i++) r.getPixelColor(i%w, i/w);
      System.out.println("t2 "+(System.currentTimeMillis()-tm));