欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS調(diào)用安卓手機(jī)攝像頭掃描二維碼

 更新時(shí)間:2018年10月16日 09:46:44   作者:阿豆根  
這篇文章主要為大家詳細(xì)介紹了JS調(diào)用安卓手機(jī)攝像頭掃描二維碼,并用JS解析二維碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

項(xiàng)目要求:

使用H5模仿微信掃一掃付款功能

經(jīng)過(guò)一系列的查找最后發(fā)現(xiàn)可以使用 JS調(diào)用手機(jī)攝像頭然后用畫(huà)布把當(dāng)前攝像頭的數(shù)據(jù)轉(zhuǎn)成Base64的png圖片,經(jīng)過(guò)QrCode直接再本地識(shí)別。

優(yōu)點(diǎn):

兼容大多數(shù)瀏覽器

本地識(shí)別不占用服務(wù)端資源

代碼比較簡(jiǎn)單只有一個(gè)頁(yè)面

<html lang="ZH-CN">
<head>
 <meta charset="utf-8">
 <title>Web QrCode Test</title>
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
 
<script type="text/javascript" src="jsqrcode/src/grid.js"></script>
<script type="text/javascript" src="jsqrcode/src/version.js"></script>
<script type="text/javascript" src="jsqrcode/src/detector.js"></script>
<script type="text/javascript" src="jsqrcode/src/formatinf.js"></script>
<script type="text/javascript" src="jsqrcode/src/errorlevel.js"></script>
<script type="text/javascript" src="jsqrcode/src/bitmat.js"></script>
<script type="text/javascript" src="jsqrcode/src/datablock.js"></script>
<script type="text/javascript" src="jsqrcode/src/bmparser.js"></script>
<script type="text/javascript" src="jsqrcode/src/datamask.js"></script>
<script type="text/javascript" src="jsqrcode/src/rsdecoder.js"></script>
<script type="text/javascript" src="jsqrcode/src/gf256poly.js"></script>
<script type="text/javascript" src="jsqrcode/src/gf256.js"></script>
<script type="text/javascript" src="jsqrcode/src/decoder.js"></script>
<script type="text/javascript" src="jsqrcode/src/qrcode.js"></script>
<script type="text/javascript" src="jsqrcode/src/findpat.js"></script>
<script type="text/javascript" src="jsqrcode/src/alignpat.js"></script>
<script type="text/javascript" src="jsqrcode/src/databr.js"></script>
</head>
<body>
 <div class="booth">
 <video id="video" width="400" height="400"></video>
 <canvas id='canvas' width='400' height='400'></canvas>
 <img id='img' src=''>
 </div>
 
 <div id="mmm"></div>
 
 <canvas id="qr-canvas" width="640" height="480"></canvas>
<script>
 
 
 //初始化媒體對(duì)象
 var c=0;
 var video = document.getElementById('video'),
  canvas = document.getElementById('canvas'),
  img = document.getElementById('img'),
  vendorUrl = window.URL || window.webkitURL;
  
 //媒體對(duì)象
 navigator.getMedia = navigator.getUserMedia ||
       navagator.webkitGetUserMedia ||
       navigator.mozGetUserMedia ||
       navigator.msGetUserMedia;
 navigator.getMedia({
  video: true, //使用攝像頭對(duì)象
  audio: false //不適用音頻
 }, function(strem){
  console.log(strem);
  video.src = vendorUrl.createObjectURL(strem);
  video.play();
 }, function(error) {
  //error.code
  console.log(error);
 });
 
 //啟動(dòng)定時(shí)器
 setTimeout("actionP(null)","1000");
 
 //定時(shí)器
 function actionP(data){
  if(data==null){
  Screenshot()
   
  }else{
  if(data!=null & data!="error decoding QR Code"){//識(shí)別出數(shù)據(jù)
   if(data.indexOf("http")!=-1){
   window.location.href=data;
   }else alert(data);
   
   }else{//沒(méi)有數(shù)據(jù)循環(huán)十次
    c++;
    if(c<10){
     setTimeout("actionP(null)","1000");
    }
    
   }
  }
  
 }
 
 
 function Screenshot(){//截取圖像
 canvas.getContext('2d').drawImage(video, 0, 0, 400, 400);
 var imgData = canvas.toDataURL("image/png");
 load(imgData);
 img.src=imgData;
  
 }
 ////////////////////////////////////////識(shí)別二維碼////////////////////////////////////////////
 
 function dragenter(e) {
 e.stopPropagation();
 e.preventDefault();
 }
 
 function dragover(e) {
 e.stopPropagation();
 e.preventDefault();
 }
 function drop(e) {
 e.stopPropagation();
 e.preventDefault();
 
 var dt = e.dataTransfer;
 var files = dt.files;
 
 
 }
 
 
 function load(name)
 {
 initCanvas(640,480);
 //識(shí)別二維碼并回調(diào)方法
 qrcode.callback = actionP;
 qrcode.decode(name);
 }
 
 function initCanvas(ww,hh)//創(chuàng)建畫(huà)板
 {
 gCanvas = document.getElementById("qr-canvas");
 gCanvas.addEventListener("dragenter", dragenter, false); 
 gCanvas.addEventListener("dragover", dragover, false); 
 gCanvas.addEventListener("drop", drop, false);
 var w = ww;
 var h = hh;
 gCanvas.style.width = w + "px";
 gCanvas.style.height = h + "px";
 gCanvas.width = w;
 gCanvas.height = h;
 gCtx = gCanvas.getContext("2d");
 gCtx.clearRect(0, 0, w, h);
 imageData = gCtx.getImageData( 0,0,320,240);
 }
 
 
 </script>
</body>
</html>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用js制作淘寶放大鏡效果

    用js制作淘寶放大鏡效果

    這篇文章主要為大家詳細(xì)介紹了js制作淘寶放大鏡效果的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • js獲取內(nèi)聯(lián)樣式的方法

    js獲取內(nèi)聯(lián)樣式的方法

    這篇文章主要介紹了js獲取內(nèi)聯(lián)樣式的方法,針對(duì)標(biāo)準(zhǔn)瀏覽器與IE瀏覽器進(jìn)行不同的判斷與獲取,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • js仿新浪微博消息發(fā)布功能

    js仿新浪微博消息發(fā)布功能

    這篇文章主要為大家詳細(xì)介紹了js仿新浪微博消息發(fā)布功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 詳細(xì)分析Javascript中創(chuàng)建對(duì)象的四種方式

    詳細(xì)分析Javascript中創(chuàng)建對(duì)象的四種方式

    這篇文章詳細(xì)介紹了Javascript中創(chuàng)建對(duì)象的幾種方式與每種方式的優(yōu)缺點(diǎn),其中包括工廠模式、構(gòu)造函數(shù)模式、原型模式和組合使用構(gòu)造函數(shù)模式和原型模式,有需要的小伙伴們一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2016-08-08
  • JS?解決Cannot?set?properties?of?undefined的問(wèn)題

    JS?解決Cannot?set?properties?of?undefined的問(wèn)題

    遇到這樣問(wèn)題當(dāng)前的是當(dāng)前對(duì)象或者數(shù)組是undefined,但是卻用來(lái)引用屬性或者索引,遇到這樣的問(wèn)題如何解決呢,下面通過(guò)本文給大家介紹JS?如何解決Cannot?set?properties?of?undefined,需要的朋友可以參考下
    2024-01-01
  • Javascript 實(shí)現(xiàn)微信分享(QQ、朋友圈、分享給朋友)

    Javascript 實(shí)現(xiàn)微信分享(QQ、朋友圈、分享給朋友)

    這篇文章主要介紹了Javascript 實(shí)現(xiàn)微信分享(QQ、朋友圈、分享給朋友)的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Javascript的promise,async和await的區(qū)別詳解

    Javascript的promise,async和await的區(qū)別詳解

    這篇文章主要為大家詳細(xì)介紹了Javascript的promise,async和await的區(qū)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • JS實(shí)現(xiàn)超精簡(jiǎn)響應(yīng)鼠標(biāo)顯示二級(jí)菜單代碼

    JS實(shí)現(xiàn)超精簡(jiǎn)響應(yīng)鼠標(biāo)顯示二級(jí)菜單代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)超精簡(jiǎn)響應(yīng)鼠標(biāo)顯示二級(jí)菜單代碼,可實(shí)現(xiàn)針對(duì)鼠標(biāo)事件的響應(yīng)動(dòng)態(tài)修改頁(yè)面元素屬性的功能,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-09-09
  • display和visibility的區(qū)別示例介紹

    display和visibility的區(qū)別示例介紹

    這篇文章主要介紹了display和visibility的區(qū)別,需要的朋友可以參考下
    2014-02-02
  • 教你3分鐘利用原生js實(shí)現(xiàn)有進(jìn)度監(jiān)聽(tīng)的文件上傳預(yù)覽組件

    教你3分鐘利用原生js實(shí)現(xiàn)有進(jìn)度監(jiān)聽(tīng)的文件上傳預(yù)覽組件

    這篇文章主要給大家介紹了關(guān)于如何3分鐘利用原生js實(shí)現(xiàn)有進(jìn)度監(jiān)聽(tīng)的文件上傳預(yù)覽組件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評(píng)論