我有一个java程序来捕获Windows上的截图。这是代码的一部分。它在由YAJSW包装时生成黑色图像并作为Windows服务运行。
BufferedImage image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
ImageIO.write(image, "png", file.toFile());
我知道这是由于Windows服务的一些限制。但有什么方法可以让它发挥作用?
答案 0 :(得分:0)
我在同一主题How to take a screenshot in Java?
上发现了另一篇文章从第二个答案中尝试以下代码: 如果这不起作用,它将排除代码的一个隐藏部分导致错误的可能性。
import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; public class screen2image { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd hh mm ss a"); public void robo() throws Exception { Calendar now = Calendar.getInstance(); Robot robot = new Robot(); BufferedImage screenShot = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())); ImageIO.write(screenShot, "JPG", new File("d:\\"+formatter.format(now.getTime())+".jpg")); System.out.println(formatter.format(now.getTime())); } public static void main(String[] args) throws Exception { screen2image s2i = new screen2image(); while(1==1) { s2i.robo(); Thread.sleep(10000); } } }
希望它对你有所帮助! 如果这不起作用,您应该检查Windows / Java安装......