java-调用摄像头进行截屏与保存-实例篇1-0716

  • 一. 主要涉及功能
  • 二. 主要涉及技术
  • 三. 开启摄像的Webcam包导入IDEA
  • 四.多线程入门
    • 4.1为什么用线程
    • 4.2 如何打开一个新的线程
    • 4.2.1 继承类
    • 4.2.2 接口
  • 五. 实例代码

一. 主要涉及功能

1.界面:

2. 打开摄像头

3.打开的同时可以执行截屏

4.文件选择器进行保存

二. 主要涉及技术

  1. 多线程 Thread 以及 Runnable
  2. 打开与关闭摄像 Webcam类
  3. 文件选择器 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();

五. 实例代码

总共分为三块

  1. ViedoCapture 用来构建窗口文件
  2. ViedoListener 监听器,并执行操作
  3. 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】相关推荐

  1. Unity iOS 获取相册图片, 调用原生相机, 截屏并保存到相册

    原文链接 该Demo实现如下功能 1.从相册_照片 获取图片, 并贴在Image上 2.从相册_时刻 获取照片, 并贴在Image上 3.打开原生相机,拍照并把照片贴在Image上 4.截屏并保存到相 ...

  2. java调用摄像头保存到图库_Java调用摄像头并拍摄保存

    Java调用摄像头并拍摄保存. 找到一篇关于java调用硬件(摄像头),一篇挺有意思的文章,索性转一下: ------------------------------------- 转自:http:/ ...

  3. swift 将图片保存到本地_Swift实现截屏并保存相册

    func saveToLocal() { //截屏 let screenRect = UIScreen.mainScreen().bounds UIGraphicsBeginImageContext( ...

  4. 使用html2canvas完成页面截屏并保存为图片

    实现网页页面截屏,并且将其转换为指定图片格式保存下来,需要使用到html2canvas.js. 前面是实现原理和步骤分析,具体实现代码在文章尾部. 一.实现HTML页面截屏并保存为图片 原理是遍历需要 ...

  5. ios——如何完成截屏操作并将截屏结果保存到设备本地相册

    ios工程--(UIView)获取设备相册权限截取屏幕内容并保存到设备本地相册 设备/引擎:Mac(11.6)/cocos 开发工具:Xcode(13.0) 开发需求:对某个玩法进行截屏操作,并以图片 ...

  6. 监控系统java调用摄像头_java调用摄像头实例

    [实例简介] java调用摄像头实例,包含所需要的jar文件,下载即可运行. [实例截图] [核心代码] d7850a13-8dbf-42bb-934c-0f911d9ed010 └── Xuggle ...

  7. JAVA 调用摄像头 拍照 实现人脸识别

    JAVA 调用摄像头 拍照 实现人脸识别 今天想试试百度的api 实现一下近年的热点,人脸识别,虽然咱不会,百度会呀,还免费给我无限用呀. 注册百度云账号等:略. Java中调用摄像头,网上搜到两种方 ...

  8. 使用Snagit安安静静的截屏并保存

    使用Snagit软件安安静静的截屏并保存需要注意两点. 1.关闭在编辑器预览. 2.打开分享--文件. 图片.png 设置好之后保存预设.并设置快捷键.这样在工作或者网游戏过程中就可以快速的截屏并保存 ...

  9. java 调手机摄像头,java调用摄像头并照相

    当前位置:我的异常网» 编程 » java调用摄像头并照相 java调用摄像头并照相 www.myexceptions.net  网友分享于:2014-03-02  浏览:16次 java调用摄像头并 ...

最新文章

  1. 涨姿势了!为什么Windows上面的软件都想把自己安装在C盘?
  2. 修改otrs notification master邮件通知地址和名称
  3. 简述Linux虚拟内存管理
  4. 转:高效代码审查的八条准则和十个经验
  5. CVE-2019-0708 BlueKeep的扫描和打补丁
  6. 基于java的银行综合业务柜台系统设计与实现(含源文件)
  7. 全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<网关篇>
  8. 敏捷宣言 敏捷原则_2018年最受欢迎的敏捷文章
  9. kettle使用文件导入到Postgresql出现如下几种问题的总结
  10. linux调度器(七)——other cfs class api and functions
  11. Adobe(Pr Ae)动态图形模板
  12. php实现播放直播_php和腾讯直播的实现代码
  13. 非网管工业交换机和网管工业交换机区别
  14. VRTK4开发VR2:射线
  15. 什么是运营商大数据精准获客?
  16. c++ try catch 问题
  17. SBIO | 浙大陈云组综述农业中细菌与真菌的互作机制
  18. 彻底删除Windows Media Player
  19. 【Coursera】DNS Chooser找到最快IP的上网加速工具
  20. Android安卓离线人脸考勤软件源码APP

热门文章

  1. ADOBE AIR是什么?
  2. 在h5页面中调起支付宝小程序中的某一个页面以及URLScheme 之 支付宝
  3. Android 全面屏处理(适配挖孔屏、刘海屏) kotlin
  4. 初探 MacBook Pro 刘海屏
  5. 虚拟文字内容、图片、头像生成工具
  6. c语言中wait用法及意思,wait的用法总结大全
  7. 我的世界基java版刷怪机制_我的世界刷怪上限范围解析 刷怪塔不刷怪原因
  8. 【Matlab图像拼接】块匹配全景图像拼接【含源码 742期】
  9. bootstrap组件--笔记(2)
  10. 《逆袭进大厂》第十二弹之MySQL重点篇27问27答