首页 > 其他分享 >js调用摄像头拍照及扫描二维码

js调用摄像头拍照及扫描二维码

时间:2023-05-26 12:44:26浏览次数:49  
标签:function 摄像 扫描 js 二维码 video canva 摄像头

注:js调用摄像头需要localhost域或者https,否则会报无权限

一 引用js

Github:https://github.com/mebjas/html5-qrcode

<script src="html5-qrcode.min.js?v=2"></script>

二 html页面

<!DOCTYPE html>
<html>
<head>
    <title>Instascan</title>
    <meta charset="UTF-8">
    <script src="js/jquery.min.js"></script>
    <script src="html5-qrcode.min.js?v=2"></script>
    <style>
        button{
            font-size: 40px;
            margin-left: 20px;
            margin-top: 130px;
        }
    </style>
</head>
<body>
<div style="width: 100%;height:100%" id="reader"></div>
<canvas id="canva" style="display:none"></canvas>
<button onclick="startCameraAndScan()" type="button">开始摄像并扫描</button>
<button onclick="pauseCamera()" type="button">暂停摄像</button>
<button onclick="startCamera()" type="button">继续摄像</button>
<button onclick="stopCamera()" type="button">关闭摄像头</button>
<br>
<button onclick="pauseScan()" type="button">暂停扫描</button>
<button onclick="resumeScan()" type="button">继续扫描</button>

<button onclick="takePhoto()" type="button">拍照</button>
<button onclick="window.location.reload()" type="button">刷新</button>
</body>
<script>
    var html5QrcodeScanner = new Html5Qrcode("reader");
    function startCameraAndScan(){
        $("#canva").css("display","none");
        html5QrcodeScanner.start(
            {facingMode:"environment"}//environment:后摄像头;user:前摄像头
            ,{ fps: 10, qrbox:{width:600,height:600}},onScanSuccess);
    }
    function onScanSuccess(decodedText, decodedResult) {
        pauseScan();//停止解析
        pauseCamera();//暂停摄像
        alert(decodedText);//
        console.log(`Scan result: ${decodedText}`, decodedResult);
    }
    //暂停扫描解析二维码
    function pauseScan() {
        html5QrcodeScanner.pause();
    }
    //继续扫描解析二维码
    function resumeScan(){
        html5QrcodeScanner.resume();
    }
    //关闭摄像头
    function stopCamera(){
        html5QrcodeScanner.stop();
    }
    //暂停摄像
    function pauseCamera(){
        document.querySelector("video").pause();//停止扫描
    }
    //继续摄像
    function startCamera(){
        document.querySelector("video").play();
    }
    //拍照
    function takePhoto(){
        var video = document.querySelector("video");
        var reader = $("#reader");
        var canva = document.getElementById("canva");
        canva.setAttribute("width",reader.css("width"));
        canva.setAttribute("height",reader.css("height"));
        canva.getContext("2d").drawImage(video,0,0,$(video).width(),$(video).height());
        stopCamera();//停止摄像
        $(canva).css("display","");
       // var data = canva.toDataURL();//图形转成base64
    }

</script>
</html>

标签:function,摄像,扫描,js,二维码,video,canva,摄像头
From: https://www.cnblogs.com/shuiyingyuan/p/17434418.html

相关文章

  • C#与Node JS互相实现DES加密解密
    具体的加密算法可以可自行查询其区别,这里只是抛砖引玉,大部分加密方法基本都能通过改变传入参数来实现。C#相关类文档: System.Security.Cryptography命名空间|MicrosoftLearnNodeJS相关文档:Crypto|Node.jsv16.20.0Documentation(nodejs.org) C#加密函数:1using......
  • JS逆向实战14——猿人学第二题动态cookie
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!目标网站https://match.yuanrenxue.cn/match/2网站分析首先已经告诉了我们这个网站是动态cookie,所以......
  • js获取抖音视频信息配合服务器自动下载
    引入axios方便发送请求解析当前页面获取视频信息把数据发送到服务器注意端口号,1024以上浏览器可能会拦截,认为不安全重复发送,防止连续重复发送,手动清除定时器点击查看代码//导入axios.posletscript=document.createElement('script');script.src="https://unpkg.......
  • js对象遍历和拷贝
    letobj={name:'user1',age:12,gender:'man'}for(letattrinobj){console.log(attr,obj[attr])}constkeys=Object.keys(obj)constvalues=Object.values(obj)console.log(Object.keys(obj))console.log(Object.values(obj))   letobj......
  • 解决npm npm does not support Node.js
    原因:node.js和npm版本不对应参考官网版本对应(https://nodejs.org/zh-cn/download/releases/),下载对应的node.js版本和更新npm版本npmupdate常用命令使用 npm-check检查更新npminstall-gnpm-checknpm-check2.npm-upgrade更新......
  • js数据解构
    1、变量比值多可以设置变量默认值 解构let[a,b,c,d='aaa']=[12,34,24]2、变量比值少可以用剩余参数解构let[a,...b]=[11,22,44,55]//a11b[22,44,55]3、按需赋值let[a,,b]=[5,6,9]4、数组嵌套解构let[a,b,arr]=[1,2,[5,8,9]]let[a,b,[c,d,e]]=[1,2,[5,8,9]]5、......
  • Nodejs 应用编译构建提速建议
    编译构建的整体过程拉取编译镜像拉取缓存镜像拉取项目源码挂载缓存目录执行编译命令(用户自定义)持久化缓存上传编译镜像为什么在本地构建就快,但编译机上很慢在编辑机上每次的构建环境都是全新的,完成一次构建比本地需要多一些步骤:现成的全局包缓......
  • js防抖和节流
    1.什么是节流(throttle)和防抖(debounce)概念节流(throttle):是函数在一定时间内,不管调用了多少次,实际只会在最后的时候执行一次防抖(debounce):是函数在一定时间内,每次调用,都会重置倒计时,直到规定时间内没有再次调用,才会执行区别这里以关门当作函数执行前等待时间时的操作;以发车......
  • Fastjson 很快,但不适合我....
    作者:nyingping来源:juejin.cn/post/7215886869199863869记者:大爷您有什么特长呀?FastJson:我很快。记者:23423乘以4534等于多少?FastJson:等于2343.记者:??FastJson:你就说快不快吧!这个略显马丽苏的标题,各位看官将就着看吧。主要是怕被喷。FastJson真的很好,我用不用我喜不......
  • JS的异步化特征async await
    参考:https://segmentfault.com/a/1190000007535316https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promisehttps://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/awaithttps://developer.mozilla.org/zh-CN/......