ZERO·HERO 2018-11-01 03:56 采纳率: 0%
浏览 659
已结题

想用java写个录制软件,但是鼠标一直闪,画面没鼠标,求救!!!

代码如下

 package image;

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.IOException;

//开始
public class ImageDistinguish {

    public static void main(String[] args) throws IOException, AWTException {
        Paint p = new Paint();
        p.show();
    }
//返回屏幕的流
    public static BufferedImage imageDistinguish(){
        return GetRobot.getRobot().createScreenCapture(new Rectangle(1920, 1080));

    }

}

//画图

 package image;


import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.ImageObserver;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Paint{

    JFrame jf = new JFrame();

    public Paint() {    

    }

    public void show() {
        jf.setSize(1000, 800);          
        jf.setLocation(300, 100);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setTitle("画布");
        jf.add(new MyCavanse());
        jf.setResizable(false);
        jf.setVisible(true);
    }

    public static class MyCavanse extends JPanel{
        @Override
        public void update(Graphics g){ paint(g); }
        public void paint(Graphics g) {     
            g.drawImage(ImageDistinguish.imageDistinguish(), 0, 0, 1000, 800, new ImageObserver() {             
                @Override
                public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {                 
                    return false;
                }
            }); 
            repaint();
        }

    } 



}

//单利获取Robot,应该会快一点吧= =

package image;

import java.awt.AWTException;
import java.awt.Robot;

public class GetRobot {
    private static Robot r = null;
    public static Robot getRobot() {
        try {
            if(r == null)
                r = new Robot();
        } catch (AWTException e) {

        }
        return r;
    }
}

还有如果知道怎么把这个弄成一个视频,知道的花还请大佬告诉一下^_^

  • 写回答

2条回答 默认 最新

  • xiaomad 2018-11-01 05:41
    关注

    java里面不停刷屏不是反过来影响你录制的内容吗?大概思路是悄悄地一帧帧截图然后做成视频。
    不要死循环去截,太耗系统资源,每秒截个十来张就差不多了。参考片段:

    。。。
        rt = new Robot();
        while (record) {
            BufferedImage img = rt.createScreenCapture(new Rectangle(screenWidth, screenHeight));
            ImageIO.write(img, "jpeg", new File("./capture/"+ System.currentTimeMillis() + ".jpeg"));
            Thread.sleep(captureInterval);
        }
    。。。   
    
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?