做软件的三个步骤:

(1)做什么?

(2)怎么做?

(3)动手做!

ok,我们今天要做的是一个录屏软件,那怎么做呢?首先,我们小时候都玩过一种小人书,就是当你快速翻动书页时,书中的人物就会活灵活现的动起来。于是,我就想,所谓录屏,就是将屏幕上的执行操作记录下来。根据以前剪辑视屏的经验,我们都知道视屏是由一帧一帧组成。于是,我又想到那我们把我们对屏幕的操作截图下来,然后在一秒钟内播放四张图片,好像也可以做到播放视屏噢。

那么,现在我们先用Java语言将屏幕截图的这个功能完成。 Open—>Eclipse

1.新建一个Java项目,名曰:recoder ,并且创建一个Class

2.截屏代码如下

package Frame;
/**
* author:Black_YeJing
*/
import java.awt.AWTException;
import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Date; import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame; public class Recoder extends JFrame {
JButton start, stop;
Boolean begin = false;
File file; public Recoder() {
setTitle("视屏录制 v1.0");
setSize(300, 80);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setLocation(300, 100);
start = new JButton("开始");
// 添加事件监听
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// 测验是否监听成功
System.out.println("点击了开始按钮");
// 获取文件选择器
JFileChooser chooser = new JFileChooser();
// 设置文件选择器只能选择文件夹
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
// 显示文件选择器窗口
int cnt = chooser.showSaveDialog(null);
System.out.println(cnt);
if (cnt == 0)// 0表示选择了保存按钮
{
// 获取用户选择的文件夹
file = chooser.getSelectedFile();
// 判断文件夹是否存在
if (!file.exists()) {
// 如果不存在就创建一个文件夹
file.mkdirs();
}
begin = true;
// 开启线程
new getScreen().start();
}
}
});
stop = new JButton("停止");
stop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
begin = false;
}
});
add(start);
add(stop);
setLayout(new FlowLayout()); setVisible(true); } private class getScreen extends Thread {
public void run() { try {
// 创建一个机器人
Robot robot = new Robot();
while (begin == true) {
// 创建一个默认工具
Toolkit tool = Toolkit.getDefaultToolkit();
int x = tool.getScreenSize().width;
int y = tool.getScreenSize().height;
// 获得一个x y值范围的矩形图形
Rectangle rectangle = new Rectangle(x, y);
// 缓存得到一张图片
BufferedImage bufferedImage = robot.createScreenCapture(rectangle);
// 根据指定文件夹保存
File subfile = new File(file, new Date().getTime() + ".jpg");
// ImageIo进行写到指定文件夹下
ImageIO.write(bufferedImage, "jpeg", subfile);
Thread.sleep(250);
}
} catch (AWTException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} }
} public static void main(String[] args) {
new Recoder();
} }

上述代码中,首先使用swing组件构建了一个简易的录屏界面。界面里只有“开始”,“停止”按钮。然后给这个两个按钮加上监听事件。当用户点击开始的时候创建一个文件夹选择器,当用户点击保存和取消的时候,会返回一个int值,分别是0和1,这时候我们就可以用这两个值进行判断,当值为0时,表示用户进行保存操作,反之则是取消操作。接着再判断用户选择的这个文件夹是否存在,若不存在便创建一个。之前我们创建了一个控制截屏开始及结束的标志位begin(默认值为false),当进行开始截屏的时候将begin变成true。

这时候我们需要一个线程来控制我们一秒截4张图,于是我们创建一个getScreen的线程方法。在线程方法中,我们创建了Java的一个常用工具类Toolkit,它可以获取要录取屏幕的长(x)与宽(y)。接着我们创建一个矩形类Rectangle 来保存图片大小。然后我们创建一个机器人root,并用root中的截屏方法,将获取的图片保存在缓存中,然后给这张图片以时间段的格式命名,最后再用图片IO流将图片写到指定文件下,并且让这个线程250ms执行一次。

写到这里,我们录屏的上半场就结束了。下半场咱们来写播放器。

运行效果图:

最新文章

  1. C# 将绝对路径转换为相对路径
  2. request和session作用域的意义
  3. Spring AOP 四大通知
  4. DB2 for z: system catalog tables
  5. Markdown中插入数学公式
  6. JsonHelper
  7. Go视频教程整理
  8. Sql注入一种dump所有数据的方法
  9. Android Studio安装及主题字体配置
  10. union 中可以存储的是不带构造函数的类对象
  11. Eyeshot Ultimate 学习笔记(3)
  12. uva 10976 Fractions Again(简单枚举)
  13. hdu 1075 What Are You Talking About(字典树)
  14. Selenium WebDriver 中鼠标和键盘事件分析及扩展[转载]
  15. 解决jQuery的$符号的冲突问题
  16. 【原创】beyond compare 解决文件一样,对比有差异的问题
  17. Vue.js 相关知识(路由)
  18. OpenCV Mat数据类型及位数总结(转载)
  19. Android之Volley使用
  20. python使用git进行版本控制1

热门文章

  1. Java_GUI小游戏--贪吃蛇
  2. [BZOJ2730]:[HNOI2012]矿场搭建(塔尖)
  3. CSS效果篇--这里有你想要的CSS3漂亮的自定义Checkbox各种复选框
  4. Nginx事件管理之核心模块ngx_events_module
  5. 【Java面试宝典】正则表达式
  6. android data binding jetpack I 环境配置 model-view 简单绑定
  7. [论文理解] An Analysis of Scale Invariance in Object Detection – SNIP
  8. Windows10 修改键位映射
  9. ubuntu下tomcat运行不起来解决
  10. Linux 通道