В стандартном API Java есть класс 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 ширина, int высота) {BufferedImage bfImage = null try {Робот-робот = новый робот (); 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 — сохранение файла 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 (новый Rectangle (x, y, ширина, высота)); Путь к файлу = новый файл (savePath); Файл файла = новый файл (путь, имя файла + "." + формат); , формат, файл); } 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) {BufferedImagecutedImage = null; CropImageFilter CropFilter = новый CropImageFilter (x, y, ширина, высота); Изображение img = Toolkit.getDefaultToolkit().createImage(новый); FilteredImageSource(srcBfImg.getSource(), CutedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g =cutedImage.getGraphics(); g.drawImage(img, 0, 0, null); Распоряжаться () вернуть вырезанное изображение }
Если вам нужно сохранить обрезанный файл после обрезки, используйте ImageIO.write и обратитесь к приведенному выше коду, чтобы сохранить снимок экрана в виде файла.