项目要求:

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

经过一系列的查找最后发现可以使用 JS调用手机摄像头然后用画布把当前摄像头的数据转成Base64的png图片,经过QrCode直接再本地识别。

优点:

兼容大多数浏览器

本地识别不占用服务端资源

代码比较简单只有一个页面

Web QrCode Test

//初始化媒体对象

var c=0;

var video = document.getElementById('video'),

canvas = document.getElementById('canvas'),

img = document.getElementById('img'),

vendorUrl = window.URL || window.webkitURL;

//媒体对象

navigator.getMedia = navigator.getUserMedia ||

navagator.webkitGetUserMedia ||

navigator.mozGetUserMedia ||

navigator.msGetUserMedia;

navigator.getMedia({

video: true, //使用摄像头对象

audio: false //不适用音频

}, function(strem){

console.log(strem);

video.src = vendorUrl.createObjectURL(strem);

video.play();

}, function(error) {

//error.code

console.log(error);

});

//启动定时器

setTimeout("actionP(null)","1000");

//定时器

function actionP(data){

if(data==null){

Screenshot()

}else{

if(data!=null & data!="error decoding QR Code"){//识别出数据

if(data.indexOf("http")!=-1){

window.location.href=data;

}else alert(data);

}else{//没有数据循环十次

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;

}

识别二维码

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);

//识别二维码并回调方法

qrcode.callback = actionP;

qrcode.decode(name);

}

function initCanvas(ww,hh)//创建画板

{

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);

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python调用手机摄像头识别二维码_JS调用安卓手机摄像头扫描二维码相关推荐

  1. android系统密码设置功能,手机锁屏密码怎么设置 三种安卓手机锁屏方式推荐

    手机中有很多应用都是与金钱挂钩,特别是微信与支付宝等等既涉及到隐私又与财产关联,这是后手机的安全就尤为重要的,而手机的锁屏密码就是一道最基本的防护措施,那么手机锁屏密码怎么设置?来看看小编推荐的三种安 ...

  2. 安卓手机配哪款蓝牙耳机?最适合安卓手机的蓝牙耳机

    蓝牙耳机火了之后,各个品牌就开始涌现,就连手机厂家也开始涉足蓝牙耳机领域.安卓手机这几年也是受到很多人的喜爱,那么安卓手机应该怎么选择蓝牙耳机呢?下面我们一起来看看当前值得入手的蓝牙耳机吧! 第一款: ...

  3. Java通过二维码下载Apk====安卓手机

    需求:通过二维码下载apk文件 1,创建springboot项目(新建maven项目) 2.创建包和类 3.源码 import org.springframework.stereotype.Contr ...

  4. 解决安卓版微信扫描二维码白屏的问题

    今天遇到一个问题,做的网站,通过安卓手机微信扫一扫二维码或者识别二维码链接无法跳转,显示白屏,但是ios的微信扫码就没有问题,一开始认为是安卓版微信做了限制,后来分析了下扫码后跳转的链接,发现了这个问 ...

  5. 小米10四如何测试手机性能软件,安兔兔4月安卓手机性能榜:OPPO垄断前二 小米10 Pro第四...

    5月6日,安兔兔发布了4月安卓手机性能榜.榜单显示,OPPO两款Find系列机型垄断前二,iQOO Neo3排名第三,小米10 Pro位列第四. 随着又一波骁龙865机型的发布,本月旗舰榜单前十位又发 ...

  6. 安卓手机主题软件_超小型软件,安卓手机必备

    点击上方"软件严选",设为星标 黑科技软件,第一时间送达 全能老司机已改名为软件严选,依旧每天为大家提供黑科技严选软件~ 由于公众号改版,现在的公众号消息已经不再按照时间顺序排送了 ...

  7. vivo是安卓手机吗_vivo新机Y73s评测:谁说买手机一定要买旗舰机?_安卓手机

    2020-10-24 21:06:200点赞0收藏0评论 创作立场声明:今年的手机的主旋律仍然是5G,毕竟,仍然有一些手机是没有5G功能的. 今年的手机的主旋律仍然是5G,毕竟,仍然有一些手机是没有5 ...

  8. 小米手机不弹出usb连接设置_安卓手机数据备份教程(华为、小米、oppo、vivo)...

    目前国产手机占比较高,而且各大手机产商非常人性化,提供数据备份功能,因此换机以及刷机都不会让人很犹豫.三星以及sony这种品牌明显水土不服,不建议使用. 目录: OPPO 华为 小米 vivo opp ...

  9. android手机是否root,已经2017年了,安卓手机还需要Root吗?

    Android是目前世界上最流行的操作系统,而且基于该系统的设备在全球范围内处于统治级地位.不过,对于很多安卓手机用户来说,root这个词对他们十分陌生,甚至成为过去式.不过,早在2014年的时候曾有 ...

  10. android手机内存这么大,专业解读:为什么安卓手机的内存越来越大?

    原标题:专业解读:为什么安卓手机的内存越来越大? 首先,本文所说的内存即我们通常意义上所称的运行内存RAM,而非储存内存ROM.简单点来说,就是我们平常见到的6G+64G.8G+128G中前面的6G/ ...

最新文章

  1. Android10.0 Binder通信原理(四)-Native-C\C++实例分析
  2. vb.net 2019-机器学习ml.net情绪分析(3)
  3. 与计算机相关的社团活动,计算机社团活动记录.doc
  4. java is start_PHP IntlChar::isJavaIDStart()用法及代码示例
  5. 收藏 | 三张图读懂机器学习:基本概念、五大流派与九种常见算法
  6. sql左外连接和右外连接的区别
  7. linux libstdc 怎样升级,linux 更新libstdc++.so.6
  8. hibernate教程笔记1
  9. iOS中关于文件操作
  10. mac brew加速
  11. Python爬取《你好,李焕英》电影影评并制作词云图
  12. 特殊教育学校计算机教学计划,2017年特殊教育学校教学计划
  13. php实现 三角形_HTML纯CSS绘制三角形(各种角度)
  14. maximo跟java_maximo中直接应用得到数据库联接
  15. PHPMyWind后台登录密码忘记的解决办法
  16. 手机敬业签App怎么快速添加便签内容?
  17. android手机整体规模,2021年Android手机市场规模
  18. JustLaws 法律文库贡献指南
  19. C#:DataGridView边框线、标题、单元格的各种颜色
  20. 易语言-寻找文本和寻找字节集的区别

热门文章

  1. 【智能制造】歌尔股份打造面向可重构和微服务的可穿戴产品智慧工厂
  2. 使用电信光猫加路由器实现内网穿透,外网访问内网
  3. [jzoj 4226] 【五校联考3day2】A {简单题}
  4. 测试自动化风险或成功的条款
  5. 求职互联网技术岗应届生面试必备技巧分享
  6. Android自动背光调节机制分析
  7. 鸿蒙Ability继承FractionAbility可以直接获取Fraction内的控件
  8. 【Lorenz混沌】基于FPGA的Lorenz混沌系统verilog实现
  9. 费曼:任何伟大的科学成就,都源于思想自由
  10. 如何一次将蓝牙耳机连接到多个设备