问题: 我在java项目中使用JCEF(java-Chromium Embedded Framework),现在我想在CEF浏览器中获取网页的截图,但我没有为此找到API。有办法做到这一点吗?非常感谢!
答案 0 :(得分:0)
据我所知,CefBrowser是基于AWT的。要创建此类组件的屏幕截图,您可以(必须?)创建整个屏幕的捕获,限制为组件覆盖的区域。
这样的事情会起作用:
// Your browser instance.
org.cef.browser.CefBrowser browser = ...
// Obtain the component that you want to capture in a screenshot.
java.awt.Component component = browser.getUIComponent();
// Determine what area of the entire screen is covered by the component.
java.awt.Point p = new java.awt.Point(0, 0);
javax.swing.SwingUtilities.convertPointToScreen(p, component);
java.awt.Rectangle region = component.getBounds();
region.x = p.x;
region.y = p.y;
// Store the selected area from the screen in a image buffer.
java.awt.image.BufferedImage image = new java.awt.Robot().createScreenCapture( region );
要保存缓冲区到文件,请创建File
实例(如果要向用户显示一个不错的“另存为”对话框,请使用JFileChooser
)并使用javax.imageio.ImageIO#write(RenderedImage, String, File)
将图像存储到文件中。第二个参数指的是您要使用的文件格式(png,bmp等)。
如果任何人都可以提供直接存储组件的代码示例,而不是将其作为较大屏幕的一部分捕获(它还将捕获您感兴趣的其他组件),我会非常感兴趣。