มีคลาส Robot ใน API มาตรฐาน Java ซึ่งสามารถใช้ภาพหน้าจอและจำลองการทำงานของเมาส์และคีย์บอร์ดได้ มีเพียงภาพหน้าจอเท่านั้นที่แสดงไว้ที่นี่
วิธีการหลักในการถ่ายภาพหน้าจอคือ createScreenCapture(Rectangle Rectangle) วิธีการนี้ต้องใช้วัตถุสี่เหลี่ยมผืนผ้า (Rectangle) คือพื้นที่สี่เหลี่ยมที่กำหนดหน้าจอ นอกจากนี้ การสร้างสี่เหลี่ยมผืนผ้าก็ค่อนข้างง่ายเช่นกัน:
สี่เหลี่ยมผืนผ้าใหม่ (int x, int y, ความกว้าง int, ความสูง int), พารามิเตอร์ทั้งสี่คือพิกัด 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; ลอง { Robot robot = new Robot(); robot.createScreenCapture (สี่เหลี่ยมผืนผ้าใหม่ (x, y, ความกว้าง, ความสูง)); } 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 - รูปแบบไฟล์*/ โมฆะสาธารณะ screenShotAsFile (int x, int y, ความกว้าง int, ความสูง int, String savePath, ชื่อไฟล์สตริง, รูปแบบสตริง) { ลอง { Robot robot = new Robot(); BufferedImage bfImage = robot.createScreenCapture(สี่เหลี่ยมผืนผ้าใหม่(x, y, ความกว้าง, ความสูง)); File path = new File(savePath); File file = new File(path, fileName+ "." + format); ImageIO.write(bfImage , รูปแบบ, ไฟล์); } 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) { BufferedImage cutedImage = null; CropImageFilter cropFilter = ใหม่ CropImageFilter(x, y, ความกว้าง, ความสูง); FilteredImageSource(srcBfImg.getSource(), cropFilter)); cutedImage = ใหม่ BufferedImage(ความกว้าง, ความสูง, BufferedImage.TYPE_INT_RGB); กราฟิก g = cutedImage.getGraphics(); กำจัด (); กลับ cutedImage; }
หากคุณต้องการบันทึกไฟล์ที่ตัดแต่งแล้วหลังจากการตัดแต่ง ให้ใช้ ImageIO.write และอ้างถึงโค้ดด้านบนเพื่อบันทึกภาพหน้าจอเป็นไฟล์