Aujourd’hui nous allons parler de Java et des captures d’écran.
Si il est facile de faire une copie d’écran du bureau grâce à la méthode createScreenCapture de la classe Robot.
1 2 3 4
Robot robot = new Robot(); BufferedImage image = robot.createScreenCapture(new Rectangle( Toolkit.getDefaultToolkit().getScreenSize())); ImageIO.write(image, "jpeg", new File("C:\\screenshot.jpeg"));
Il est nécessaire d’utiliser une petite astuce pour faire un screenshot d’un JComponent. Il est même possible de faire une capture d’écran d’un composant SWING sans que celui ci apparaisse à l’écran! Pour cela, on instancie une nouvelle image et on créé une instance de Graphics à partir de cette dernière. Puis on fait dessiner le JComponent dans ce Graphics, pour enfin sauvegarder l’image sur le disque dur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
void takeSnapShot(JPanel panel) { // Create a new image with the JComponent size BufferedImage bufImage = new BufferedImage(panel.getSize().width, panel.getSize().height,BufferedImage.TYPE_INT_ARGB); // The panel draw itself into the graphics of the image panel.paint(bufImage.createGraphics()); // Instantiate a file for saving the screenshot File imageFile = new File("./screenshot.png"); try { imageFile.createNewFile(); ImageIO.write(bufImage, "png", imageFile); } catch(Exception ex) { ex.printStackTrace(); } }