`
evget
  • 浏览: 144604 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

JAVA实现屏幕抓图和远程桌面控制的方法

阅读更多
文章关键字:|JAVA|屏幕抓图|远程|桌面控制|方法|捕获|类|程序|

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

     }



未完,原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9251
分享到:
评论

相关推荐

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

    #### 一、Java屏幕抓图技术解析 在Java中,要实现屏幕抓图的功能,主要依赖于`java.awt.Robot`类。该类提供了一系列方法来模拟键盘和鼠标操作,并允许开发人员捕获整个屏幕或屏幕的一部分。 ##### 1. `java.awt....

    屏幕抓图,获取byte[]

    屏幕抓图,获取byte[]是计算机编程中一个常见的任务,主要应用于截图软件、远程桌面协作、游戏录制等领域。在这个过程中,我们需要将屏幕上的图像信息捕获并转化为字节数组(byte[]),以便于存储、传输或者进一步...

    完整版服务端抓图对应客户端实时监控程序.rar

    在技术实现上,服务端抓图可能使用了操作系统级别的截图API,或者利用屏幕捕获库来捕获桌面图像。这些图像可能经过压缩优化后通过HTTP、TCP/IP或者其他定制的网络协议发送到客户端。客户端则需要解码并显示这些图像...

    [神2也教你学E]服务端抓图对应客户端实时监控程序.rar

    通常,服务端可以使用多种编程语言实现,如Java、Python、Node.js或C#。服务端需要处理的主要任务包括接收客户端的监控请求,根据请求执行屏幕截图操作,并将截图数据传输回客户端。 2. **屏幕截图技术**:服务端...

    xheditor 在线编辑器jsp/ava实现版

    **远程抓图上传**是一个非常实用的功能,尤其对于那些经常使用屏幕截图的用户。用户可以直接复制QQ或其他截图工具截取的图像,并粘贴到xheditor中,编辑器会自动识别并上传这些图片到服务器。这一特性极大地简化了...

Global site tag (gtag.js) - Google Analytics