1

我试图设计一种方法来获取在浏览器中运行的 Java 小程序的屏幕截图,但我似乎无法让它工作。我成功地使用cutycapt从“普通”网站获取屏幕截图,但我很快发现qtwebkit它似乎依赖于渲染的内容不支持 java。我也尝试过IEcapt认为它会以某种方式在系统上继承 IE 的 Java 呈现功能,但它不起作用。Flash 似乎也无法在 中工作IEcapt,并且它没有启用插件的标志,所以我假设该功能也不存在。

有人对如何/index.jsp从 Windows 或 Linux 命令行渲染图像有任何想法吗?

4

3 回答 3

3

Selenium webdriver 在这里可能有用:

http://docs.seleniumhq.org/projects/webdriver/

它主要用于测试自动化,但它可能会有所帮助。

例如,它可以像这样使用:

import org.openqa.selenium.*;

WebDriver driver = new FirefoxDriver();  // create a Firefox webdriver instance
driver.get("http://www.google.com/");  // navigate to page
File screenshotFile = ((Screenshot)driver).getScreenshotAs(file); // capture screenshot
                                                                  // and save to a file

// here you can trigger any necessary actions on the website:
Webelement element = driver.findElement(By.name("q")).sendKeys("xxxxx");
element.click();
new WebDriverWait(driver, 10)).until(ExpectedConditions.titleContains("xxxxx"));

// and capture a new screenshot once the content has changed
File xxxScreenshotFile = ((Screenshot)driver).getScreenshotAs(file);
于 2013-08-02T20:16:22.447 回答
0

您是否尝试过使用java.awt.Robot?

    Rectangle rect = yourGragphicsConfiguration.getBounds();
    BufferedImage image = new Robot().createScreenCapture(rect);

如果你知道你的小程序的位置,你可能会得到它

    BufferedImage dest = image.getSubimage(appletX, appletY, appletHeight, appletWidth);
于 2013-08-01T09:29:19.663 回答
-1

您可以截取 Swing/AWT 组件的屏幕截图。

这可以通过两种方式完成。在这两种情况下,组件都必须是可见的。

不使用机器人:

BufferedImage image = new BufferedImage(component.getWidth(), 
component.getHeight(), BufferedImage.TYPE_INT_ARGB);
    Graphics g = image.getGraphics();
    component.paint(g);

与机器人一起使用:

在这种情况下,将制作该组件所在区域的屏幕截图。也就是说,如果组件与另一个应用程序窗口重叠,那么屏幕截图将包含另一个窗口的一个区域。

Point point = new Point(0, 0);
    SwingUtilities.convertPointToScreen(point, component);
    Rectangle region = component.getBounds();
    region.x = point.x;
    region.y = point.y;
    BufferedImage image= new Robot().createScreenCapture(region);

此信息摘自文章:Java 小程序开发过程中的常见问题

于 2014-08-20T08:07:19.740 回答