文章关键字:|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.awt.Robot`类。该类提供了一系列方法来模拟键盘和鼠标操作,并允许开发人员捕获整个屏幕或屏幕的一部分。 ##### 1. `java.awt....
屏幕抓图,获取byte[]是计算机编程中一个常见的任务,主要应用于截图软件、远程桌面协作、游戏录制等领域。在这个过程中,我们需要将屏幕上的图像信息捕获并转化为字节数组(byte[]),以便于存储、传输或者进一步...
在技术实现上,服务端抓图可能使用了操作系统级别的截图API,或者利用屏幕捕获库来捕获桌面图像。这些图像可能经过压缩优化后通过HTTP、TCP/IP或者其他定制的网络协议发送到客户端。客户端则需要解码并显示这些图像...
通常,服务端可以使用多种编程语言实现,如Java、Python、Node.js或C#。服务端需要处理的主要任务包括接收客户端的监控请求,根据请求执行屏幕截图操作,并将截图数据传输回客户端。 2. **屏幕截图技术**:服务端...
**远程抓图上传**是一个非常实用的功能,尤其对于那些经常使用屏幕截图的用户。用户可以直接复制QQ或其他截图工具截取的图像,并粘贴到xheditor中,编辑器会自动识别并上传这些图片到服务器。这一特性极大地简化了...