2016-08-22 55 views
0

問題: 我在一個Java項目中使用JCEF(Java的鉻嵌入式框架),現在我想的網頁在CEF瀏覽器的截圖,但我沒有」爲此找到API。有沒有辦法做到這一點?非常感謝!獲取網頁的截圖中JCEF瀏覽器

+3

[如何將Chromium嵌入式框架(CEF)與java集成]可能的重複(http://stackoverflow.com/questions/21192279/how-to-integrate-chromium-embedded-framework-cef-with-java) –

+0

@GeorgeGarchagudashvili但我仍然找不到任何方法來做到這一點...... – Bode

回答

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等)。

如果任何人都可以提供直接存儲組件的代碼示例,而不將其捕獲爲更大屏幕的一部分(它也會捕獲您感興趣的其他組件) d非常感興趣。