Java完成屏幕截圖及剪裁。本站提示廣大學習愛好者:(Java完成屏幕截圖及剪裁)文章只能為提供參考,不一定能成為您想要的結果。以下是Java完成屏幕截圖及剪裁正文
Java尺度API中有個Robot類,該類可以完成屏幕截圖,模仿鼠標鍵盤操作這些功效。這裡只展現其屏幕截圖。
截圖的症結辦法createScreenCapture(Rectangle rect) ,該辦法須要一個Rectangle對象,Rectangle就是界說屏幕的一塊矩形區域,結構Rectangle也相當輕易:
new Rectangle(int x, int y, int width, int height),四個參數分離是矩形左上角x坐標,矩形左上角y坐標,矩形寬度,矩形高度。截圖辦法前往BufferedImage對象,示例代碼:
/** * 指定屏幕區域截圖,前往截圖的BufferedImage對象 * @param x * @param y * @param width * @param height * @return */ public BufferedImage getScreenShot(int x, int y, int width, int height) { BufferedImage bfImage = null; try { Robot robot = new Robot(); bfImage = robot.createScreenCapture(new Rectangle(x, y, width, height)); } catch (AWTException e) { e.printStackTrace(); } return bfImage; }
假如須要把截圖堅持為文件,應用ImageIO.write(RenderedImage im, String formatName, File output) ,示例代碼:
/** * 指定屏幕區域截圖,保留到指定目次 * @param x * @param y * @param width * @param height * @param savePath - 文件保留途徑 * @param fileName - 文件保留稱號 * @param format - 文件格局 */ 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)); File path = new File(savePath); File file = new File(path, fileName+ "." + format); ImageIO.write(bfImage, format, file); } catch (AWTException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
捕獲屏幕截圖後,或許,我們須要對其剪裁。重要觸及兩個類CropImageFilter和FilteredImageSource,關於這兩個類的引見,看java文檔把。
/** * BufferedImage圖片剪裁 * @param srcBfImg - 被剪裁的BufferedImage * @param x - 左上角剪裁點X坐標 * @param y - 左上角剪裁點Y坐標 * @param width - 剪裁出的圖片的寬度 * @param height - 剪裁出的圖片的高度 * @return 剪裁獲得的BufferedImage */ public BufferedImage cutBufferedImage(BufferedImage srcBfImg, int x, int y, int width, int height) { BufferedImage cutedImage = null; CropImageFilter cropFilter = new CropImageFilter(x, y, width, height); Image img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(srcBfImg.getSource(), cropFilter)); cutedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = cutedImage.getGraphics(); g.drawImage(img, 0, 0, null); g.dispose(); return cutedImage; }
假如剪裁後須要保留剪裁獲得的文件,應用ImageIO.write,參考下面把截圖堅持為文件的代碼。