gpt4 book ai didi

java实现区域内屏幕截图示例

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章java实现区域内屏幕截图示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

这是一个java版的截图程序 。

  。

复制代码代码如下:

package com.hongyuan.test,

  。

import java.awt.AWTException; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; 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.ImageIcon; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JToolBar; import javax.swing.JWindow; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.filechooser.FileSystemView,

public class ScreenShotTest { 。

 public static void main(String[] args) {   EventQueue.invokeLater(new Runnable() {     @Override    public void run() {     try {      ScreenShotWindow ssw=new ScreenShotWindow();      ssw.setVisible(true);     } catch (AWTException e) {      e.printStackTrace();     }    }   });  } 。

} /*  * 截图窗口  */ class ScreenShotWindow extends JWindow {   private int orgx, orgy, endx, endy;     private BufferedImage image=null;     private BufferedImage tempImage=null;     private BufferedImage saveImage=null;     private ToolsWindow tools=null;  public ScreenShotWindow() throws AWTException{    //获取屏幕尺寸    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();    this.setBounds(0, 0, d.width, d.height);    //截取屏幕    Robot robot = new Robot();    image = robot.createScreenCapture(new Rectangle(0, 0, d.width,d.height));    this.addMouseListener(new MouseAdapter() {     @Override    public void mousePressed(MouseEvent e) {     //鼠标松开时记录结束点坐标,并隐藏操作窗口              orgx = e.getX();              orgy = e.getY();              if(tools!=null){               tools.setVisible(false);              }    }    @Override    public void mouseReleased(MouseEvent e) {     //鼠标松开时,显示操作窗口     if(tools==null){      tools=new ToolsWindow(ScreenShotWindow.this,e.getX(),e.getY());     }else{      tools.setLocation(e.getX(),e.getY());     }     tools.setVisible(true);     tools.toFront();    }   });    this.addMouseMotionListener(new MouseMotionAdapter() {    @Override    public void mouseDragged(MouseEvent e) {     //鼠标拖动时,记录坐标并重绘窗口                 endx = e.getX();                 endy = e.getY();                 //临时图像,用于缓冲屏幕区域放置屏幕闪烁                 Image tempImage2=createImage(ScreenShotWindow.this.getWidth(),ScreenShotWindow.this.getHeight());                 Graphics g =tempImage2.getGraphics();                 g.drawImage(tempImage, 0, 0, null);                 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或height0                 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, y, null);                 ScreenShotWindow.this.getGraphics().drawImage(tempImage2,0,0,ScreenShotWindow.this);    }   });  }     @Override     public void paint(Graphics g) {         RescaleOp ro = new RescaleOp(0.8f, 0, null);         tempImage = ro.filter(image, null);         g.drawImage(tempImage, 0, 0, this);     }     //保存图像到文件  public void saveImage() throws IOException {   JFileChooser jfc=new JFileChooser();   jfc.setDialogTitle("保存");   //文件过滤器,用户过滤可选择文件   FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG", "jpg");   jfc.setFileFilter(filter);   //初始化一个默认文件(此文件会生成到桌面上)   SimpleDateFormat sdf = new SimpleDateFormat("yyyymmddHHmmss");      String fileName = sdf.format(new Date());      File filePath = FileSystemView.getFileSystemView().getHomeDirectory();      File defaultFile = new File(filePath + File.separator + fileName + ".jpg");      jfc.setSelectedFile(defaultFile);   int flag = jfc.showSaveDialog(this);   if(flag==JFileChooser.APPROVE_OPTION){    File file=jfc.getSelectedFile();    String path=file.getPath();    //检查文件后缀,放置用户忘记输入后缀或者输入不正确的后缀    if(!(path.endsWith(".jpg")||path.endsWith(".JPG"))){     path+=".jpg";    }    //写入文件    ImageIO.write(saveImage,"jpg",new File(path));    System.exit(0);   }  } } /*  * 操作窗口  */ class ToolsWindow extends JWindow {  private ScreenShotWindow parent;  public ToolsWindow(ScreenShotWindow parent,int x,int y) {   this.parent=parent;   this.init();   this.setLocation(x, y);   this.pack();   this.setVisible(true);  }  private void init(){   this.setLayout(new BorderLayout());   JToolBar toolBar=new JToolBar("Java 截图");   //保存按钮   JButton saveButton=new JButton(new ImageIcon("images/save.gif"));   saveButton.addActionListener(new ActionListener() {     @Override    public void actionPerformed(ActionEvent e) {     try {      parent.saveImage();     } catch (IOException e1) {      e1.printStackTrace();     }    }   });   toolBar.add(saveButton);   //关闭按钮   JButton closeButton=new JButton(new ImageIcon("images/close.gif"));   closeButton.addActionListener(new ActionListener() {    @Override    public void actionPerformed(ActionEvent e) {     System.exit(0);    }   });   toolBar.add(closeButton);   this.add(toolBar,BorderLayout.NORTH);  } } 。



java实现区域内屏幕截图示例

最后此篇关于java实现区域内屏幕截图示例的文章就讲到这里了,如果你想了解更多关于java实现区域内屏幕截图示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com