• Java应用程序实现屏幕的"拍照"


    有时候,在Java应用程序开发中,如:远程监控或远程教学,常常需要对计算机的屏幕进行截取,由于屏幕截取是比较接近操作系统的操作,在Windows操作系统下,该操作几乎成了VC、VB等的专利,事实上,使用Java JDK1.4 的Robot对象,来完成"屏幕截取操作,更加简单。Java JDK1.4 的Robot对象,该对象可以完成对"屏幕"像素的拷贝,完成屏幕图像截取操作。Java应用程序中可以直接调用此对象,完成对特定应用程序的屏幕截取,如果将此功能配合网络,便可以轻而易举地实现远程服务器屏幕的监视。本文向大家介绍如何用Java构建屏幕"照相机"并实现远程服务器屏幕的监视,并给出了相应的Java源代码。

     1 package Camera;
     2 import java.awt.image.BufferedImage;
     3 import java.io.*;
     4 import javax.imageio.*;
     5 import java.awt.*;
     6 /*******************************************************************
     7  * 该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照"
     8  * This JavaBean is used to snapshot the GUI in a 
     9  * Java application! You can embeded
    10  * it in to your java application source code, and us
    11  * it to snapshot the right GUI of the application
    12  * @see javax.ImageIO
    13  * @author Visec·Dana
    14  * @version 1.0
    15  *****************************************************/
    16 public class GuiCamera {
    17     private String fileName; //文件的前缀
    18     private String defaultName = "GuiCamera";
    19     static int serialNum=0;
    20     private String imageFormat; //图像文件的格式
    21     private String defaultImageFormat="png";
    22     Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
    23 
    24     /****************************************************************
    25      * 默认的文件前缀为GuiCamera,文件格式为PNG格式
    26      * The default construct will use the default 
    27      * Image file surname "GuiCamera", 
    28      * and default image format "png"
    29      ****************************************************************/
    30     public GuiCamera() {
    31         fileName = defaultName;
    32         imageFormat=defaultImageFormat;
    33 
    34     }
    35     /****************************************************************
    36      * @param s the surname of the snapshot file
    37      * @param format the format of the  image file, 
    38      * it can be "jpg" or "png"
    39      * 本构造支持JPG和PNG文件的存储
    40      ****************************************************************/
    41     public GuiCamera(String s,String format){
    42         fileName = s;
    43         imageFormat=format;
    44     }
    45     /****************************************************************
    46      * 对屏幕进行拍照
    47      * snapShot the Gui once
    48      ****************************************************************/
    49     public void snapShot(){
    50         try {
    51             //拷贝屏幕到一个BufferedImage对象screenshot
    52             BufferedImage screenshot = (new Robot()).createScreenCapture(new Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));
    53             //根据文件前缀变量和文件格式变量,自动生成文件名
    54             String name=fileName+String.valueOf(serialNum)+"."+imageFormat;
    55             File f = new File(name);
    56             System.out.print("Save File "+name);
    57             //将screenshot对象写入图像文件
    58             ImageIO.write(screenshot, imageFormat, f);
    59             System.out.print("..Finished!
    ");
    60         }
    61         catch (Exception ex) {
    62             System.out.println(ex);
    63         }
    64     }
    65 }

    调用测试案例

     1 package Camera;
     2 import java.text.SimpleDateFormat;
     3 import java.util.Date;
     4 /***
     5  * 实现屏幕的"拍照"
     6  * @author Visec·Dana
     7  */
     8 public class Client{
     9     public static void main(String[] args) {
    10         Date date=new Date();
    11         SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd-HH-mm");
    12         GuiCamera cam= new GuiCamera("F://"+df.format(date), "png"); 
    13         cam.snapShot();
    14     }
    15 }

    数据记录生成图片

  • 相关阅读:
    Jenkins动态部署方案
    01-Java学习笔记
    Tcp实现简单的大小写转换功能
    JavaScript 执行环境 与 变量对象
    JQuery
    JavaScript模板引擎
    ECMA6
    谷歌控制台
    prototype 与 __proto__
    JavaScript Math
  • 原文地址:https://www.cnblogs.com/visec479/p/3842970.html
Copyright © 2020-2023  润新知