Existe uma classe Robot na API padrão Java, que pode implementar capturas de tela e simular operações de mouse e teclado. Apenas uma captura de tela é mostrada aqui.
O método principal para fazer capturas de tela é createScreenCapture (Rectangle rect). Este método requer um objeto Rectangle que é uma área retangular que define a tela.
novo retângulo (int x, int y, int width, int height), os quatro parâmetros são a coordenada x do canto superior esquerdo do retângulo, a coordenada y do canto superior esquerdo do retângulo, a largura do retângulo, e a altura do retângulo. O método screenshot retorna um objeto BufferedImage, código de exemplo:
/** * Especifique uma captura de tela da área da tela e retorne o objeto BufferedImage da captura de tela * @param x * @param y * @param width * @param height * @return */ public BufferedImage getScreenShot(int x, int y, largura interna, altura interna) { BufferedImage bfImage = null; tente { Robô robô = novo Robô (); robot.createScreenCapture(new Rectangle(x, y, largura, altura)); catch (AWTException e) { e.printStackTrace();
Se você precisar salvar a captura de tela como um arquivo, use ImageIO.write(RenderedImage im, String formatName, File output), código de exemplo:
/** * Faça uma captura de tela da área especificada da tela e salve-a no diretório especificado * @param x * @param y * @param width * @param height * @param savePath - Caminho para salvar o arquivo * @param fileName - Salvar o arquivo nome * @param formato - Formato do arquivo*/ public void screenShotAsFile(int x, int y, int width, int height, String savePath, String fileName, String format) { try { Robot robot = new Robot(); BufferedImage bfImage = robot.createScreenCapture(new Rectangle(x, y, width, height)); Caminho do arquivo = new File(savePath); , formato, arquivo); } catch (AWTException e) { e.printStackTrace(); e.printStackTrace();
Depois de capturar a captura de tela, talvez precisemos recortá-la. Envolve principalmente duas classes, CropImageFilter e FilteredImageSource. Para uma introdução a essas duas classes, consulte a documentação java.
/** *Corte de imagem BufferedImage* @param srcBfImg - o BufferedImage recortado * @param x - a coordenada X do canto superior esquerdo do ponto de recorte * @param y - a coordenada Y do canto superior esquerdo do ponto de recorte * @param width - a largura da imagem recortada* @param height - a altura da imagem recortada* @return o BufferedImage recortado */ public BufferedImage cutBufferedImage (BufferedImage srcBfImg, int x, int y, int width, int height) { BufferedImage cutedImage = null; CropImageFilter cropFilter = new CropImageFilter (x, y, largura, altura); FilteredImageSource(srcBfImg.getSource(), cropFilter)); new BufferedImage(largura, altura, BufferedImage.TYPE_INT_RGB g = cutedImage.getGraphics(); descartar(); return imagem fofa }
Se você precisar salvar o arquivo cortado após o corte, use ImageIO.write e consulte o código acima para salvar a captura de tela como um arquivo.