Capture d'écran avec JavaFX

package fr.ronanlefichant.screenshot;

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.image.WritableImage;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 * JavaFX App
 */
public class App extends Application {

  public static void main(String[] args) {
    launch();
  }

  @Override
  public void start(Stage stage) {

    Label label = new Label("Label - Capture d'écran");

    // La scène à capturer
    Scene scene = new Scene(new StackPane(label), 640, 480);

    // L'image avec sa taille (taille de la scène)
    WritableImage writableImage = new WritableImage(640, 480);

    // Capture d'écran
    scene.snapshot(writableImage);

    // Le fichier où enregistrer l'image
    File imageFile = new File("screenshot.png");

    // Conversion d'une image JavaFX vers BufferedImage
    BufferedImage bufferedImage = SwingFXUtils.fromFXImage(writableImage, null);

    try {
      // Enregistrement de l'image dans le fichier
      ImageIO.write(bufferedImage, "png", imageFile);
    } catch (Exception e) {
      e.printStackTrace();
    }

    stage.setScene(scene);
    stage.show();
  }

}

Commentaires