AWT机器人类Robot,实现屏幕的"拍照"

介绍 Java AWT Robot 类实现屏幕截图功能,通过 createScreenCapture 方法捕捉屏幕区域并保存为图像文件,适用于自动测试和远程监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 APIkeyb_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"
*本构造支持JPGPNG文件的存储
****************************************************************/
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();
}
}
(注:解释及源代码,都是来自互联网,我只是综合了一下,感谢原作者。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值