加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java截屏简单例子

发布时间:2020-12-15 03:18:17 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 java截屏 ?* 运行后将当前屏幕截取,并最大化显示。 ?* 拖拽鼠标,选择自己需要的部分。 ?* 按Esc键保存图片到桌面,并退出程序。 ?* 点击右上角(没

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

java截屏
?* 运行后将当前屏幕截取,并最大化显示。
?* 拖拽鼠标,选择自己需要的部分。
?* 按Esc键保存图片到桌面,并退出程序。
?* 点击右上角(没有可见的按钮),退出程序,不保存图片。
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.filechooser.FileSystemView;
 
/**
 * java截屏
 * 运行后将当前屏幕截取,并最大化显示。
 * 拖拽鼠标,选择自己需要的部分。
 * 按Esc键保存图片到桌面,并退出程序。
 * 点击右上角(没有可见的按钮),退出程序,不保存图片。
 * 
 * @author JinCeon
 */
public class SnapshotTest {
    public static void main(String[] args) {
        // 全屏运行
        RectD rd = new RectD();
        GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment()
                .getDefaultScreenDevice();
        gd.setFullScreenWindow(rd);
    }
}
 
class RectD extends JFrame {
    private static final long serialVersionUID = 1L;
    int orgx,orgy,endx,endy;
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    BufferedImage image;
    BufferedImage tempImage;
    BufferedImage saveImage;
    Graphics g;
 
    @Override
    public void paint(Graphics g) {
        RescaleOp ro = new RescaleOp(0.8f,null);
        tempImage = ro.filter(image,null);
        g.drawImage(tempImage,this);
    }
 
    public RectD() {
        snapshot();
        setVisible(true);
        // setSize(d);//最大化窗口
        setDefaultCloSEOperation(EXIT_ON_CLOSE);
        this.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                orgx = e.getX();
                orgy = e.getY();
            }
        });
        this.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
                endx = e.getX();
                endy = e.getY();
                g = getGraphics();
                g.drawImage(tempImage,RectD.this);
                int x = Math.min(orgx,endx);
                int y = Math.min(orgy,endy);
                int width = Math.abs(endx - orgx)+1;
                int height = Math.abs(endy - orgy)+1;
                // 加上1,防止width或height为0
                g.setColor(Color.BLUE);
                g.drawRect(x-1,y-1,width+1,height+1);
                //减1,加1都是为了防止图片将矩形框覆盖掉
                saveImage = image.getSubimage(x,y,width,height);
                g.drawImage(saveImage,x,RectD.this);
            }
        });
        this.addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(KeyEvent e) {
                // 按Esc键退出
                if (e.getKeyCode() == 27) {
                    saveToFile();
                    System.exit(0);
                }
            }
        });
    }
 
    public void saveToFile() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyymmddHHmmss");
        String name = sdf.format(new Date());
        File path = FileSystemView.getFileSystemView().getHomeDirectory();
        String format = "jpg";
        File f = new File(path + File.separator + name + "." + format);
        try {
            ImageIO.write(saveImage,format,f);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    public void snapshot() {
        try {
            Robot robot = new Robot();
            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
            image = robot.createScreenCapture(new Rectangle(0,d.width,d.height));
        } catch (AWTException e) {
            e.printStackTrace();
        }
    }
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读