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. nefu 899这也是裸的找

    #include <iostream> #include <algorithm> #include <cstdio> using namespace std; in ...

  2. 9.Java主要有那几种文件类型?各自的作用是什么?

    java类源代码.jsp页面.class编译后的类文件.xml一般是配置文件当然也可以用来传数据时候用.properties这也是配置文件.数据文件.  

  3. Linux中切换用户变成-bash4.1-$的解决方法【转】

    转自 Linux中切换用户变成-bash4.1-$的解决方法 - xia_xia的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/xia_xia0919/articl ...

  4. listview前几个item怎么不停加载

    在加载前几个item的时候,listview有个Adapter,里面的getView方法会被调用好几遍.原因可能有两种: 1.listview在布局文件里高度写成了wrap_content <? ...

  5. PHP详解$_SEVER常用变量

    $_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言 $_SERVER['HTTP_ACCEPT'] //当前请求的Accept头部的内容,例如text/html,appli ...

  6. Android ListView 中的checkbox

    Q:ListView + CheckBox 当上下滚动的时候有事会自动选中或取消 A:这个与ListView的缓存机制有关.当你屏幕滚动后,ListView中的item选项视图先检查缓存中是否有视图, ...

  7. android cordova h5总结

    最近项目 替换页面  把80%页面替换成h5了. 首页h5页面可以放在android本地.增加访问速度.节省用户流量 把服务器上的  js代码 压缩成zip格式  放在asset目录.当应用安装时候 ...

  8. FRAM 铁电存储器

    铁电存储器与传统存储器的区别. 一:易失性的存储器包括静态存储器SRAM和动态存储器DRAM.           优点:读写速度快,读写寿命无次数限止.           缺点:掉电会丢失数据.  ...

  9. WPF Template模版之寻找失落的控件【三】

    “井水不犯河水”常用来形容两个组织之间界限分明.互不相干,LogicTree与控件内部这颗小树之间就保持着这种关系.换句话说,如果UI元素树上有个X:Name=“TextBox1”的控件,某个控件内部 ...

  10. Hibernate 系列教程1-枚举单例类

    你还在为不知道怎样正确使用Hibernate而纠结吗 你还在为不知道怎样配置映射文件而郁闷吗 枚举单例(Enum Singleton) 是实现单例模式的一种方式而已,不过写法简单,创建枚举默认也是线程 ...