java.awt.Robot - 截图需要多长时间

时间:2015-05-08 13:25:41

标签: java linux awtrobot

我刚遇到一个奇怪的问题;我可以得到它,屏幕捕获代码需要不固定的时间:

startTime = System.currentTimeMillis();                 

endTime   = System.currentTimeMillis();
totalTime = endTime - startTime;
System.out.println(this.getId()+" A: TIME TAKEN BETWEEN SCREENSHOTS: "+totalTime);


java.awt.image.BufferedImage image = new java.awt.Robot().createScreenCapture(new java.awt.Rectangle(250,150,500,500));

endTime   = System.currentTimeMillis();
totalTime = endTime - startTime;
System.out.println(this.getId()+" B: TIME TAKEN BETWEEN SCREENSHOTS: "+totalTime);

这很奇怪,因为它有时候是108mls,下次是480mls :(所以很难弄清楚截图算法:S

所以我的问题是......如何找出截图将花费的时间或如何在0.5秒内完成截屏时间(限制)?

P.S。

  • jre 1.7

  • jdk 1.7

  • OS:linux

由于

1 个答案:

答案 0 :(得分:0)

我不完全确定你要完成什么,但我认为你不可能限制代码执行的时间,或者强迫它运行不到500毫秒。

也许以下内容可以解决问题?

您可以执行在不同线程中创建屏幕截图的任务,然后在主线程中您可以检查您想要的任何条件(例如创建屏幕截图需要多长时间)。

如果截图获取线程在时间限制内没有响应,或者已经或者未满足其他条件,则可以丢弃屏幕截图的结果。

这篇文章(Killing thread after some specified time limit in Java)也有一些建议,如果它没有及时完成,实际杀死该线程。