2016-08-22 3 views
0

Problème: J'utilise JCEF (java-chrome Cadre intégré) dans un projet java, maintenant je veux la capture d'écran de la page Web dans le navigateur CEF, mais je n » t trouver l'API pour cela. Y a-t-il un moyen de faire cela? Merci beaucoup!Obtenir capture d'écran de la page Web dans JCEF navigateur

+3

Possible copie de [Comment intégrer Chromium Embedded Framework (CEF) avec java] (http://stackoverflow.com/questions/21192279/how-to-integrate-chromium-embedded-framework-cef-with-java) –

+0

@GeorgeGarchagudashvili Mais je ne trouve toujours pas de méthode pour le faire ... – Bode

Répondre

0

Pour autant que je sache, CefBrowser est basé sur AWT. Pour créer une capture d'écran de ces composants, vous pouvez (devez?) Créer une capture de tout l'écran, limitée à la zone couverte par le composant.

Quelque chose comme cela fonctionnera:

// 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); 

Pour enregistrer au tampon dans un fichier, créer une instance File (en utilisant un JFileChooser si vous souhaitez présenter une belle sauvegarde en tant que dialogue à votre utilisateur) et l'utilisation javax.imageio.ImageIO#write(RenderedImage, String, File) pour stocker l'image dans le fichier. Le deuxième argument fait référence au format de fichier (png, bmp, etc.) que vous voulez utiliser.

Si quelqu'un peut fournir un échantillon de code qui stocke le composant directement, sans le capturer dans le cadre de l'écran plus grand (qui capturera également d'autres composants qui sont au-dessus de la sur laquelle vous êtes intéressé), d être très intéressé.