AWT机器人类Robot,实现屏幕的"拍照"
来源:互联网 发布:怎么禁止端口被扫描 编辑:程序博客网 时间:2024/05/20 03:46
AWT机器人类Robot,实现屏幕的"拍照"
很多时候,我们希望能为我们的JAVA程序实现自动测试,自动演示功能,或者是其它的一些鼠标和键盘控制的应用。出于这样的目的,自从JDK1.3开始,它就为我们提供了一个用来产生本机输入事件的机器人类--java.awt.Robot.
下面我们来看看Robot为我们提供了哪些功能。
BufferedImage createScreenCapture(Rectangle screenRect)createScreenCapture方法提供类似于键盘上的PrintScreen键的功能,将指定矩形区域内的屏幕像素copy下来产生一个BufferedImage。我们可以将这个方法用在图形程序中,或是用它来实现远端屏幕传输,可做成远端电脑监控程序等.(在该实例中就用的是这个方法)
void delay(int ms)用来将当前的程序(thread)休眠(sleep)若干毫秒(ms)。可用来控制程序的延时。
Color getPixelColor(int x, int y)取得给定屏幕坐标像素位置的颜色值.用处就不多说了.
void keyPress(int keycode)
void keyRelease(int keycode)
这两个方法的作用一看便知,用来产生指定键的按键按下与抬起动作,相当于Win32 API的keyb_event函数.可用于程序的自动演示、测试等.
void mouseMove(int x, int y)将鼠标光标移动到指定的屏幕坐标.可用于程序的自动演示、测试等.
void mousePress(int buttons)
void mouseRelease(int buttons)
void mouseWheel(int wheelAmt)
上面的三种方法,产生指定鼠标按钮的按下,抬起,及滚轮动作.一样也可用于程序的自动演示、测试等.
以上介绍了Robot提供的实用的键盘鼠标控制功能,要了解更多Robot的方法,请查阅JDK文档java.awt.Robot.下面是完整的源代码,可以直接运行。
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
/*******************************************************************
*该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照"
*ThisJavaBeanisusedtosnapshottheGUIina
*Javaapplication!Youcanembeded
*itintoyourjavaapplicationsourcecode,andus
*ittosnapshottherightGUIoftheapplication
*@seejavax.ImageIO
*@authorliluqun([email]liluqun@263.net[/email])
*@version1.0
*
*****************************************************/
publicclass
GuiCamera {
private String fileName; //文件名,但没有包括扩展名
private String defaultName = "GuiCamera";
staticintserialNum = 0;
private String imageFormat; //图像文件的格式
private String defaultImageFormat = "png";
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
/****************************************************************
*默认的文件前缀为GuiCamera,文件格式为PNG格式
*Thedefaultconstructwillusethedefault
*Imagefilesurname"GuiCamera",
*anddefaultimageformat"png"
****************************************************************/
public GuiCamera() {
fileName = defaultName;
imageFormat = defaultImageFormat;
}
/****************************************************************
*@paramsthesurnameofthesnapshotfile
*@paramformattheformatoftheimagefile,
*itcanbe"jpg"or"png"
*本构造支持JPG和PNG文件的存储
****************************************************************/
public GuiCamera(String s, String format) {
fileName = s;
imageFormat = format;
}
/****************************************************************
*对屏幕进行拍照
*snapShottheGuionce
****************************************************************/
publicvoid snapShot() {
try {
//拷贝屏幕到一个BufferedImage对象screenshot
BufferedImage screenshot =
(new Robot()).createScreenCapture(new Rectangle(0, 0,
(int)d.getWidth(),
(int)d.getHeight()));
serialNum++;
//根据文件前缀变量和文件格式变量,自动生成文件名
String name =
fileName + String.valueOf(serialNum) + "." + imageFormat;
File f = new File(name);
System.out.print("Save File " + name);
//将screenshot对象写入图像文件
ImageIO.write(screenshot, imageFormat, f);
System.out.print("..Finished!/n");
} catch (Exception ex) {
System.out.println(ex);
}
}
publicstaticvoid main(String[] args) {
GuiCamera cam = new GuiCamera("d://Hello", "png"); //
cam.snapShot();
}
}
(注:解释及源代码,都是来自互联网,我只是综合了一下,感谢原作者。)
- AWT机器人类Robot,实现屏幕的"拍照"
- java实现屏幕的"拍照"
- JAVA的秘密:AWT机器人Robot
- 07 java.awt.Robot的一些使用
- 屏幕的"拍照"
- java.awt.Robot
- Java.awt.Robot类
- java.awt.Robot
- AWT机器人Robot
- 总结java.awt.Robot类
- Robot生成桌面拍照
- 机器学习与人类思考的类比
- 写给人类的机器学习 翻译完成
- AWT组件的Swing实现
- awt-事件处理的实现
- 写给人类的机器学习 一、为什么机器学习重要
- AWT 截取屏幕图像
- 用Java Robot对象实现服务器屏幕远程监视
- 小故事大智慧
- QQ截图
- SQL2005SP2以及VS2005SP1补丁下载
- 如何使用Base64进行加密和解密
- 在数据源是数据表的 Windows 窗体 DataGrid 控件中隐藏 DataColumn (Visual Basic)
- AWT机器人类Robot,实现屏幕的"拍照"
- Tomcat日志配置
- openvpn --config conf/server.conf 1>vpn.log 2>&1 & 的意思
- IoC(Inversion of Control)反转控制
- iPhone降价,Palm和MOTO很受伤
- 一个开源的采集服务器体系结构设计
- 数据的分页显示--整理资料并测试
- java容器类的介绍
- emacs一周使用体会