import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.geometry.Rectangle2D;
import javafx.scene.image.WritableImage;
import javafx.scene.robot.Robot;
import javafx.stage.Stage;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;

public class TestSnapRobot extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        var robot = new Robot();
        WritableImage image =
                robot.getScreenCapture(null, new Rectangle2D(0, 0, 2560, 1600), true);
        BufferedImage tempImg = SwingFXUtils.fromFXImage(image, null);
        File outfile = new File("./javafxRobotSnap.png");
        ImageIO.write(tempImg, "png", outfile);

        var awtRobot = new java.awt.Robot();
        Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
        final var multiResolutionScreenCapture = awtRobot.createMultiResolutionScreenCapture(screenRect);
        Image nativeResImage;
        if(multiResolutionScreenCapture.getResolutionVariants().size() > 1) {
            nativeResImage = multiResolutionScreenCapture.getResolutionVariants().get(1);
        } else {
            nativeResImage = multiResolutionScreenCapture.getResolutionVariants().get(0);
        }
        ImageIO.write((RenderedImage) nativeResImage, "png", new File("./awtRobotSnap.png"));

    }
}
