javarobot:java的Robot类实现抓屏



主要使用是java.util.Robot类来捕获屏幕,可以实现对屏幕个矩形区域捕获,通过这个类,我们也可以实现个远程桌面控制


package com.qiu.util;
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
/** *//**@Author Qiu_BaiChao
*个简单屏幕抓图
如抓取http://www.bt285.cn/content.php?id=1196863 中甜性涩爱照片
*
**/
public ScreenCapture {
//test
public void (String args) throws Exception{
String userdir = .getProperty("user.dir");
File tempFile = File("d:","temp.png");
ScreenCapture capture = ScreenCapture.getInstance;
capture.captureImage;
JFrame frame = JFrame;
JPanel panel = JPanel;
panel.Layout( BorderLayout);
JLabel imagebox = JLabel;
panel.add(BorderLayout.CENTER,imagebox);
imagebox.Icon(capture.getPickedIcon);
capture.saveToFile(tempFile);
capture.captureImage;
imagebox.Icon(capture.getPickedIcon);
frame.ContentPane(panel);
frame.Size(400,300);
frame.show;
.out.prln("Over");
}
private ScreenCapture {
try{
robot = Robot;
}
catch(AWTException e) {
.err.prln("Internal Error: " + e);
e.prStackTrace;
}
JPanel cp = (JPanel)dialog.getContentPane;
cp.Layout( BorderLayout);
labFullScreenImage.addMouseListener( MouseAdapter {
public void mouseReleased(MouseEvent evn) {
isFirstPo = true;
pickedImage = fullScreenImage.getSubimage(recX,recY,recW,recH);
dialog.Visible(false);
}
});
labFullScreenImage.addMouseMotionListener( MouseMotionAdapter {
public void mouseDragged(MouseEvent evn) {
(isFirstPo) {
x1 = evn.getX;
y1 = evn.getY;
isFirstPo = false;
}
{
x2 = evn.getX;
y2 = evn.getY;
maxX = Math.max(x1,x2);
maxY = Math.max(y1,y2);
minX = Math.min(x1,x2);
minY = Math.min(y1,y2);
recX = minX;
recY = minY;
recW = maxX-minX;
recH = maxY-minY;
labFullScreenImage.drawRectangle(recX,recY,recW,recH);
}
}
public void mouseMoved(MouseEvent e) {
labFullScreenImage.drawCross(e.getX,e.getY);
}
});
cp.add(BorderLayout.CENTER,labFullScreenImage);
dialog.Cursor(Cursor.getPredCursor(Cursor.CROSSHAIR_CURSOR));
dialog.AlwaysOnTop(true);
dialog.MaximumSize(
Toolkit.getDefaultToolkit.getScreenSize);
dialog.Undecorated(true);
dialog.Size(dialog.getMaximumSize);
dialog.Modal(true);
}
//Singleton Pattern
public ScreenCapture getInstance {
defaultCapturer;
}
/** *//**捕捉全屏慕*/
public Icon captureFullScreen {
fullScreenImage = robot.createScreenCapture( Rectangle(
Toolkit.getDefaultToolkit.getScreenSize));
ImageIcon icon = ImageIcon(fullScreenImage);
icon;
}
/** *//**捕捉屏幕个矫形区域
*/
public void captureImage {
fullScreenImage = robot.createScreenCapture( Rectangle(
Toolkit.getDefaultToolkit.getScreenSize));
ImageIcon icon = ImageIcon(fullScreenImage);
labFullScreenImage.Icon(icon);
dialog.Visible(true);
}
/** *//**得到捕捉后BufferedImage*/
public BufferedImage getPickedImage {
pickedImage;
}
/** *//**得到捕捉后Icon*/
public ImageIcon getPickedIcon {
ImageIcon(getPickedImage);
}
/** *//**储存为个文件,为PNG格式
*@deprecated
*replaced by saveAsPNG(File file)
**/
@Deprecated
public void saveToFile(File file) throws IOException{
ImageIO.write(getPickedImage,defaultImageFormater,file);
}
/** *//**储存为个文件,为PNG格式*/
public void saveAsPNG(File file) throws IOException {
ImageIO.write(getPickedImage,"png",file);
}
/** *//**储存为个JPEG格式图像文件*/
public void saveAsJPEG(File file) throws IOException {
ImageIO.write(getPickedImage,"JPEG",file);

Tags:  facerobot robot java.util.robot javarobot

延伸阅读

最新评论

发表评论