JS调⽤安卓⼿机摄像头扫描⼆维码
项⽬要求:
使⽤H5模仿微信大楼英语 扫⼀扫付款功能
经过⼀系列的查找最后发现可以使⽤JS调⽤⼿机摄像头然后⽤画布把当前摄像头的数据转成Ba64的png图⽚,经过
QrCode直接再本地识别。
优点:
兼容⼤多数浏览器
本地识别不占⽤服务端资源
代码⽐较简单只有⼀个页⾯
//初始化媒体对象
v英语电影影评 arc=0;
varvideo=mentById('video'),
canvas=mentById('can呼吁意思 vas'),
img=mentById('img'),
vendorUrl=||URL;
//媒体对象
ia=rMedia||
GetUrMedia震波女 ||
UrMedia||
rMedia;
ia({
video:true,//使⽤摄像头对象
audio:fal//不适⽤⾳频
},function(strem){
(strem);
=ObjectURL(strem);
();
},function(error){
//
(error);
});
//启动定时器
tTimeout("actionP(null)","1000");
//定时器
functionactionP(data){
if(data==null){
Screenshot()
}el{
if(data!=null&data!="errordecodingQRCode"){//识别出数据
if(f("http")!=-1){
=data;
}elalert(data);
}el{//没有数据循环⼗次
c++;
if(c<10){
tTimeout("actionP(null)","1000");
}
}
}
}
functionScreenshot(){//截取图像
text('2d').drawImage(video,0,0,400,400);
varimgData=URL("image/png");
load(imgData);
=imgData;
}
////////////////////////////////////////识别⼆维码////////////////////////////////////////////
functiondragenter(e){
opagation();
tDefault();
}
functiondragover(e){
opagation()龙开胜书法作品 ;
tDefault();
}
functiondrop(e){
opagation();
tDefault();
vardt=ansfer;
varfiles=;
}
functionload(name)
{
initCanvas(640,480);
//识别⼆维码并回调⽅法
ck=actionP;
(name);
}维生素b1的副作用
functioninitCanvas(ww,hh)//创建画鹿茸粉怎么吃 板
{
gCanvas=启用宏 mentById("qr-canvas");
ntListener("dragenter",dragenter,fal);
ntListener("dragover",dragover,fal);
ntListener("drop",drop,fal);
varw=ww;
va吃什么水果能变白 rh=hh;
=w+"px";
=h+"px";
=w;
=h;
gCtx=text("2d");
ect(0,0,w,h);
imageData=geData(0,0,320,240);
}