Aqui mostrarei como fazer uma classe para tirar Screen shots .
Estava pensando com quão complexo seria fazer uma classe que tirasse screen shots do compulador local e o armazenasse em um arquivo. Perguntando ao tio “G” descobri a classe Robot, que possui o método createScreenCapture.
Agora mostrarei como implementar esta funcionalidade:
Robot robot = new Robot(); //Definindo o retângulo que será a área de captura da tela que, neste caso, será a tela inteira. Rectangle rect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); BufferedImage img = robot.createScreenCapture(rect);
Aqui definimos a área de captura e obtivemos um BufferedImage, que já é nossa imagem. Agora é só persisti-la no disco.
//Capturando o ImageWriter e ImageWriterParam
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpeg").next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
//Definindo o modo de compressão e a qualidade
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(1);
//Persistindo a imagem
writer.setOutput(new FileImageOutputStream(arquivo));
IIOImage iioimage = new IIOImage(img, null, null);
writer.write(null, iioimage, iwp);
writer.dispose();
Aqui capturamos o ImageWriter e ImageWriterParam para configurar o método de compressão e a qualidade da imagem.
Na linha 07 definimos a qualidade como 1, onde o valor varia de 0 (zero), maior compressão e menor qualidade, até 1 (um), menor compressão e maior qualidade. Em seguida persistimos o arquivo no HD.
Pronto! Simples, não?!.
Faça o download do exemplo aqui.
Até a próxima!
Neste caso será a tela inteira.