javascript实现摄像头拍照预览


Posted in Javascript onSeptember 30, 2019

使用javascript实现电脑摄像头的打开和截图的功能,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>摄像头调用实例</title>
<script type="text/javascript" src="jquery-3.2.1.min.js"></script>
<script type="text/javascript">
 var video, mediaStreamTrack, canvas;//声明全局变量
 //打开摄像头
 function dk() {
  video = document.getElementById("v1");
  var videoObj = {
   "video" : true
  };
  var errBack = function(error) {
   console.log("Video capture error: ", error.code);
  };
  //根据浏览器的不同选取不同的支持
  if (navigator.getUserMedia) { // Standarda
   navigator.getUserMedia(videoObj, function(stream) {
    mediaStreamTrack = typeof stream.stop === 'function' ? stream
      : stream.getTracks()[1];
    video.src = stream;//获取摄像头抓取的到字节流
    video.play();//实时播放摄像头
   }, errBack);
  } else if (navigator.webkitGetUserMedia) { // WebKit-prefixed
   navigator.webkitGetUserMedia(videoObj, function(stream) {
    mediaStreamTrack = typeof stream.stop === 'function' ? stream
      : stream.getTracks()[1];
    video.src = window.webkitURL.createObjectURL(stream);
    video.play();
   }, errBack);
  } else if (navigator.mozGetUserMedia) { // Firefox-prefixed
   navigator.mozGetUserMedia(videoObj, function(stream) {
    mediaStreamTrack = typeof stream.stop === 'function' ? stream
      : stream.getTracks()[1];
    video.src = window.URL.createObjectURL(stream);
    video.play();
   }, errBack);
  }
 }
 //截图
 function jq() {
  canvas = document.getElementById("c1");
  var context = canvas.getContext("2d");
  //将视频当前的页面转换为图片,显示到画板中
  context.drawImage(video, 0, 0, 200, 202);
  //把canvas图像转为img图片
  /* var src = canvas.toDataURL("image/jpeg");
  createImg(src); */
 }
 //关闭摄像头
 function gb() {
  mediaStreamTrack.stop();
 }
 //生成图片
 /* function createImg(src) {
  var dv = document.getElementById("dv1");
  var img = document.createElement("img");
  img.setAttribute("src", src);
  img.setAttribute("width", 205);
  img.setAttribute("height", 205);
  dv.appendChild(img);
 } */
 //上传
 /* function sc() {
  $.post('TestServlet', {
   "img" : canvas.toDataURL().substr(22)
  }, function(data, status) {
   alert(status != "success" ? "图片处理出错!" : data == "yes" ? "图片上传完成!"
     : data);
  });
 } */
</script>
<style type="text/css">
input[type="button"]{
border: 1px solid red;
}
</style>
</head>
<body>
 <div>
  <input type="button" value="打开" onclick="dk()"> 
  <input type="button" value="截取图像" onclick="jq()"> 
  <input type="button" value="关闭" onclick="gb()">
 </div>
 <div>
  <!--视频 -->
  <video width="200px" height="200px" id="v1"></video>
  <br />
  <!--画板 -->
  <canvas id="c1"></canvas>
  <br />
 </div>
 <!--记录每次截图的结果 -->
 <!-- <div id="dv1"></div> -->
</body>
</html>

但是谷歌浏览器可以打开摄像头,无法获取实时数据。火狐比较好用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JSON 学习之JSON in JavaScript详细使用说明
Feb 23 Javascript
ajax请求get与post的区别总结
Nov 04 Javascript
关于JavaScript对象的动态选择及遍历对象
Mar 10 Javascript
用js设置下拉框为只读的小技巧
Apr 10 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
Sep 24 Javascript
JavaScript编程中实现对象封装特性的实例讲解
Jun 24 Javascript
Bootstrap源码解读导航条(7)
Dec 23 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
Mar 02 Javascript
深入理解AngularJs-scope的脏检查(一)
Jun 19 Javascript
bootstrap基本配置_动力节点Java学院整理
Jul 14 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
Oct 23 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
May 13 Javascript
java和js实现的洗牌小程序
Sep 30 #Javascript
JS使用H5实现图片预览功能
Sep 30 #Javascript
在vue中使用jsx语法的使用方法
Sep 30 #Javascript
微信小程序自定义tabBar在uni-app的适配详解
Sep 30 #Javascript
详解小程序云开发攻略(解决最棘手的问题)
Sep 30 #Javascript
webpack3升级到webpack4遇到问题总结
Sep 30 #Javascript
uploadify插件实现多个图片上传并预览
Sep 30 #Javascript
You might like
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
javascript初学者常用技巧
2014/09/02 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python中使用支持向量机(SVM)算法
2017/12/26 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
员工培训心得体会
2013/12/30 职场文书
给校长的建议书100字
2014/05/16 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL