Capturing screen shot using java program



Capturing screenshot using java

Here i will tell you how to write a program using java which is capable of capturing screenshots(either whole or partial).And save it as an image.

Which java API ?

The java.awt.Robot class provides a useful method for capturing a screenshot.Here is the method prototype.

BufferedImage createScreenCapture(Rectangle screenRect)

It is clear from the prototype that this function returns a BufferedImage and takes a Rectangle class object (portion of the screen to capture) as the argument.The BufferedImage which is returned could be saved using ImageIO class write method.Lets begin with the program.


1) Capturing full screen


In order to capture full screen using createScreenCapture(Rectangle screenRect)
screenRect should have the full screen size and in order to do that we will use Toolkit class of java.

Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());


Now here begins the whole program.

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class FullScreenCaptureExample {
    public static void main(String[] args) {
        try {
            Robot robot = new Robot();
            String format = "jpg";//can be,“png”, “bmp”,"jpeg" etc
            String fileName = "screenshot." + format;
             
            Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
            BufferedImage screenImg = robot.createScreenCapture(screenRect);
            ImageIO.write(screenImg, format, new File(fileName));
             
            System.out.println("screenshot saved!");
        } 
        catch (AWTException | IOException ex) {
            System.err.println(ex);
        }
    }
}



2)Capturing a portion of screen


You can also capture only a portion of screen by defining the rectangle object of createScreenCapture().

Rectangle area=new Rectangle(int startxpos,int startypos,int endxpos,int endypos)
startxpos >>Starting x position in pixels.
startypos>> Starting y position in pixels.
endxpos >> Ending x position in pixels.
endypos >>Ending y position in pixels

Here is the complete code.

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class PartialScreenCaptureExample {
    public static void main(String[] args) {
        try {
            Robot robot = new Robot();
            String format = "jpg";
            String fileName = "PartialScreenshot." + format;
             
            
            Rectangle captureRect = new Rectangle(0, 0, 100,100);/*top left corner to 100 pixels down and 100 pixels right*/
            BufferedImage screenFullImage = robot.createScreenCapture(captureRect);
            ImageIO.write(screenFullImage, format, new File(fileName));
             
            System.out.println("partial screenshot saved!");
        } catch (AWTException | IOException ex) {
            System.err.println(ex);
        }
    }
}

Comments