En ocasiones puede ser útil realizar una captura de pantalla desde una aplicación Java. Ya sea para el propio uso de la aplicación, o bien, para facilitar la tarea a usuarios inexpertos, habilitando por ejemplo un botón para capturar pantalla en vez de tener que recurrir a la tecla ImprPant del teclado, ya que puede que ni siquiera sepan de su existencia. También puede ser útil en entornos donde no haya teclado y se utilice sólo el ratón o en pantallas táctiles.
Para realizar la captura de pantalla, se ha optado por implementar un método que se encargue de capturarla y guardarla en un fichero con formato png, que suele ser el estándar para dibujos y suele ocupar poco. El método recibe el nombre del fichero (se le puede añadir la ruta) dónde se guardará la captura. Hay que tener en cuenta que puede lanzar excepciones que habrá que controlar, como en el caso de que no se pueda crear el fichero o que la ruta no sea válida.
El método en Java para capturar pantalla es el siguiente:
public void captureScreen(String fileName) throws Exception {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle screenRectangle = new Rectangle(screenSize);
Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(screenRectangle);
ImageIO.write(image, "png", new File(fileName));
}
La mayoría de IDEs como Eclipse suele añadir los imports de las clases que necesita, pero, por si acaso, los siguientes imports son los que debería tener para que funcione el código correctamente. En Eclipse, con la combinación de teclas Alt+Control+O, los suele agregar de forma automática. También con Control+espacio, estando posicionado al final de la clase que falte por importar para este capturador de pantalla. En otros IDEs como intelliJ, pueden tener otras combinaciones de teclas para esto.
import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.io.File;