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

 
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 应用程序中调用,实现屏幕的 " 拍照 "
  * This JavaBean is used to snapshot the GUI in a
  * Java application! You can embeded
  * it in to your java application source code, and us
  * it to snapshot the right GUI of the application
  * @see javax.ImageIO
  * @author liluqun ([email]liluqun@263.net[/email])
  * @version 1.0
  *
  *****************************************************/
public class
 
GuiCamera {
    private String fileName ; // 文件名,但没有包括扩展名
    private String defaultName = "GuiCamera" ;
    static int serialNum = 0;
    private String imageFormat ; // 图像文件的格式
    private String defaultImageFormat = "png" ;
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
 
    /****************************************************************
     * 默认的文件前缀为 GuiCamera ,文件格式为 PNG 格式
     * The default construct will use the default
     * Image file surname "GuiCamera",
     * and default image format "png"
     ****************************************************************/
    public GuiCamera() {
        fileName = defaultName ;
        imageFormat = defaultImageFormat ;
 
    }
 
    /****************************************************************
     * @param s the surname of the snapshot file
     * @param format the format of the image file,
     * it can be "jpg" or "png"
     * 本构造支持 JPG PNG 文件的存储
     ****************************************************************/
    public GuiCamera(String s, String format) {
 
        fileName = s;
        imageFormat = format;
    }
 
    /****************************************************************
     * 对屏幕进行拍照
     * snapShot the Gui once
     ****************************************************************/
    public void 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);
        }
    }
 
    public static void main(String[] args) {
        GuiCamera cam = new GuiCamera( "d://Hello" , "png" ); //
 
        cam.snapShot();
    }
}
(注:解释及源代码,都是来自互联网,我只是综合了一下,感谢原作者。)
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值