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