Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to capture screen image with mouse pointer on it in Java

How to capture screen image with mouse pointer on it in Java? In know that i can capture screen with Robot class, but it captures screen without mouse pointer on it, so this is not an solution for me.

like image 951
solgar Avatar asked Jun 02 '10 23:06

solgar


People also ask

How do I screenshot my screen with cursor?

Alternatively, press “S on the keyboard to quickly open the “Save As” window. That's how you capture screenshots with a visible mouse cursor on Windows 10.

How do you take a screenshot in Java?

Taking a Screenshot Using RobotThe dimensions of the screen are accessible through the Toolkit class by using its getScreenSize() method. On systems with multiple screens, the primary display is used by default. After capturing the screen into BufferedImage, we can write it to the file with ImageIO. write().


1 Answers

That's not directly possible, but you can use MouseInfo#getPointerInfo() to get information where the pointer is currently located.

int x = MouseInfo.getPointerInfo().getLocation().x;
int y = MouseInfo.getPointerInfo().getLocation().y;

After getting the screenshot as BufferedImage, you can place your own cursor image at exactly that location on the screenshot with help of Java 2D API.

Rectangle screen = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage screenCapture = new Robot().createScreenCapture(screen);

Image cursor = ImageIO.read(new File("c:/cursor.gif"));
int x = MouseInfo.getPointerInfo().getLocation().x;
int y = MouseInfo.getPointerInfo().getLocation().y;

Graphics2D graphics2D = screenCapture.createGraphics();
graphics2D.drawImage(cursor, x, y, 16, 16, null); // cursor.gif is 16x16 size.
ImageIO.write(screenCapture, "GIF", new File("c:/capture.gif"));
like image 153
BalusC Avatar answered Oct 24 '22 18:10

BalusC