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

2005-08-07 10:07 4739人阅读 评论(2) 收藏 举报
 分类:
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);
  }
}

 
 

用JAVA捕获屏幕、屏幕录像、播放的更多相关文章

  1. java原生实现屏幕设备遍历和屏幕采集(捕获)等功能

    前言:本章中屏幕捕获使用原生java实现,屏幕图像显示采用javacv1.3的CanvasFrame 一.实现的功能 1.屏幕设备遍历 2.本地屏幕图像采集(也叫屏幕图像捕获) 3.播放本地图像(采用 ...

  2. PotPlayer 如何设置多屏幕全屏播放

      如何在播放器中,设置扩展播放模式? 全屏设置/主全屏显示设备:Display2   如何使视频播放时,没有黑边并且全屏充满? 高宽比/处理方式:保持全屏宽高比   如果取消掉视频上方的文字提示信息 ...

  3. 背水一战 Windows 10 (2) - UI: 概述, 启动屏幕, 屏幕方向

    [源码下载] 背水一战 Windows 10 (2) - UI: 概述, 启动屏幕, 屏幕方向 作者:webabcd 介绍背水一战 Windows 10 之 UI UI 设计概述 启动屏幕(闪屏) 屏 ...

  4. 【Java】集合综合案例 - 播放器管理

    集合综合案例 文章目录 集合综合案例 需求分析 项目演示 详细设计 代码实现 歌曲类 播放器类 播放列表类 测试 参考资料 播放器管理 需求分析 项目演示 详细设计 代码实现 重新搞一波 复习巩固 简 ...

  5. [Selenium] Java代码获取屏幕分辨率

    import java.awt.Dimension; import java.awt.GraphicsEnvironment; import java.awt.Insets; import java. ...

  6. Java Swing 窗体屏幕居中

    Java开发桌面程序用AWT或SWING,可以用设置主窗口位置,使主窗口居中一般使用下面的方法: 01.第一种方法              int windowWidth = frame.getWi ...

  7. 利用纯java捕获和播放音频

    参考: 1.http://www.cjsdn.net/doc/jdk60/javax/sound/sampled/package-summary.html 2.http://www.cjsdn.net ...

  8. Java获取显示器屏幕大小

    public static void main(String[] args) { Dimension screensize = Toolkit.getDefaultToolkit().getScree ...

  9. UI: 概述, 启动屏幕, 屏幕方向

    UI 设计概述 启动屏幕(闪屏) 屏幕方向 示例1.UI 设计概述UI/Summary.xaml <Page x:Class="Windows10.UI.Summary" x ...

随机推荐

  1. hdu_2111_Saving HDU(贪心)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2111 题意:给你n个物品的单位体积价值和体积,求装满容量v的背包的最大价值. 题解:乍一看还以为是背包 ...

  2. ios做的两个矩形相交叉

    #import "ViewController.h" @interface ViewController (){    UIView *_gee;  //定义的实例变量    UI ...

  3. linux c中select使用技巧

    1.select函数作为定时器使用    it_value.tv_sec = 0;    it_value.tv_usec = 100000:    select(1,NULL,NULL,NULL,& ...

  4. cordova环境配置步骤

    1.安装node.js环境 官网: http://nodejs.org/ 2.sudo npm install -g cordova(一般会失败,需要用FQ安装或者用淘宝镜像安装,可以用FQ就可以不用 ...

  5. MySQL 异常错误码使用 及 对照表

    DECLARE CONTINUE HANDLER FOR SQLWARNING, SQLEXCEPTION, NOT FOUND BEGIN GET DIAGNOSTICS CONDITION cod ...

  6. URL的# (转)

    http://www.ruanyifeng.com/blog/2011/03/url_hash.html

  7. Clock Pictures

    Clock Pictures 题目描述 You have two pictures of an unusual kind of clock. The clock has n hands, each h ...

  8. Android OpenGL ES .介绍

    引自:http://blog.csdn.net/hgl868/article/details/6971624 1.    OpenGL ES 简介 Android 3D引擎采用的是OpenGL ES. ...

  9. 实战WEB 服务器(JAVA编写WEB服务器)

    实战WEB 服务器(JAVA编写WEB服务器) 标签: web服务服务器javawebsockethttp服务器 2010-04-21 17:09 11631人阅读 评论(24) 收藏 举报  分类: ...

  10. iOS拨打电话(三种方法)

    iOS拨打电话(三种方法)  查了很多地方的关于iOS程序拨打电话,大都不全,今天我总结了三种方法,各有不同,拿来给大家分享,希望给大家有所帮助 1,这种方法,拨打完电话回不到原来的应用,会停留在通讯 ...