网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 手机学院 | 邮件系统 | 网络安全 | 认证考试
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Swing 常用的 Package.
.J2ME学习札记3.
.深入Struts 1.1.
.FreeJava 的使用方法(二)获得与.
.发布Hibernate 3.1.1改进数.
.解读Java中的“垃圾方言”.
.Java?渗入各个领域的技术.
.Java 2 Micro Edition简介(二).
.使用设计模式改善程序结构.
.RemoteManager的配置.
.match 方法.
.DateLastModified 属性.
.TOMCAT3.1的安装与配置简要介绍.
.用 Apache JMeter 测试 WebSpher.
.用web.xml控制Web应用的行为.
.JavaRMI应用.
.使用EclipseSWT控件开发WEB应用.
.NetBeans IDE4.1 J2EE.
.Swing 破局:打造半透明窗口.
.Log4j日志管理系统简单使用说明.

Java实例:JAVA实现屏幕抓图 远程桌面控制

发表日期:2008-10-29

主要使用的是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

*一个简单的屏幕抓图

*

**/


public class ScreenCapture {

//test main

public static void main(String[] args) throws Exception{

String userdir = System.getProperty("user.dir");

File tempFile = new File("d:","temp.png");

ScreenCapture capture = ScreenCapture.getInstance();

capture.captureImage();

JFrame frame = new JFrame();

JPanel panel = new JPanel();

panel.setLayout(new BorderLayout());

JLabel imagebox = new JLabel();

panel.add(BorderLayout.CENTER,imagebox);

imagebox.setIcon(capture.getPickedIcon());

capture.saveToFile(tempFile);

capture.captureImage();

imagebox.setIcon(capture.getPickedIcon());

frame.setContentPane(panel);

frame.setSize(400,300);

frame.show();

System.out.println("Over");

}


private ScreenCapture() {


try{

robot = new Robot();

}

catch(AWTException e) {

System.err.println("Internal Error: " + e);

e.printStackTrace();

}

JPanel cp = (JPanel)dialog.getContentPane();

cp.setLayout(new BorderLayout());

labFullScreenImage.addMouseListener(new MouseAdapter() {

public void mouseReleased(MouseEvent evn) {

isFirstPoint = true;

pickedImage = fullScreenImage.getSubimage(recX,recY,recW,recH);

dialog.setVisible(false);

}

});


labFullScreenImage.addMouseMotionListener(new MouseMotionAdapter() {

public void mouseDragged(MouseEvent evn) {

if(isFirstPoint) {

x1 = evn.getX();

y1 = evn.getY();

isFirstPoint = false;

}

else {

x2 = evn.getX();

y2 = evn.getY();

int maxX = Math.max(x1,x2);

int maxY = Math.max(y1,y2);

int minX = Math.min(x1,x2);

int 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.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));

dialog.setAlwaysOnTop(true);

dialog.setMaximumSize(

Toolkit.getDefaultToolkit().getScreenSize());

dialog.setUndecorated(true);

dialog.setSize(dialog.getMaximumSize());

dialog.setModal(true);

}

//Singleton Pattern

public static ScreenCapture getInstance() {

return defaultCapturer;

}

/**捕捉全屏慕*/

public Icon captureFullScreen() {

fullScreenImage = robot.createScreenCapture(new Rectangle(

Toolkit.getDefaultToolkit().getScreenSize()));

ImageIcon icon = new ImageIcon(fullScreenImage);

return icon;

}

/**捕捉屏幕的一个矫形区域

*/

public void captureImage() {

fullScreenImage = robot.createScreenCapture(new Rectangle(

Toolkit.getDefaultToolkit().getScreenSize()));

ImageIcon icon = new ImageIcon(fullScreenImage);

labFullScreenImage.setIcon(icon);

dialog.setVisible(true);

}

/**得到捕捉后的BufferedImage*/

public BufferedImage getPickedImage() {

return pickedImage;

}

/**得到捕捉后的Icon*/

public ImageIcon getPickedIcon() {

return new 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);

}


/**写入一个OutputStream*/

public void write(OutputStream out) throws IOException{

ImageIO.write(getPickedImage(),defaultImageFormater,out);

}


//singleton design pattern

private static ScreenCapture defaultCapturer = new ScreenCapture();

private int x1,y1,x2,y2;

private int recX,recY,recH,recW; //截取的图像

private boolean isFirstPoint = true;

private BackgroundImage labFullScreenImage = new BackgroundImage();

private Robot robot;

private BufferedImage fullScreenImage;

private BufferedImage pickedImage;

private String defaultImageFormater = "png";

private JDialog dialog = new JDialog();

}


/**显示图片的Label*/

class BackgroundImage extends JLabel{

public void paintComponent(Graphics g) {

super.paintComponent(g);

g.drawRect(x,y,w,h);

String area = Integer.toString(w)+" * "+ Integer.toString(h);

g.drawString(area,x+(int)w/2-15,y+(int)h/2);

g.drawLine(lineX,0,lineX,getHeight());

g.drawLine(0,lineY,getWidth(),lineY);

}


public void drawRectangle(int x,int y,int width,int height) {

this.x = x;

this.y = y;

h = height;

w = width;

repaint();

}


public void drawCross(int x,int y) {

lineX = x;

lineY = y;

repaint();

}


int lineX,lineY;

int x,y,h,w;

}

上一篇:Java App表达式语言MVEL 2.0 最终版发布 人气:610
下一篇:Java网络编程基础(一) InetAddress类的使用 人气:1063
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 2009年新年快乐