📄 a09114f74257001b1647dc3ac84ad89f
字号:
package com.bam;import java.awt.Dimension;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.io.BufferedInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.IOException;import java.io.OutputStream;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketException;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.Random;import javax.imageio.ImageIO;/** * 将屏幕分割成几个Chunk,然后在每个Chunk中放入数据内存; */public class ScreenCapture implements Runnable { static Robot robot = null; static Toolkit toolkit = Toolkit.getDefaultToolkit(); static Thread runner = null; static int capturew = 800; static int captureh = 600; static int chunks = 3; static int capturebh = captureh / chunks; static int capturebw = capturew / chunks; static HashMap Images = new HashMap(); public ScreenCapture(int width, int height, int chunks) { capturew = width; captureh = height; this.chunks = chunks; // 每个Chunk的高度、宽度 capturebh = captureh / chunks; capturebw = capturew / chunks; this.start(); } public void start() { if (runner == null) { for (int y = 0; y < chunks; y++) { for (int x = 0; x < chunks; x++) { // 在对应的位置放入响应的Chunk Images.put(new Integer(chunks * y + x).toString(), new Chunk()); } } runner = new Thread(this); runner.start(); } } public static HashMap getImages() { return Images; } public static int getChunks() { return chunks; } public void run() { if (robot == null) robot = createRobot(); BufferedImage image = null; ByteArrayOutputStream os = null; Chunk c = null; while (true) { try { if (AJAX_Desktop.logdebug) System.out.println("Captured.."); for (int y = 0; y < chunks; y++) { for (int x = 0; x < chunks; x++) { // 对每个Chunk写入图片的数据内存 image = robot.createScreenCapture(new Rectangle(x * capturebw, y * capturebh, capturebw, capturebh)); os = new ByteArrayOutputStream(); ImageIO.write(image, "png", os); byte[] imageStorage = os.toByteArray(); c = (Chunk) Images.get(new Integer(chunks * y + x) .toString()); c.setData(os.toByteArray()); } } } catch (Exception E) { E.printStackTrace(); } } } // 创建Robot类 private static Robot createRobot() { try { return new Robot(); } catch (Exception e) { e.printStackTrace(); } return null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -