Java 화면 캡처 및 자르기

Java 표준 API에는 화면 캡처, 마우스 키보드 조작을 시뮬레이션하는 로봇 클래스가 있습니다.화면 캡처만 보여줍니다.
캡처의 관건적인 방법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와 관련된다. 이 두 종류의 소개는 자바 문서를 보십시오.

   /**
   * 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, 위에서 캡처를 파일로 유지하는 코드를 참고하십시오.

좋은 웹페이지 즐겨찾기