📄 6024b2fb6e36001b19ca9d8cdf62cf01
字号:
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;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; // 计算每个块的长宽; 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++) { 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++) { // 捕获Screen的图像 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 + -