Java代码截屏

来源:互联网 发布:java内存溢出 问题排查 编辑:程序博客网 时间:2024/05/29 19:49

使用java,借助Robot这个类可以实现软件截屏,代码如下:

package test;import java.awt.AWTException;import java.awt.DisplayMode;import java.awt.GraphicsDevice;import java.awt.GraphicsEnvironment;import java.awt.Image;import java.awt.MenuItem;import java.awt.PopupMenu;import java.awt.Rectangle;import java.awt.Robot;import java.awt.SystemTray;import java.awt.TrayIcon;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.MouseEvent;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Date;import javax.imageio.ImageIO;public class TestRobot {private static Robot bt;private static GraphicsDevice gd;static {GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();GraphicsDevice[] gs = ge.getScreenDevices();gd = gs[0];try {bt = new Robot(gd);} catch (AWTException e) {e.printStackTrace();}}public static void test1() {try {DisplayMode mode = gd.getDisplayMode();int width = mode.getWidth();int height = mode.getHeight();System.out.println(width + "x" + height);BufferedImage img = bt.createScreenCapture(new Rectangle(width,height));Date date = new Date();//下边的路径用于保存截屏图片的路径和名字FileOutputStream fos = new FileOutputStream("/home/qcq/" + date.getTime()+ ".jpg");ImageIO.write(img, "jpeg", fos);fos.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {SystemTray tray = SystemTray.getSystemTray();//create the traytry {//此处需要给定托盘的图标。Image image = ImageIO.read(new File("src/1.jpg"));PopupMenu menu = new PopupMenu();MenuItem m1 = new MenuItem("截屏");MenuItem m0 = new MenuItem("退出");menu.add(m1);menu.add(m0);TrayIcon trayIcon = new TrayIcon(image, "截屏", menu);tray.add(trayIcon);m1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {test1();}});m0.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});//自动按下键盘显示桌面(Windows)。linux失效,可以用来截取桌面。bt.keyPress(KeyEvent.VK_WINDOWS);bt.keyPress(KeyEvent.VK_D);bt.keyRelease(KeyEvent.VK_WINDOWS);bt.keyRelease(KeyEvent.VK_D);} catch (IOException e) {e.printStackTrace();} catch (AWTException e) {e.printStackTrace();}}}


0 0
原创粉丝点击