首页 > 其他分享 >html5实现摄像头扫码的实践

html5实现摄像头扫码的实践

时间:2024-07-20 15:09:37浏览次数:13  
标签:扫码 err text html5 codeReader 摄像头 result

使用的技术:原生html+vue.js+zxing.js;测试时附加需要的技术:iis10+ca证书制作。实现在安卓手机、安卓平板、pc上,实现浏览器上摄像头扫码功能。苹果的设备没测试过。 第一步:写好测试的网页并部署。 部署时使用iis发布。因为这个打开摄像头被限制为localhost和127.0.0.1和https协议下才能用,所以在pc上可以先配置本地ip地址,等在本地测试可以了,就自己制作一个ca证书,配置为局域网的https协议,保证测试设备和这次开发的网页服务器在同一个局域网下。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>摄像头测试</title>
    <script src="js/vue.js"></script>
    <script src="js/zxing.js"></script>
    
</head>
<body>
    <div class="vueWrapper">
        <button @click="openVideo">打开</button>
        {{text}}
        <video ref="video" id="video" autoplay playsinline></video>
        {{text2}}
    </div>
</body>
<script>
    var codeReader=null;
    var vue = new Vue({
        el: '.vueWrapper',
        data: {
            text:'',
            text2:'',
        },
        methods: {
          

            openVideo(param=null){
               // alert("open")
                navigator.mediaDevices.getUserMedia({
                video: {
                    facingMode: "environment", // 后置摄像头
                    width: { min: 600, ideal: 1280, max: 1920 },
                },
                audio: false,
            }).then(success => {
                // 摄像头开启成功
                this.$refs['video'].srcObject = success
                // 播放摄像头画面
                this.$refs['video'].play();
               var codeReader = new ZXing.BrowserQRCodeReader();
            }).catch(err => {
                // 摄像头开启失败
                console.log(err)
                alert(err);
            })
            },
        }
    })
</script>
</html>
View Code 第二步,制作ca证书,参考:https://blog.csdn.net/m0_52440465/article/details/130713591,iis导入时,是pfx格式,所以用这个命令: pkcs12 -export -out server.pfx -inkey server.pem -in server.crt 转换一下格式。 以上两个步骤完成,就可以在pc、手机和平板上也能打开手机摄像头了。 第三步,zxing扫码功能。
codeReader = new ZXing.BrowserQRCodeReader();
 codeReader.listVideoInputDevices()
                        .then(videoInputDevices => {
                            if (!videoInputDevices || videoInputDevices.length <= 0) {
                                return;
                            }
                            codeReader
                                .decodeFromInputVideoDevice(undefined, 'video')
                                .then(result => {
                                    console.log("result",result);
                                    if (!result) {//扫码失败

                                        return;
                                    }
                                    else {
                                        if (result.text) {//成功
                                            this.text=result.text                                           
                                        }
                                        else {                                          
                                            return;
                                        }
                                    }
                                })
                                .catch(err => {
                                     console.error("errscan", err);
                                    return;
                                });
View Code

 Vue和zXing的js资料:

https://files.cnblogs.com/files/HelloQLQ/VueAndZxing.zip?t=1721458991&download=true

标签:扫码,err,text,html5,codeReader,摄像头,result
From: https://www.cnblogs.com/HelloQLQ/p/18313125

相关文章

  • HTML5笔记
    HTML5什么是HTML5定义万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改环境支持Html5的浏览器包括Firefox(火狐浏览器),IE9及其更高版本,Chrome(谷歌浏览器),Safari,Opera等;国内的傲游浏览器(Maxthon),以及基于IE或Chromium(Chrome的工程版或称......
  • Windows虚拟摄像头有哪些?分享5个方法,手机一键替换电脑摄像头!
    Windows虚拟摄像头怎么用?当我们的电脑缺少摄像头时,我们可以借助虚拟摄像头实现。手机作为电脑摄像头的需求日益增长,本文就来给大家详细介绍,关于电脑虚拟摄像头的使用和说明,一起来看看吧!(一)常见的Windows虚拟摄像头软件推荐金虚拟摄像头:支持WiFi/USB/IP多种连接方式,即开即连。......
  • html5案例--制作电影影评网
    效果图:1.划分为三个结构:header、nav、footer2.header标签:3.nav标签:ul嵌套li,li里面放置内容4.footer标签:效果要达到点击对应方面展开详情页,用details标签实现,details嵌套summary及其他标签元素(例:article标签),summary放置标题显示内容mark标签内放置需要强调的内容,效果为......
  • HTML5+CSS3小实例:纯CSS实现奥运五环
    实例:纯CSS实现奥运五环技术栈:HTML+CSS效果:源码:【HTML】<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"&g......
  • html5案例--制作电影影评网
    制作电影影评网效果图:1.划分为三个结构:header、nav、footer2.header标签:3.nav标签:ul嵌套li,li里面放置内容4.footer标签:效果要达到点击对应方面展开详情页,用details标签实现,details嵌套summary及其他标签元素(例:article标签),summary放置标题显示内容mark标签内放置需要......
  • uniapp [全端兼容] - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海
    前言如果需要Vue版本,请访问这篇文章。在uni-app全平台兼容(H5网页网站、支付宝/微信小程序、安卓App、苹果App、nvue)项目开发中,详解免费安装使用“海康威视监控摄像头”在网页中对接设备并进行实时显示监控画面及各种功能操作控制教程,对接海康视频监控播放及回放......
  • 使用OpenCV实现摄像头测距
    使用OpenCV实现摄像头测距摄像头测距就是计算照片中的目标物体到相机的距离。可以使用相似三角形(triangle similarity)方法实现,或者使用更复杂但更准确的相机模型的内参来实现这个功能。使用相似三角形计算物体到相机的距离假设物体的宽度为 W,将其放到离相机距离为 D ......
  • Vue3 - 微信公众号H5网站使用微信扫一扫(微信扫码),苹果报错 {“errMsg“:“scanQRCode
    前言关于此问题网上的教程都无法解决,如果您的报错信息与我相似,即可解决。在vue3|nuxt3微信公众号网页开发中,微信移动端h5网页使用JS-SDK中的“微信扫码(微信扫一扫)”wx.scanQRCode接口,苹果ios系统真机测试时出现报错:“errMsg”:“scanQRCode:thepermissi......
  • 让摄像头带上智慧“智驭视界·AIEye”
     接上一篇《物联网浏览器(IoTBrowser)-基于计算机视觉开发的应用“智慧眼AIEye”》,经过AI的包装很高级,确实很屌炸天。   智驭视界·AIEye在科技赋能的浪潮中,智驭视界(AIEye) 横空出世,它不仅仅是一款视觉监测工具,更是直播、视频、图片世界中的智慧之眼,深度融合Yolov5尖......
  • 树莓派4b最新系统下CSI摄像头使用
     最新的64位系统下opencv的capture不支持libcamera 直接调用capturevideo运行代码会出现如下报错:    WARN:[email protected]]global./modules/videoio/src/cap_gstreamer.cpp(2401)handleMessageOpenCV|GStreamerwarning:Embeddedvideoplaybackhalted;modulev4......