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

solgar picture solgar · Jun 3, 2010 · Viewed 9.4k times · Source

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.

Answer

BalusC picture BalusC · Jun 3, 2010

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"));