This contains Java version of MrPowerGamerBR's answer.
I use MacbookPro 16 with bootcamp, and I used another question's answer to convert Image to BufferedImage.
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.MultiResolutionImage;
import java.io.File;
import javax.imageio.ImageIO;
public class Screenshot {
public static final long serialVersionUID = 1L;
/**
* Converts a given Image into a BufferedImage
* from https://stackoverflow.com/a/13605411
*
* @param img The Image to be converted
* @return The converted BufferedImage
*/
public static BufferedImage toBufferedImage(Image img) {
if (img instanceof BufferedImage) {
return (BufferedImage) img;
}
// Create a buffered image with transparency
BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
// Draw the image on to the buffered image
Graphics2D bGr = bimage.createGraphics();
bGr.drawImage(img, 0, 0, null);
bGr.dispose();
// Return the buffered image
return bimage;
}
public static void main(String[] args) {
try {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Robot robot = new Robot();
MultiResolutionImage multiResolutionImage = robot.createMultiResolutionScreenCapture(
new Rectangle(0, 0, (int) screenSize.getWidth(), (int) screenSize.getHeight()));
Image image = multiResolutionImage.getResolutionVariant(3072.0, 1920.0);
// it was found that image is actually BufferedImage, but if not, use toBufferedImage().
BufferedImage bufferedImage = toBufferedImage(image);
String path = "Shot.jpg";
ImageIO.write(bufferedImage, "jpg", new File(path));
System.out.println("Screenshot saved");
} catch (Exception ex) {
System.out.println(ex);
}
}
}