• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    做软件的三个步骤:

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

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

    运行效果图:

    

     
 



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
美团扫码付小程序的优化实践 - 美团技术团队发布时间:2022-07-18
下一篇:
小程序客服消息发布时间:2022-07-18
热门推荐
    热门话题
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap