JS操作摄像头
<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操作摄像头的更多相关文章
- JS操作未跨域iframe里的DOM
这里简单说明两个方法,都是未跨域情况下在index.html内操作b.html内的 DOM. 如:index.html内引入iframe,在index内如何用JS操作iframe内的DOM元素? 先贴 ...
- ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作
ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作 .操作成功后刷新父页面 $this->assign('jumpUrl', "javascript:wi ...
- jquery.cookie.js 操作cookie实现记住密码功能的实现代码
jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下. 复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...
- JS操作JSON总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- [荐]使用Js操作注册表
使用Js操作注册表 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作. WshShell对象:可以在本地运行程序.操纵注册表内容.创建快捷方式或访问 ...
- 框架操作DOM和原生js操作DOM比较
问题引出 对于Angular和React操作DOM的速度,和原生js操作DOM的速度进行了一个比较: 一个同学做的demo 代码如下: <!DOCTYPE html> <html n ...
- js操作textarea方法集合
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- js 操作ASP.NET服务器控件
js 操作ASP.NET服务器控件 在ASP.NET中使用js时,js获取DOM元素时,经常获取不到,这是因为获取的方法有误,现在介绍一方法,解决如何使用js获取ASP.NET控件在浏览器端生成htm ...
- js 操作select和option
js 操作select和option 1.动态创建select function createSelect(){ var mySelect = document.createElement_x(&qu ...
随机推荐
- Bootstrap-table表格插件的使用方法
前言 上次写了一个可拖动列表的插件,但除了这个特点没什么优点了,接下写的是我们常用的Bootstrap-table表格插件 正文 官网:https://bootstrap-table.com/ 有两个 ...
- 用实力燃爆暑期丨i春秋渗透测试工程师线下就业班开课了!
i春秋&赛虎暑期渗透测试工程师线下就业班开课了! 本期开班地点:北京,面授脱产:四个月. 如果这次没来得及报名的同学也可以选择9月份广州的班次,具体开班时间请咨询谢老师:18513200565 ...
- ios 开发学习步骤
https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/RoadMapiOSCh/Wher ...
- pandas 之 时间序列索引
import numpy as np import pandas as pd 引入 A basic kind of time series object in pandas is a Series i ...
- 基于JieBaNet+Lucene.Net实现全文搜索
实现效果: 上一篇文章有附全文搜索结果的设计图,下面截一张开发完成上线后的实图: 基本风格是模仿的百度搜索结果,绿色的分页略显小清新. 目前已采集并创建索引的文章约3W多篇,索引文件不算太大,查询速度 ...
- itextpdf5操作表格
下面是一些对表格排版的常用方法,是在制作pdf的时候通过查看ipa和一些博客积累下来的. 包括,表格的宽度,对齐方式,表的页眉页脚,前后间距,padding: 单元格对齐方式,线条设置,段落于单元格之 ...
- 使用类似GeoJson的数据生成物体(建筑等)的功能逻辑
GeoJson作为一种模型传输格式, 用的最多的就是地图里面的各种简单模型了, 比如下图中很贴切的俄罗斯方块楼: 它的格式大概就是下面这样: { "type": "Fea ...
- React 受控组件和非受控组件
需求用户名自动获取 onChange用户状态发生改变 就获取值 就是时时获取值 使用onChange 点击按钮 获取密码 只要绑定了点击事件 就可以获取值 通过 let usercont=event. ...
- 【洛谷P3973】[TJOI2015]线性代数(最小割)
洛谷 题意: 给出一个\(n*n\)的矩阵\(B\),再给出一个\(1*n\)的矩阵\(C\). 求一个\(1*n\)的\(01\)矩阵\(A\),使得\(D=(A\cdot B-C)\cdot A^ ...
- PAC在异常检测中的应用
注:资料均来源于网络,本文只做知识分享,如侵立删,谢谢. PAC算法背景简述: 在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律.多变量大数据集无疑会为研 ...