<script src="javascript/jquery-1.9.1.min.js"></script>

        <fieldset>
<legend>第一步:读取户口本</legend> <button id="btnOpen2" class="btn btn-flat btn-primary" type="button" >打开摄像头</button>    可用摄像头<select id="videoSource2" class="form-control" style="width:200px; display:inline-block" ></select> <button id="snap2" class="btn btn-success btn-flat" style="display:none" type="button">拍照</button> <br /> <div id="vdoOne2" style="display:none">
<video id="video2" style="margin-top:15px;margin-bottom:15px;" width="350" autoplay></video>
<canvas id="canvasPreview2" style="margin-top:15px;" width="350" height="255"></canvas>
<canvas id="canvasUpload2" style="display:none;" width='350' height='255'></canvas> </div> <script>
var videoSelect2 = document.getElementById('videoSource2');
var videoElement2 = document.getElementById('video2'); var canvasPreview2 = document.getElementById('canvasPreview2');
var canvasUpload2 = document.getElementById('canvasUpload2');
var contextPreview2 = canvasPreview2.getContext('2d');
var contextUpload2 = canvasUpload2.getContext('2d'); // navigator.mediaDevices.enumerateDevices().then(gotDevices).then(getStream).catch(handleError);
videoSelect2.onchange = getStream2; function gotDevices2(deviceInfos) { for (var i = 0; i < deviceInfos.length; ++i) {
var deviceInfo = deviceInfos[i];
var option = document.createElement('option');
option.value = deviceInfo.deviceId;
if (deviceInfo.kind === 'videoinput') {
option.text = deviceInfo.label || '摄像头 ' + (videoSelect2.length + 1);
videoSelect2.appendChild(option);
} else {
console.log('Found ome other kind of source/device: ', deviceInfo);
}
} } var _streamCopy2 = null;
function getStream2() {
if (_streamCopy2 != null) {
try {
_streamCopy2.stop(); // if this method doesn't exist, the catch will be executed.
} catch (e) {
_streamCopy2.getVideoTracks()[0].stop(); // then stop the first video track of the stream
}
} var constraints2= {
audio: false,
video: {
optional: [
{
sourceId: videoSelect2.value
}
]
}
}; navigator.mediaDevices.getUserMedia(constraints2).then(gotStream2).catch(handleError2);
} function gotStream2(stream) {
_streamCopy2 = stream; // make stream available to console
videoElement2.srcObject = stream;
} function handleError2(error) {
alert(error.name + ": " + error.message);
} $("#btnOpen2").click(
function () { navigator.mediaDevices.enumerateDevices().then(gotDevices2).then(getStream2).catch(handleError2); $("#vdoOne2").css("display", "block");
$("#video2").css("display", "block");
$("#snap2").css("display", "inline-block");
$("#canvasPreview2").css("display", "none"); }); $("#snap2").click(
function () { var _h = $("#canvasPreview2").prop("height"); contextPreview2.drawImage(videoElement2, 0, 0, 350, _h);
contextUpload2.drawImage(videoElement2, 0, 0, 350, _h); $("#video2").css("display", "none");
$("#snap2").css("display", "none");
$("#canvasPreview2").css("display", "block"); var image = document.getElementById("canvasUpload2").toDataURL("image/jpeg");
image = image.replace('data:image/jpeg;base64,', ''); if (_streamCopy2 != null) {
try {
_streamCopy2.stop(); // if this method doesn't exist, the catch will be executed.
} catch (e) {
_streamCopy2.getVideoTracks()[0].stop(); // then stop the first video track of the stream
} } // $("#img_base64_2").val(image);
//$.post("face_id_img_Save.aspx", { data: image, filename: $("#hf_snapname").val() }); }); </script>

JS操作摄像头的更多相关文章

  1. JS操作未跨域iframe里的DOM

    这里简单说明两个方法,都是未跨域情况下在index.html内操作b.html内的 DOM. 如:index.html内引入iframe,在index内如何用JS操作iframe内的DOM元素? 先贴 ...

  2. ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作

    ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作 .操作成功后刷新父页面 $this->assign('jumpUrl', "javascript:wi ...

  3. jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下.   复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...

  4. JS操作JSON总结

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  5. [荐]使用Js操作注册表

    使用Js操作注册表 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作. WshShell对象:可以在本地运行程序.操纵注册表内容.创建快捷方式或访问 ...

  6. 框架操作DOM和原生js操作DOM比较

    问题引出 对于Angular和React操作DOM的速度,和原生js操作DOM的速度进行了一个比较: 一个同学做的demo 代码如下: <!DOCTYPE html> <html n ...

  7. js操作textarea方法集合

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  8. js 操作ASP.NET服务器控件

    js 操作ASP.NET服务器控件 在ASP.NET中使用js时,js获取DOM元素时,经常获取不到,这是因为获取的方法有误,现在介绍一方法,解决如何使用js获取ASP.NET控件在浏览器端生成htm ...

  9. js 操作select和option

    js 操作select和option 1.动态创建select function createSelect(){ var mySelect = document.createElement_x(&qu ...

随机推荐

  1. 新手入门必看:VectorDraw 常见问题整理大全(一)

    VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库.有了VDF提供的功能,您可以轻松地创建.编辑.管理.输出.输入和打印2D和3D图形文件.该库 ...

  2. BUUCTF--checkin

    文件上传文件上传一般验证方式:1.本地js验证(客户端)2.MIME验证(服务端)3.拓展名验证(服务端)4.脚本内容(文件头)验证(服务端) 通常会用到exif_imagetype()函数,这个函数 ...

  3. 从写下第1个脚本到年薪30W,我的自动化测试心路历程

    我希望我的故事能够激励现在的软件测试人,尤其是还坚持在做“点点点”的测试人. 你可能会有疑问:“我也能做到这一点的可能性有多大?”因此,我会尽量把自己做决定和思考的过程讲得更具体一些,并尽量体现更多细 ...

  4. Python27期:错误宝典

    错误信息1:SyntaxError:invalid syntax--无效语法 解决办法:变量名不能使用关键字如下图: 错误信息2:TypeError:'str' object is not calla ...

  5. JS中的箭头函数与this

    转载自:https://juejin.im/post/5aa1eb056fb9a028b77a66fd#heading-1 JavaScript在ES6语法中新增了箭头函数,相较于传统函数,箭头函数不 ...

  6. 误删除/boot ,如何修复

    进入救援模式 1.chroot /mnt/sysimage  将路径修改为 /mnt/sysimage 2.mkdir /mnt/temp mount /dev/sr0 /mnt/temp 挂载光盘 ...

  7. 洛谷 P1209 [USACO1.3]修理牛棚 Barn Repair题解

    题目 打死我也没想到是贪心 虽然是lkx写了贪心题解让我去点赞我才写的这道题 神仙思路 首先排好序 假设我们现在只有一块木板 我们做一个差分数组 对这个差分数组排序之后 一次断开最长的区间 m-1次之 ...

  8. Linux性能优化实战学习笔记:第四十三讲

    一.上节回顾 上一节,我们了解了 NAT(网络地址转换)的原理,学会了如何排查 NAT 带来的性能问题,最后还总结了 NAT 性能优化的基本思路.我先带你简单回顾一下. NAT 基于 Linux 内核 ...

  9. DVWA CSRF 通关教程

    CSRF 介绍 CSRF,全称Cross-site request forgery,即跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie.会话等),诱骗其点击恶意链接或者访问包含攻击代码 ...

  10. 第01组 Beta冲刺(2/5)

    队名:007 组长博客: https://www.cnblogs.com/Linrrui/p/11998909.html 作业博客: https://edu.cnblogs.com/campus/fz ...