博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用JAVA捕获屏幕、屏幕录像、播放
阅读量:5760 次
发布时间:2019-06-18

本文共 2642 字,大约阅读时间需要 8 分钟。

 

http://blog.csdn.net/njchenyi/article/details/447554

 

标签: 
 分类:
 
JAVA(158) 
//记录屏幕、类似录像
package com.wnetw.project.media;
 
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
import java.io.*;
 
public class WnetWScreenRecorder extends Thread{
  private Dimension screenSize;
  private Rectangle rectangle;
  private Robot robot;
  private long i = 0;
  private JPEGImageEncoder encoder;
 
  public WnetWScreenRecord() {
    screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    rectangle = new Rectangle(screenSize);//可以指定捕获屏幕区域
    try{
      robot = new Robot();
    }catch(Exception e){
      e.printStackTrace();
      System.out.println(e);
    }
  }
 
  public static void main(String[] args) {
    new WnetWScreenRecord().start();
  }
 
  public void run(){
    FileOutputStream fos = null;
    while (true){
      try{
        BufferedImage image = robot.createScreenCapture(rectangle);//捕获制定屏幕矩形区域
        fos = new FileOutputStream("C://records//" + i + ".jpg");
        JPEGCodec.createJPEGEncoder(fos).encode(image);//图像编码成JPEG
        fos.close();
        i = i + 1;
        Thread.sleep(40);//每秒25帧
      }catch(Exception e){
        e.printStackTrace();
        System.out.println(e);
        try{
          if (fos != null)fos.close();
        }catch(Exception e1){}
      }
    }
  }
}

 

//播放屏幕录像

package com.wnetw.project.media;

import java.awt.*;

import javax.swing.*;
import java.io.*;

public class WnetWScreenRecordPlayer extends JFrame{

  BorderLayout borderLayout1 = new BorderLayout();
  Dimension screenSize;

  public WnetWScreenRecordPlayer() {

 super();
    screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    this.setSize(screenSize);
    Screen p = new Screen();
    Container c = this.getContentPane();
    c.setLayout(borderLayout1);
    c.add(p,"Center");
    new Thread(p).start();
    this.show();
  }

  public static void main(String[] args){

    new WnetWScreenRecordPlayer();
  }

}

class Screen extends JPanel implements Runnable{

  private BorderLayout borderLayout1 = new BorderLayout();
  private Image cimage;

  public void run(){

 int i = 0;
    while(true){
      try{
        cimage = loadImage(i + ".jpg");
        i = i + 1;
        repaint();
        Thread.sleep(40);//与录像时每秒帧数一致

      }catch(Exception e){

        e.printStackTrace();
        System.out.println(e);
      }
    }
  }

  public Image loadImage(String name) {

    Toolkit tk = Toolkit.getDefaultToolkit();
    Image image = null;
    image = tk.getImage("C:/records/" + name);
    MediaTracker mt = new MediaTracker(this);
    mt.addImage(image, 0);
    try {
      mt.waitForID(0);
    }catch (Exception e) {
      e.printStackTrace();
      System.out.println(e);
    }
    return image;
  }

  public Screen() {

    super();
    this.setLayout(null);
  }

  public void paint(Graphics g){

    super.paint(g);
    Graphics2D g2 = (Graphics2D) g;
    g2.drawImage(cimage, 0, 0, null);
  }
}

 
 

转载于:https://www.cnblogs.com/donaldlee2008/p/5423670.html

你可能感兴趣的文章
Linux的netstat命令使用
查看>>
android学习笔记——onSaveInstanceState的使用
查看>>
工作中如何做好技术积累
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
求职准备 - 收藏集 - 掘金
查看>>
jQuery|元素遍历
查看>>
FreeNAS8 ISCSI target & initiator for linux/windows
查看>>
Rainbond 5.0.4版本发布-做最好用的云应用操作系统
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
php图片赋值,php如何优雅地赋值
查看>>
Failed to connect to remote VM. Connection refused. Connection refused: connect
查看>>
OracleLinux安装说明
查看>>
nova分析(7)—— nova-scheduler
查看>>
【Web动画】SVG 实现复杂线条动画
查看>>
使用Wireshark捕捉USB通信数据
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
Java 重载、重写、构造函数详解
查看>>