精华内容
下载资源
问答
  • 主要介绍了java编程实现屏幕截图(截屏)代码,结合3个实例总结分析了Java截屏时页面抓取及图片保存的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • JAVA简单实现截屏

    2017-08-30 12:18:19
    JAVA简单实现截屏
  • 主要介绍了Java selenium截图操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • java截图程序

    2019-02-17 10:08:24
    java编写的截图小工具,可供参考,放在一个java文件,会有点乱
  • 该压缩包用于通过java代码调用后台无界面浏览器进行HTML截图。 资源包内容如下: 无界面浏览器运行程序 相关js库文件 java示例代码
  • Java截图功能

    2019-08-07 01:25:09
    NULL 博文链接:https://tzz6.iteye.com/blog/2105470
  • 很牛的Java截图工具

    2009-08-30 08:50:30
    功能比较强大,里面有说明文档和使用方法。
  • java 截图&识别

    2018-06-20 21:16:00
    package ... import java.awt.Rectangle;import java.awt.Robot;import java.awt.image.BufferedImage;import java.io.File; import javax.imageio.ImageIO; import net.sourceforge.tess4j.ITesse...

    package com.example.demo;

    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.image.BufferedImage;
    import java.io.File;

    import javax.imageio.ImageIO;

    import net.sourceforge.tess4j.ITesseract;
    import net.sourceforge.tess4j.Tesseract;

    /**
    * 截屏,识别
    * @author Administrator
    *
    */
    public class CutImage {

    public static void main(String[] args) throws Exception{
    Robot robot = new Robot();
    //前两个参数为起始坐标,后两个为宽,高
    BufferedImage image = robot.createScreenCapture(new Rectangle(100, 100, 100, 100));

    ImageIO.write(image, "jpg", new File("D:/test/test.jpg"));

    //tess4j.Tesseract
    ITesseract instance = new Tesseract();
    //基于Tesseract -ocr  ,主要需要tessdata文件夹下的.traineddata 文件 默认为eng.traineddata 
    instance.setDatapath("C:\\Program Files (x86)\\Tesseract-OCR");
    String result = instance.doOCR(image);
    System.out.println(result);

    }

    }

     

     

    转载于:https://www.cnblogs.com/xiaoduilantian/p/9206122.html

    展开全文
  • JAVA截图软件

    2018-12-28 08:34:38
    java截屏小程序,适用于任何操作平台,方便实用。
  • java实现截图功能

    2021-03-11 09:46:20
    java实现截图功能 java实现截图/录屏 /** * 指定屏幕区域截图,保存到指定目录 * @param x * @param y * @param width * @param height * @param savePath - 文件保存路径 * @param fileName - 文件保存名称 ...

    java实现截图功能

    java实现截图/录屏

     public static void main(String[] args) throws InterruptedException {
     //截取整个屏幕  保存在H盘下,名字为当前时间毫秒值 格式为png
              Test().screenShotAsFile(0,0,1920,1080, "H:\\", String.valueOf(System.currentTimeMillis()), "png"); 
        }
    
    /**
       * 指定屏幕区域截图,保存到指定目录
       * @param x
       * @param y
       * @param width
       * @param height
       * @param savePath - 文件保存路径
       * @param fileName - 文件保存名称
       * @param format - 文件格式
       */
      public static void screenShotAsFile(int x, int y, int width, int height, String savePath, String fileName, String format) {
        try {
          Robot robot = new Robot();
          BufferedImage bfImage = robot.createScreenCapture(new Rectangle(x, y, width, height));
          File path = new File(savePath);
          File file = new File(path, fileName+ "." + format);
          ImageIO.write(bfImage, format, file);
        } catch (AWTException e) {
          e.printStackTrace();  
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    

    https://www.xp.cn/b.php/53844.html 参考链接

    展开全文
  • Appium + java截图方法

    2018-05-10 14:26:00
    public static void takeScreenShot(AndroidDriver<WebElement> driver) { File screenShotFile = driver.getScreenshotAs(OutputType.FILE); try { FileUtils....
        public static void takeScreenShot(AndroidDriver<WebElement> driver)
        {  
           File screenShotFile = driver.getScreenshotAs(OutputType.FILE);  
           try {   
              FileUtils.copyFile(screenShotFile, new File("D:\\AutoScreenCapture\\" + getCurrentDateTime()+ ".jpg"));  
              } 
           catch (IOException e) {e.printStackTrace();}  
        } 
        public static String getCurrentDateTime(){
           SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss");//设置日期格式
           return df.format(new Date());
        }

     

    方法引用:

     

    takeScreen.takeScreenShot(driver);

    转载于:https://www.cnblogs.com/felixer/p/9019448.html

    展开全文
  • Java实现屏幕截屏

    千次阅读 2019-12-12 15:35:46
    Java实现屏幕截屏功能 程序运行后的截图: 先测试一下功能: 截图过程对界面的捕捉: 双击保存后的显示界面: 后续的步骤就自己去尝试吧,这里给出了简单的测试过程。 程序结构: 代码部分显示: CaptureScreen....

    Java实现屏幕截屏功能

    程序运行后的截图:
    在这里插入图片描述
    先测试一下功能:
    截图过程对界面的捕捉:
    在这里插入图片描述
    双击保存后的显示界面:
    在这里插入图片描述
    后续的步骤就自己去尝试吧,这里给出了简单的测试过程。

    程序结构:
    在这里插入图片描述

    代码部分显示:

    CaptureScreen.java

    /**
     * CaptureScreen.java
     */
    import java.awt.*;
    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.Transferable;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    import javax.imageio.*;
    import java.awt.image.*;
    
    public class CaptureScreen extends JFrame implements ActionListener {
        private JButton start,cancel;
        private JPanel c;
        private BufferedImage get;
        private JTabbedPane jtp;//一个放置很多份图片
        private int index;//一个一直会递增的索引,用于标认图片
        private JRadioButton java,system;//JAVA界面,系统界面
        /** Creates a new instance of CaptureScreen */
        public CaptureScreen() {
            super("屏幕截取");
            try{
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            }catch(Exception exe){
                exe.printStackTrace();
            }
            initWindow();
            initOther();
        }
        private void initOther(){
            jtp=new JTabbedPane(JTabbedPane.TOP,JTabbedPane.SCROLL_TAB_LAYOUT);
        }
        private void initWindow(){
            start=new JButton("开始截取");
            cancel=new JButton("退出");
            start.addActionListener(this);
            cancel.addActionListener(this);
            JPanel buttonJP=new JPanel();
            c=new JPanel(new BorderLayout());
            JLabel jl=new JLabel("屏幕截取", JLabel.CENTER);
            jl.setFont(new Font("黑体",Font.BOLD,40));
            jl.setForeground(Color.RED);
            c.add(jl,BorderLayout.CENTER);
            buttonJP.add(start);
            buttonJP.add(cancel);
            buttonJP.setBorder(BorderFactory.createTitledBorder("公共操作区"));
            JPanel jp=new JPanel();//放置两个单选按钮的面板
            jp.add(java=new JRadioButton("java界面"));
            jp.add(system=new JRadioButton("系统界面",true));
            java.addActionListener(this);
            system.addActionListener(this);
            jp.setBorder(BorderFactory.createTitledBorder("界面风格"));
            ButtonGroup bg=new ButtonGroup();
            bg.add(java);
            bg.add(system);
            JPanel all=new JPanel();
            all.add(jp);
            all.add(buttonJP);
            this.getContentPane().add(c,BorderLayout.CENTER);
            this.getContentPane().add(all,BorderLayout.SOUTH);
            this.setSize(500,400);
            this.setLocationRelativeTo(null);
            this.setVisible(true);
            this.setAlwaysOnTop(true);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        
        private void updates(){
            this.setVisible(true);
            if(get!=null){
                //如果索引是0,则表示一张图片都没有被加入过,
                //则要清除当前的东西,重新把tabpane放进来
                if(index==0){
                    c.removeAll();
                    c.add(jtp,BorderLayout.CENTER);
                }else{//否则的话,直接对tabpane添加面板就可以了
                    //就什么都不用做了
                }
                PicPanel pic=new PicPanel(get);
                jtp.addTab("图片"+(++index),pic);
                jtp.setSelectedComponent(pic);
                SwingUtilities.updateComponentTreeUI(c); // 调整LookAndFeel(javax.swing)
            }
        }
        
        private void doStart(){
            try{
                this.setVisible(false);
                Thread.sleep(500);//睡500毫秒是为了让主窗完全不见
                Robot ro=new Robot(); // (通过本地操作)控制鼠标、键盘等实际输入源(java.awt)
                Toolkit tk=Toolkit.getDefaultToolkit(); // AWT组件的抽象父类(java.awt)
                Dimension di=tk.getScreenSize();
                Rectangle rec=new Rectangle(0,0,di.width,di.height);
                BufferedImage bi=ro.createScreenCapture(rec);
                JFrame jf=new JFrame();
                Temp temp=new Temp(jf,bi,di.width,di.height); // 自定义的Temp类的对象
                jf.getContentPane().add(temp,BorderLayout.CENTER);
                jf.setUndecorated(true);
                jf.setSize(di);
                jf.setVisible(true);
                jf.setAlwaysOnTop(true);
            } catch(Exception exe){
                exe.printStackTrace();
            }
        }
        
        /**
        *公用的处理保存图片的方法
        */
        public  void doSave(BufferedImage get){
            try{
                if(get==null){
                    JOptionPane.showMessageDialog(this
                      , "图片不能为空!!", "错误", JOptionPane.ERROR_MESSAGE);
                    return;
                }
                JFileChooser jfc=new JFileChooser(".");
                jfc.addChoosableFileFilter(new GIFfilter());
                jfc.addChoosableFileFilter(new BMPfilter());
                jfc.addChoosableFileFilter(new JPGfilter());
                jfc.addChoosableFileFilter(new PNGfilter());
                int i=jfc.showSaveDialog(this);
                if(i==JFileChooser.APPROVE_OPTION){
                    File file=jfc.getSelectedFile();
                    String about="PNG";
                    String ext=file.toString().toLowerCase();
                    javax.swing.filechooser.FileFilter ff=jfc.getFileFilter();
                    if(ff instanceof JPGfilter){
                        if(!ext.endsWith(".jpg")){
                            String ns=ext+".jpg";
                            file=new File(ns);
                            about="JPG";
                        }
                    } else if(ff instanceof PNGfilter){
                        if(!ext.endsWith(".png")){
                            String ns=ext+".png";
                            file=new File(ns);
                            about="PNG";
                        }
                    }else if(ff instanceof BMPfilter){
                        if(!ext.endsWith(".bmp")){
                            String ns=ext+".bmp";
                            file=new File(ns);
                            about="BMP";
                        }
                    }else if(ff instanceof GIFfilter){
                        if(!ext.endsWith(".gif")){
                            String ns=ext+".gif";
                            file=new File(ns);
                            about="GIF";
                        }
                    }
                    if(ImageIO.write(get,about,file)){
                        JOptionPane.showMessageDialog(this,"保存成功!");
                    } else
                        JOptionPane.showMessageDialog(this,"保存失败!");
                }
            } catch(Exception exe){
                exe.printStackTrace();
            }
        }
        
        /** 
         *公共的处理把当前的图片加入剪帖板的方法
         */
        public void doCopy(final BufferedImage image){
            try{
                if(get==null){
                    JOptionPane.showMessageDialog(this
                      ,"图片不能为空!!","错误",JOptionPane.ERROR_MESSAGE);
                    return;
                } // java.awt.datatransfer(接口)
                Transferable trans = new Transferable(){ // 内部类
                    public DataFlavor[] getTransferDataFlavors() {
                        return new DataFlavor[] { DataFlavor.imageFlavor };
                    }
                    public boolean isDataFlavorSupported(DataFlavor flavor) {
                        return DataFlavor.imageFlavor.equals(flavor);
                    }
                    public Object getTransferData(DataFlavor flavor)
                      throws UnsupportedFlavorException, IOException {
                        if(isDataFlavorSupported(flavor))
                            return image;
                        throw new UnsupportedFlavorException(flavor);
                    }
                };
                
                Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);
                JOptionPane.showMessageDialog(this,"已复制到系统粘帖板!!");
            }catch(Exception exe){
                exe.printStackTrace();
                JOptionPane.showMessageDialog(this
                  ,"复制到系统粘帖板出错!!","错误",JOptionPane.ERROR_MESSAGE);
            }
        }
        
        //处理关闭事件
        private void doClose(Component c){
            jtp.remove(c);
            c=null;
            System.gc();
        }
        
        public void actionPerformed(ActionEvent ae){
            Object source=ae.getSource();
            if(source==start){
                doStart();
            } else if(source==cancel){
                System.exit(0);
            }else if(source==java){ // 金属外观
                try{
                    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
                    SwingUtilities.updateComponentTreeUI(this);
                }catch(Exception exe){
                    exe.printStackTrace();
                }
            }else if(source==system){ // 本地外观
                try{
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                    SwingUtilities.updateComponentTreeUI(this);
                }catch(Exception exe){
                    exe.printStackTrace();
                }
            }
        }
        
        //一个内部类,它表示一个面板,一个可以被放进tabpane的面板
        //也有自己的一套处理保存和复制的方法
        private class PicPanel extends JPanel implements ActionListener{
            JButton save,copy,close;//表示保存,复制,关闭的按钮
            BufferedImage get;//得到的图片
            public PicPanel(BufferedImage get){
                super(new BorderLayout());
                this.get=get;
                initPanel();
            }
            private void initPanel(){
                save=new JButton("保存(S)");
                copy=new JButton("复制到剪帖板(C)");
                close=new JButton("关闭(X)");
                save.setMnemonic('S');
                copy.setMnemonic('C');
                close.setMnemonic('X');
                JPanel buttonPanel=new JPanel();
                buttonPanel.add(copy);
                buttonPanel.add(save);
                buttonPanel.add(close);
                JLabel icon=new JLabel(new ImageIcon(get));
                this.add(new JScrollPane(icon),BorderLayout.CENTER);
                this.add(buttonPanel,BorderLayout.SOUTH);
                save.addActionListener(this);
                copy.addActionListener(this);
                close.addActionListener(this);
            }
            public void actionPerformed(ActionEvent e) {
                Object source=e.getSource();
                if(source==save){
                    doSave(get);
                }else if(source==copy){
                    doCopy(get);
                }else if(source==close){
                    get=null;
                    doClose(this);
                }
            }
        }
        
        //保存BMP格式的过滤器
        private class BMPfilter extends javax.swing.filechooser.FileFilter{
            public BMPfilter(){
            }
            public boolean accept(File file){
                if(file.toString().toLowerCase().endsWith(".bmp")||
                        file.isDirectory()){
                    return true;
                } else
                    return false;
            }
            public String getDescription(){
                return "*.BMP(BMP图像)";
            }
        }
        
        //保存JPG格式的过滤器
        private class JPGfilter extends javax.swing.filechooser.FileFilter{
            public JPGfilter(){
            }
            public boolean accept(File file){
                if(file.toString().toLowerCase().endsWith(".jpg")||
                        file.isDirectory()){
                    return true;
                } else
                    return false;
            }
            public String getDescription(){
                return "*.JPG(JPG图像)";
            }
        }
        
        //保存GIF格式的过滤器
        private class GIFfilter extends javax.swing.filechooser.FileFilter{
            public GIFfilter(){
            }
            public boolean accept(File file){
                if(file.toString().toLowerCase().endsWith(".gif")||
                        file.isDirectory()){
                    return true;
                } else
                    return false;
            }
            public String getDescription(){
                return "*.GIF(GIF图像)";
            }
        }
        
        //保存PNG格式的过滤器
        private class PNGfilter extends javax.swing.filechooser.FileFilter{
            public boolean accept(File file){
                if(file.toString().toLowerCase().endsWith(".png")||
                        file.isDirectory()){
                    return true;
                } else
                    return false;
            }
            public String getDescription(){
                return "*.PNG(PNG图像)";
            }
        }
        
        //一个临时类,用于显示当前的屏幕图像
        private class Temp extends JPanel implements MouseListener,MouseMotionListener{
            private BufferedImage bi;
            private int width,height;
            private int startX,startY,endX,endY,tempX,tempY;
            private JFrame jf;
            private Rectangle select=new Rectangle(0,0,0,0);//表示选中的区域
            private Cursor cs=new Cursor(Cursor.CROSSHAIR_CURSOR);//表示一般情况下的鼠标状态(十字线)
            private States current=States.DEFAULT;// 表示当前的编辑状态
            private Rectangle[] rec;//表示八个编辑点的区域
            //下面四个常量,分别表示谁是被选中的那条线上的端点
            public static final int START_X=1;
            public static final int START_Y=2;
            public static final int END_X=3;
            public static final int END_Y=4;
            private int currentX,currentY;//当前被选中的X和Y,只有这两个需要改变
            private Point p=new Point();//当前鼠标移的地点
            private boolean showTip=true;//是否显示提示.如果鼠标左键一按,则提示就不再显示了
            
            public Temp(JFrame jf,BufferedImage bi,int width,int height){
                this.jf=jf;
                this.bi=bi;
                this.width=width;
                this.height=height;
                this.addMouseListener(this);
                this.addMouseMotionListener(this);
                initRecs();
            }
            
            private void initRecs(){
                rec=new Rectangle[8];
                for(int i=0;i<rec.length;i++){
                    rec[i]=new Rectangle();
                }
            }
            
            public void paintComponent(Graphics g){
                g.drawImage(bi,0,0,width,height,this);
                g.setColor(Color.RED);
                g.drawLine(startX,startY,endX,startY);
                g.drawLine(startX,endY,endX,endY);
                g.drawLine(startX,startY,startX,endY);
                g.drawLine(endX,startY,endX,endY);
                int x=startX<endX?startX:endX;
                int y=startY<endY?startY:endY;
                select=new Rectangle(x,y,Math.abs(endX-startX),Math.abs(endY-startY));
                int x1=(startX+endX)/2;
                int y1=(startY+endY)/2;
                g.fillRect(x1-2,startY-2,5,5);
                g.fillRect(x1-2,endY-2,5,5);
                g.fillRect(startX-2,y1-2,5,5);
                g.fillRect(endX-2,y1-2,5,5);
                g.fillRect(startX-2,startY-2,5,5);
                g.fillRect(startX-2,endY-2,5,5);
                g.fillRect(endX-2,startY-2,5,5);
                g.fillRect(endX-2,endY-2,5,5);
                rec[0]=new Rectangle(x-5,y-5,10,10);
                rec[1]=new Rectangle(x1-5,y-5,10,10);
                rec[2]=new Rectangle((startX>endX?startX:endX)-5,y-5,10,10);
                rec[3]=new Rectangle((startX>endX?startX:endX)-5,y1-5,10,10);
                rec[4]=new Rectangle((startX>endX?startX:endX)-5,(startY>endY?startY:endY)-5,10,10);
                rec[5]=new Rectangle(x1-5,(startY>endY?startY:endY)-5,10,10);
                rec[6]=new Rectangle(x-5,(startY>endY?startY:endY)-5,10,10);
                rec[7]=new Rectangle(x-5,y1-5,10,10);
                if(showTip){
                    g.setColor(Color.CYAN);
                    g.fillRect(p.x,p.y,170,20);
                    g.setColor(Color.RED);
                    g.drawRect(p.x,p.y,170,20);
                    g.setColor(Color.BLACK);
                    g.drawString("请按住鼠标左键不放选择截图区",p.x,p.y+15);
                }
            }
            
            //根据东南西北等八个方向决定选中的要修改的X和Y的座标
            private void initSelect(States state){
                switch(state){
                    case DEFAULT:
                        currentX=0;
                        currentY=0;
                        break;
                    case EAST:
                        currentX=(endX>startX?END_X:START_X);
                        currentY=0;
                        break;
                    case WEST:
                        currentX=(endX>startX?START_X:END_X);
                        currentY=0;
                        break;
                    case NORTH:
                        currentX=0;
                        currentY=(startY>endY?END_Y:START_Y);
                        break;
                    case SOUTH:
                        currentX=0;
                        currentY=(startY>endY?START_Y:END_Y);
                        break;
                    case NORTH_EAST:
                        currentY=(startY>endY?END_Y:START_Y);
                        currentX=(endX>startX?END_X:START_X);
                        break;
                    case NORTH_WEST:
                        currentY=(startY>endY?END_Y:START_Y);
                        currentX=(endX>startX?START_X:END_X);
                        break;
                    case SOUTH_EAST:
                        currentY=(startY>endY?START_Y:END_Y);
                        currentX=(endX>startX?END_X:START_X);
                        break;
                    case SOUTH_WEST:
                        currentY=(startY>endY?START_Y:END_Y);
                        currentX=(endX>startX?START_X:END_X);
                        break;
                    default:
                        currentX=0;
                        currentY=0;
                        break;
                }
            }
            
            public void mouseMoved(MouseEvent me){
                doMouseMoved(me);
                initSelect(current); // current:当前状态(state)
                if(showTip){
                    p=me.getPoint();
                    repaint();
                }
            }
            
            //特意定义一个方法处理鼠标移动,是为了每次都能初始化一下所要选择的区域
            private void doMouseMoved(MouseEvent me){
                if(select.contains(me.getPoint())){
                    this.setCursor(new Cursor(Cursor.MOVE_CURSOR));
                    current=States.MOVE;
                } else{
                    States[] st=States.values();
                    for(int i=0;i<rec.length;i++){
                        if(rec[i].contains(me.getPoint())){
                            current=st[i];
                            this.setCursor(st[i].getCursor());
                            return;
                        }
                    }
                    this.setCursor(cs);
                    current=States.DEFAULT;
                }
            }
            
            public void mouseExited(MouseEvent me){
            }
            
            public void mouseEntered(MouseEvent me){
            }
            
            public void mouseDragged(MouseEvent me){
                int x=me.getX();
                int y=me.getY();
                // 分别处理一系列的(光标)状态(枚举值)
                if(current==States.MOVE){
                    startX+=(x-tempX);
                    startY+=(y-tempY);
                    endX+=(x-tempX);
                    endY+=(y-tempY);
                    tempX=x;
                    tempY=y;
                }else if(current==States.EAST||current==States.WEST){
                    if(currentX==START_X){
                        startX+=(x-tempX);
                        tempX=x;
                    }else{
                        endX+=(x-tempX);
                        tempX=x;
                    }
                }else if(current==States.NORTH||current==States.SOUTH){
                    if(currentY==START_Y){
                        startY+=(y-tempY);
                        tempY=y;
                    }else{
                        endY+=(y-tempY);
                        tempY=y;
                    }
                }else if(current==States.NORTH_EAST||current==States.NORTH_EAST||
                        current==States.SOUTH_EAST||current==States.SOUTH_WEST){
                    if(currentY==START_Y){
                        startY+=(y-tempY);
                        tempY=y;
                    }else{
                        endY+=(y-tempY);
                        tempY=y;
                    }
                    if(currentX==START_X){
                        startX+=(x-tempX);
                        tempX=x;
                    }else{
                        endX+=(x-tempX);
                        tempX=x;
                    }                
                }else{
                    startX=tempX;
                    startY=tempY;
                    endX=me.getX();
                    endY=me.getY();
                }
                this.repaint();
            }
            
            public void mousePressed(MouseEvent me){
                showTip=false;
                tempX=me.getX();
                tempY=me.getY();
            }
            
            public void mouseReleased(MouseEvent me){
                if(me.isPopupTrigger()){ // 右键
                    if(current==States.MOVE){
                        showTip=true;
                        p=me.getPoint();
                        startX=0;
                        startY=0;
                        endX=0;
                        endY=0;
                        repaint();
                    } else{ // 普通情况
                        jf.dispose();
                        updates();
                    }
                }
            }
            
            public void mouseClicked(MouseEvent me){
                if(me.getClickCount()==2){
                    //Rectangle rec=new Rectangle(startX,startY,Math.abs(endX-startX),Math.abs(endY-startY));
                    Point p=me.getPoint();
                    if(select.contains(p)){
                        if(select.x+select.width<this.getWidth()&&select.y+select.height<this.getHeight()){
                            get=bi.getSubimage(select.x,select.y,select.width,select.height);
                            jf.dispose();
                            updates();
                        }else{
                            int wid=select.width,het=select.height;
                            if(select.x+select.width>=this.getWidth()){
                                wid=this.getWidth()-select.x;
                            }
                            if(select.y+select.height>=this.getHeight()){
                                het=this.getHeight()-select.y;
                            }
                            get=bi.getSubimage(select.x,select.y,wid,het);
                            jf.dispose();
                            updates();
                        }
                    }
                }
            }
        }
        
        public static void main(String args[]) {
            SwingUtilities.invokeLater(new Runnable(){
                public void run(){
                    new CaptureScreen();
                }
            });
        }
    }
    
    //一些表示状态的枚举
    enum States{
        NORTH_WEST(new Cursor(Cursor.NW_RESIZE_CURSOR)),//表示西北角
        NORTH(new Cursor(Cursor.N_RESIZE_CURSOR)),
        NORTH_EAST(new Cursor(Cursor.NE_RESIZE_CURSOR)),
        EAST(new Cursor(Cursor.E_RESIZE_CURSOR)),
        SOUTH_EAST(new Cursor(Cursor.SE_RESIZE_CURSOR)),
        SOUTH(new Cursor(Cursor.S_RESIZE_CURSOR)),
        SOUTH_WEST(new Cursor(Cursor.SW_RESIZE_CURSOR)),
        WEST(new Cursor(Cursor.W_RESIZE_CURSOR)),
        MOVE(new Cursor(Cursor.MOVE_CURSOR)),
        DEFAULT(new Cursor(Cursor.DEFAULT_CURSOR));
        
        private Cursor cs;
        
        States(Cursor cs){
            this.cs=cs;
        }
        
        public Cursor getCursor(){
            return cs;
        }
    }
    

    云链接:Java之屏幕截图
    提取码:cooy

    展开全文
  • java 截屏截图

    2014-08-23 23:54:23
    Java截屏截图
  • java截屏小类

    2014-01-08 23:13:40
    一个很是用的java截屏小类,适合初学者,有注释,希望对大家的学习有帮助。
  • java实现截图功能,类似QQ截图,直接导入就可以使用,
  • java 截屏.rar

    2020-04-16 11:28:37
    java编写的截取屏幕代码。一份是全屏截取,一份是可选择截取。可以运行。如果有问题,可以联系我以前讨论。
  • java截屏程序

    2017-05-02 10:59:21
    java截屏程序
  • JAVA截图小工具

    2017-10-27 11:59:21
    程序运行后会自动在当前目录下创建一个image文件夹用于保存截图。 每次截图同时会自动复制到剪贴板。 包含了源代码和运行程序。
  • java截图工具源码

    2015-04-07 02:26:50
    主要是屏幕坐标和窗口坐标的获取,目的不同;Rect的初始化和DrawRect让我很无语,先入为主以为后面2个参数是右下角点的坐标,浪费一个多小时考虑坐标系转换的问题...
  • java截图小程序.java

    2021-04-17 18:38:09
    适合java新手练手使用
  • 鼠标选取矩形区域,获取区域坐标,完成截图。支持选取存储地址或存储到默认地址。挺好的 有兴趣的小伙伴可以研究一下
  • Java制作的一个截屏应用程序,可以将截屏放到clipbord上,也可以将其保存到文件中。
  • java截屏源代码

    2013-11-25 14:08:17
    可用于Java截屏,对于屏幕上显示的任何信息均可以实时截取,包括图片和摄像头采集会的信息
  • NULL 博文链接:https://jisonami.iteye.com/blog/2182138
  • java 截图源代码

    2013-07-27 10:02:38
    超好用的java截图工具,源代码。 功能:1、左键按下选中所需截图区域,会有边框显示该区域 2、左键释放,会弹出菜单选择保存还是添加到系统粘贴板中 3、移动鼠标,随时显示图上对应点的ARGB值
  • Java|屏幕截图

    2020-07-26 00:00:00
    } } 图3.1截图实例 4 结语 初入java,先从简单的屏幕截图做起,然后实现对键鼠的操作,最难的是图片比对,通过不断地学习和钻研都能实现的。 END 主 编 | 王楠岚 责 编 | 王自强 where2go 团队 微信号:算法与...
  • java截屏功能工程

    2020-04-13 10:42:31
    java截屏工具,默认自动打开浏览器然后截屏,可以设置截屏的大小,并自动保存,亲测可以用,分项给大家试用。
  • selenium+Java截屏操作

    千次阅读 2019-05-15 16:13:51
    //截屏操作 //截图到output File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); try { String savePath = "D:\\example.jpg"; //复制内容到指定文件中 FileUtils.copyFile...
  • 一个简单的 Java 屏幕截图实用程序。 请看一看。 插件 看看插件。 问题 渲染中断尝试使用以下参数启动: 操作系统 争论 视窗 java -jar -Dsun.java2d.d3d=false ScreenCapture.jar Linux java -jar -Dsun.java2d....
  • 通过rtmp/rtsp,openCV进行人脸识别并截图Java版本,简单demo,提供给需要的开发工程师。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 180,671
精华内容 72,268
关键字:

java截屏

java 订阅