程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java完成屏幕截圖及剪裁

Java完成屏幕截圖及剪裁

編輯:關於JAVA

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,參考下面把截圖堅持為文件的代碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved