【java-调用摄像头进行截屏与保存-实例篇1-0716】
java-调用摄像头进行截屏与保存-实例篇1-0716
- 一. 主要涉及功能
- 二. 主要涉及技术
- 三. 开启摄像的Webcam包导入IDEA
- 四.多线程入门
- 4.1为什么用线程
- 4.2 如何打开一个新的线程
- 4.2.1 继承类
- 4.2.2 接口
- 五. 实例代码
一. 主要涉及功能
1.界面:
2. 打开摄像头
3.打开的同时可以执行截屏
4.文件选择器进行保存
二. 主要涉及技术
- 多线程 Thread 以及 Runnable
- 打开与关闭摄像 Webcam类
- 文件选择器 Jfilechooser类
三. 开启摄像的Webcam包导入IDEA
1.开启摄像需要导包,下载地址为 [http://webcam-capture.sarxos.pl/]
2.然后去下载 webcam-capture-0.3.10-dist.zip) 的jar包,下载图片如下所示
3.在IDEA的目录下新建一个libs 的 package
将jar包的三个文件复制进libs中
4.选中这三个jar包 右键 set as library
5.检测是否成功
发现已经添加成功
四.多线程入门
4.1为什么用线程
为了要动用多线程,因为绘图的核心代码是个持续运行的代码,因此你在运行的同时如果不另外开一个线程,他就不会执行另外的操作
while(flag){//获取摄像头的图片buffer= webcam.getImage();//绘图g.drawImage(buffer,20,100,null);}
4.2 如何打开一个新的线程
4.2.1 继承类
1.首先继承Thread类,重写run方法
public class RunViedoplayer extends Thread {//重写run方法public void run(){}
}
2.直接创建对象,调用start开启线程
RunViedoplayer run=new RunViedoplayer();run.start();
4.2.2 接口
1.接口Runnable ,实现run方法
public class RunViedoplayer implements Runnable {@Overridepublic void run() {//线程任务}}
2.交给Thread类,启动线程
RunViedoplayer run=new RunViedoplayer();
Thread thread=new Thread(run);
thread.start();
五. 实例代码
总共分为三块
- ViedoCapture 用来构建窗口文件
- ViedoListener 监听器,并执行操作
- Viedoplayer 线程重写部分
- 第一部分
import javax.swing.*;
import java.awt.*;public class ViedoCapture extends JFrame {String[] btunamelist={"打开","关闭","截屏","保存"};void initUI(){setTitle("Viedo Capture");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(1000,500);setVisible(true);FlowLayout flow=new FlowLayout();setLayout(flow);ViedoListener listener=new ViedoListener();for(int i=0;i<btunamelist.length;i++){JButton jbu=new JButton(btunamelist[i]);jbu.setPreferredSize(new Dimension(80,30));jbu.addActionListener(listener);this.add(jbu);}// 获取画笔一定要在可视化之后Graphics g = this.getGraphics();listener.setG(g);}public static void main(String[] args){ViedoCapture capture=new ViedoCapture();capture.initUI();}}
- 第二部分
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class ViedoListener implements ActionListener {Graphics g;BufferedImage buffer2;public void setG(Graphics g){this.g=g;}Viedoplayer player=new Viedoplayer();@Overridepublic void actionPerformed(ActionEvent e) {String btuname=e.getActionCommand();if(btuname.equals("打开")){//这里不可以直接open摄像头,不然无法接下去操作,需要用线程//为什么启用线程,因为while无限循环,那么此时再开一个线程,就可以进行按钮操作player.setg(g);player.open();// 交给 Thread管理Thread thread=new Thread(player);// 打开新的线程thread.start();}else if(btuname.equals("关闭")){player.close();}else if(btuname.equals("截屏")){buffer2=player.getbuffer();g.drawImage(buffer2,720,100,null);}else if(btuname.equals("保存")){// 看jfilechooser的源码就可以爬取这些代码JFileChooser chooser = new JFileChooser();//文件过滤FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif","png");chooser.setFileFilter(filter);int returnVal = chooser.showSaveDialog(null);if(returnVal == JFileChooser.APPROVE_OPTION) {//获取路径String path=chooser.getSelectedFile().getPath();//写入try {ImageIO.write(buffer2,"png",new File(path));} catch (IOException ex) {throw new RuntimeException(ex);}}}}
}
- 第三部分
import com.github.sarxos.webcam.Webcam;
import com.github.sarxos.webcam.WebcamResolution;import java.awt.*;
import java.awt.image.BufferedImage;//这里主要是写线程
public class Viedoplayer implements Runnable{Webcam webcam;Graphics g;BufferedImage buffer;//传递画笔public void setg(Graphics g){this.g=g;}boolean flag;//打开摄像头public void open(){//获取摄像头webcam=Webcam.getDefault();//设置摄像头的尺寸为VGA默认webcam.setViewSize(WebcamResolution.VGA.getSize());//打开摄像头webcam.open();flag=true;}//关闭摄像头public void close(){//停止绘图flag=false;//关闭摄像头webcam.close();}//获取图片buffer,以便于保存public BufferedImage getbuffer(){return buffer;}@Overridepublic void run() {while(flag){//获取摄像头的图片buffer= webcam.getImage();//绘图g.drawImage(buffer,20,100,null);}}
}
【java-调用摄像头进行截屏与保存-实例篇1-0716】相关推荐
- Unity iOS 获取相册图片, 调用原生相机, 截屏并保存到相册
原文链接 该Demo实现如下功能 1.从相册_照片 获取图片, 并贴在Image上 2.从相册_时刻 获取照片, 并贴在Image上 3.打开原生相机,拍照并把照片贴在Image上 4.截屏并保存到相 ...
- java调用摄像头保存到图库_Java调用摄像头并拍摄保存
Java调用摄像头并拍摄保存. 找到一篇关于java调用硬件(摄像头),一篇挺有意思的文章,索性转一下: ------------------------------------- 转自:http:/ ...
- swift 将图片保存到本地_Swift实现截屏并保存相册
func saveToLocal() { //截屏 let screenRect = UIScreen.mainScreen().bounds UIGraphicsBeginImageContext( ...
- 使用html2canvas完成页面截屏并保存为图片
实现网页页面截屏,并且将其转换为指定图片格式保存下来,需要使用到html2canvas.js. 前面是实现原理和步骤分析,具体实现代码在文章尾部. 一.实现HTML页面截屏并保存为图片 原理是遍历需要 ...
- ios——如何完成截屏操作并将截屏结果保存到设备本地相册
ios工程--(UIView)获取设备相册权限截取屏幕内容并保存到设备本地相册 设备/引擎:Mac(11.6)/cocos 开发工具:Xcode(13.0) 开发需求:对某个玩法进行截屏操作,并以图片 ...
- 监控系统java调用摄像头_java调用摄像头实例
[实例简介] java调用摄像头实例,包含所需要的jar文件,下载即可运行. [实例截图] [核心代码] d7850a13-8dbf-42bb-934c-0f911d9ed010 └── Xuggle ...
- JAVA 调用摄像头 拍照 实现人脸识别
JAVA 调用摄像头 拍照 实现人脸识别 今天想试试百度的api 实现一下近年的热点,人脸识别,虽然咱不会,百度会呀,还免费给我无限用呀. 注册百度云账号等:略. Java中调用摄像头,网上搜到两种方 ...
- 使用Snagit安安静静的截屏并保存
使用Snagit软件安安静静的截屏并保存需要注意两点. 1.关闭在编辑器预览. 2.打开分享--文件. 图片.png 设置好之后保存预设.并设置快捷键.这样在工作或者网游戏过程中就可以快速的截屏并保存 ...
- java 调手机摄像头,java调用摄像头并照相
当前位置:我的异常网» 编程 » java调用摄像头并照相 java调用摄像头并照相 www.myexceptions.net 网友分享于:2014-03-02 浏览:16次 java调用摄像头并 ...
最新文章
- 涨姿势了!为什么Windows上面的软件都想把自己安装在C盘?
- 修改otrs notification master邮件通知地址和名称
- 简述Linux虚拟内存管理
- 转:高效代码审查的八条准则和十个经验
- CVE-2019-0708 BlueKeep的扫描和打补丁
- 基于java的银行综合业务柜台系统设计与实现(含源文件)
- 全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<网关篇>
- 敏捷宣言 敏捷原则_2018年最受欢迎的敏捷文章
- kettle使用文件导入到Postgresql出现如下几种问题的总结
- linux调度器(七)——other cfs class api and functions
- Adobe(Pr Ae)动态图形模板
- php实现播放直播_php和腾讯直播的实现代码
- 非网管工业交换机和网管工业交换机区别
- VRTK4开发VR2:射线
- 什么是运营商大数据精准获客?
- c++ try catch 问题
- SBIO | 浙大陈云组综述农业中细菌与真菌的互作机制
- 彻底删除Windows Media Player
- 【Coursera】DNS Chooser找到最快IP的上网加速工具
- Android安卓离线人脸考勤软件源码APP