توجد فئة Robot في واجهة برمجة تطبيقات Java القياسية، والتي يمكنها تنفيذ لقطات الشاشة ومحاكاة عمليات الماوس ولوحة المفاتيح. يتم عرض لقطة شاشة منه فقط هنا.
الطريقة الأساسية لالتقاط لقطات الشاشة هي createScreenCapture (مستطيل مستطيل). تتطلب هذه الطريقة كائنًا مستطيلًا.
مستطيل جديد (int x، int y، int width، int height)، المعلمات الأربع هي إحداثي x للزاوية اليسرى العليا للمستطيل، إحداثي y للزاوية اليسرى العليا للمستطيل، عرض المستطيل، وارتفاع المستطيل . يقوم أسلوب Screenshot بإرجاع كائن 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; حاول { Robot robot = new Robot(); 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); ، التنسيق، الملف)؛ } Catch (AWTException e) { e.printStackTrace() } Catch (IOException e) { e.printStackTrace(); } }
بعد التقاط لقطة الشاشة، ربما نحتاج إلى اقتصاصها. يتضمن بشكل أساسي فئتين، CropImageFilter وFilteredImageSource للحصول على مقدمة لهاتين الفئتين، راجع وثائق Java.
/** * اقتصاص صورة BufferedImage* @param srcBfImg - الصورة المخزنة المقطوعة * @param x - إحداثي X للركن الأيسر العلوي من نقطة القطع * @param y - إحداثي Y للركن الأيسر العلوي من نقطة القطع * @param width - عرض الصورة التي تم اقتصاصها* @param height - ارتفاع الصورة التي تم اقتصاصها* @return the BufferedImage التي تم اقتصاصها */ public BufferedImage CutBufferedImage(BufferedImage srcBfImg, int x, int y, int width, int height) { BufferedImagecutedImage = null; CropImageFilter CropFilter = new CropImageFilter(x, y, width, height); FilteredImageSource(srcBfImg.getSource(),cropFilter));cutedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); التخلص();
إذا كنت بحاجة إلى حفظ الملف المقطوع بعد القطع، فاستخدم ImageIO.write وارجع إلى الكود أعلاه لحفظ لقطة الشاشة كملف.