Javaスクリーンキャプチャを実装する

パッケージ 1。

インポートjava.awt.AWTException;
java.awt.Dimensionをインポートします。
java.awt.MouseInfoをインポートします。
java.awt.Rectangle をインポートします。
java.awt.Robotをインポートします。
java.awt.Toolkitをインポートします。
インポート java.awt.image.BufferedImage;
java.io.ファイルをインポートします。
インポート java.io.IOException;

インポートjavax.imageio.ImageIO;

org.sikuli.script.Region をインポートします。
org.sikuli.script.Screen をインポートします。
org.sikuli.script.ScreenImage をインポートします。

public class GetScreen {     public static void main(String[] args) throws Exception {         //screenClipUser();         takePictureOfError("画像");     }



    public static void takePictureOfError(String Name) throws IOException, AWTException {         // ページ全体を直接クロールします。Toolkit をサポートするためにサードパーティのパッケージは必要ありません         toolkit = Toolkit.getDefaultToolkit();         Dimension screenSize = toolkit.getScreenSize();         Rectangle screenRect = new Rectangle (screenSize);         Robot robot = new Robot();         BufferedImage image = robot.createScreenCapture(screenRect);         ImageIO.write(image, "png", new File("D:\\SikuliImages\\PrintScreen11.png" ));     }








    
    public static void screenClipUser() throws IOException{         //このスクリーンショット メソッドでは、マウスで領域を選択する必要があります         Screen screen = Screen.getPrimaryScreen();


        リージョン領域 = screen.selectRegion("画像としてキャプチャする領域を選択");
        ScreenImage クリップ = area.getLastScreenImage(); // screen.userCapture();
        ScreenImage printScreen = area.getScreen().capture();
        //キャプチャマウスで選択した領域を取得
        ImageIO.write(clip.getImage(), "PNG", new File("D:\\SikuliImages\\Clip.png"));
        //デスクトップ全体をキャプチャ
        ImageIO.write(printScreen .getImage (), "PNG", new File("D:\\SikuliImages\\PrintScreen.png"));
        //screenCaptureRegion(screen);


    
    public static void screenCaptureRegion(Screen screen) throws IOException{ java.awt.Point point = MouseInfo.getPointerInfo().     getLocation         ();         System.out.println("マウスの位置が前に選択されたものと一致します: " + ポイント);         //ScreenImagecaptureRegion = screen.capture(point.x, point.y, 200, 200);         //ScreenImagecaptureRegion = screen.capture(clip.x,clip.y,clip.w,clip.h);         //ImageIO.write(capturedRegion.getImage(), "PNG", new File("D:\\SikuliImages\\CapturedRegion.png"));     } }







 

Java のロボットのようなスクリーンショットと画像のトリミングを使用します。
  Java 標準 API には Robot クラスがあり、スクリーンショットを実現したり、マウスやキーボードの操作をシミュレートしたりできます。ここではスクリーンショットのみを示します。
  スクリーンショットの主なメソッドは createScreenCapture(Rectangle rect) で、これには Rectangle オブジェクトが必要です。Rectangle は画面を定義する長方形の領域です。Rectangle を構築するのも非常に簡単です: new Rectangle(int x, int y, int width,
int height), four パラメータは、長方形の左上隅の 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();          }          bfImage を返します;      }









 スクリーンショットをファイルとして保存する必要がある場合は、ImageIO.write(RenderedImage im, String formatName, File Output) のサンプル コードを使用します。

     /**
      * 指定された画面領域のスクリーンショットを取得し、指定されたディレクトリに保存します
      * @param x
      * @param y
      * @param width
      * @param height
      * @param savePath - ファイルの保存パス
      * @param fileName - ファイルの保存name
      * @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));              ファイルパス = new File(savePath);              ファイル file = new File(path, fileName+ "." + format);





             ImageIO.write(bfImage, フォーマット, ファイル);
         } catch (AWTException e) {              e.printStackTrace();              } catch (IOException e) {              e.printStackTrace();          }      }




 スクリーンショットをキャプチャした後、おそらくそれをトリミングする必要があります。これには主に CropImageFilter と FilteredImageSource という 2 つのクラスが含まれます。これら 2 つのクラスの概要については、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);            画像 img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(srcBfImg.getSource(), CropFilter));  



         cutedImage = 新しい BufferedImage(幅, 高さ, BufferedImage.TYPE_INT_RGB);  
         グラフィックス g = CutedImage.getGraphics();  
         g.drawImage(img, 0, 0, null);  
         g.dispose(); 
         かわいい画像を返します。
     }

おすすめ

転載: blog.csdn.net/qq_30273575/article/details/132215216