In der Java-Standard-API gibt es eine Robot-Klasse, die Screenshots implementieren und Maus- und Tastaturoperationen simulieren kann. Hier wird nur ein Screenshot davon gezeigt.
Die wichtigste Methode zum Aufnehmen von Screenshots ist createScreenCapture(Rectangle rect). Diese Methode erfordert ein Rechteck-Objekt, das den Bildschirm definiert. Es ist auch recht einfach, ein Rechteck zu erstellen.
neues Rechteck (int x, int y, int width, int height), die vier Parameter sind die x-Koordinate der oberen linken Ecke des Rechtecks, die y-Koordinate der oberen linken Ecke des Rechtecks, die Breite des Rechtecks, und die Höhe des Rechtecks. Die Screenshot-Methode gibt ein BufferedImage-Objekt zurück, Beispielcode:
/** * Geben Sie einen Screenshot des Bildschirmbereichs an und geben Sie das BufferedImage-Objekt des Screenshots zurück * @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(); robot.createScreenCapture(new Rectangle(x, y, width, height));
Wenn Sie den Screenshot als Datei speichern müssen, verwenden Sie ImageIO.write(RenderedImage im, String formatName, File Output), Beispielcode:
/** * Machen Sie einen Screenshot des angegebenen Bildschirmbereichs und speichern Sie ihn im angegebenen Verzeichnis * @param x * @param y * @param width * @param height * @param savePath – Dateispeicherpfad * @param fileName – Dateispeicherung name * @param format – Dateiformat*/ 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 = new File(path, fileName+ "." + format); , Format, Datei); } Catch (AWTException e) { e.printStackTrace( } Catch (IOException e) { e.printStackTrace(); } }
Nachdem wir den Screenshot aufgenommen haben, müssen wir ihn möglicherweise zuschneiden. Es handelt sich hauptsächlich um zwei Klassen, CropImageFilter und FilteredImageSource. Eine Einführung in diese beiden Klassen finden Sie in der Java-Dokumentation.
/** *BufferedImage-Bildzuschnitt* @param srcBfImg – das beschnittene BufferedImage * @param x – die X-Koordinate der oberen linken Ecke des Beschneidungspunkts * @param y – die Y-Koordinate der oberen linken Ecke des Beschneidungspunkts * @param width – die Breite des zugeschnittenen Bildes* @param height – die Höhe des zugeschnittenen Bildes* @return das zugeschnittene 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(img, 0, 0, null); dispose(); return cutedImage }
Wenn Sie die zugeschnittene Datei nach dem Zuschneiden speichern müssen, verwenden Sie ImageIO.write und beziehen sich auf den obigen Code, um den Screenshot als Datei zu speichern.