目前,我正在尝试使用机器人功能创建屏幕截图。现在我已经可以使用按钮进行屏幕截图并将其保存为图像形式。现在我想做同样的事情,但我想生成不同的文件名,例如截图1.png,截图2.png。我可以知道如何使用 for 循环随机生成数字吗?
这是我当前的 Java 工作代码:
private void jbtnCaptureActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
Robot ro = new Robot();
BufferedImage capture = ro.createScreenCapture(screenRect);
File f;
f = new File("myimage1.jpg");
ImageIO.write(capture, "jpg", f);
System.out.println("Success");
} catch (Exception e){
System.out.println("Unable to capture the screen" + e);
}
}
有人可以帮我解决这个问题吗?提前致谢。
最佳答案
我猜每个屏幕捕获都是通过某种按钮右键单击触发的(而不是循环中的多个捕获)?
最直接的方法是保留一个整数作为文件名的运行序列:
private void jbtnCaptureActionPerformed(java.awt.event.ActionEvent evt) {
.....
File f = new File("myimage" + (this.filenameSeq++) + .jpg");
......
}
<小时/>
而且,如果您的捕获不是非常频繁地生成(例如每秒数百个文件),您可以采取另一种方法来避免保持运行序列。您可以根据当前时间生成文件名,并检查文件是否存在。如果存在,则继续附加序列号,直到发现文件不存在。在伪代码中:
String filenameBase = "myImage";
String currentTimestamp = new SimpleDateFormat("yyyymmddHHMMss").format(now());
File f = new File(filenameBase + currentTimestamp + ".png");
for (int i = 0; f.exists(); i++) {
f = new File(filenameBase + currentTimestamp + "-" + i + ".png");
}
// so here, you will have a filename which is not yet exists in your filessystem
关于Java:为机器人屏幕截图生成随机文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37266372/