录屏 java_Java小程序—录屏小程序(上半场)

做软件的三个步骤:

(1)做什么?

(2)怎么做?

(3)动手做!

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

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

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

cfd1457c935cf9f84c83580c91b76b1b.png

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执行一次。

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

运行效果图:

31d0313dc7c7c89abe731a55a76129ed.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值