Java et les captures d’écran

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();
  }
}

1 thought on “Java et les captures d’écran

Leave a Reply

%d bloggers like this: