A. 如何在web页面读取二维码内容
1、将下列文件拷贝到系统system32目录
dllEan13Decode.dll
libiconv-2.dll
libzbar-0.dll
PropSdk.dll
LbDecode.ocx
dll的调用方法
函数:bOpenUsb20Video();
说明:打开识读器设备
函数:sGetBarData();
说明:获取扫码成功结果
函数:bCloseUsb20();
说明:关闭识读器事件:OnRecvBar();
2、注册控件
regsvr32 C:\WINDOWS\system32\LbDecode.ocx
3、编写html代码<html<head<titleWEB验证二维码范例</title
<script language=javascript
function download1(){// return value ; 5--端口被占用,2--端口不存在, 0-- 成功
document.form1.text1.value=ActiveXDown.bOpenUsb20Video();return;}</script
<script language=JavaScript for=ActiveXDown Event=OnRecvBar
document.form1.text2.value=ActiveXDown.sGetBarData();
</script</head<body<OBJECT ID=ActiveXDown
CLASSID=CLSID:3CFCDE00-47A7-4674-8071-7F7FCDDF506F
CODEBASE=LbDecode.ocx#version=1,0,0,0 width=0 height=0
</OBJECT<center<form name=form1
端口状况:<input type=text name=text1 size=50 value=<p
5--端口被占用,2--端口不存在, 0-- 成功 1-- 失败<p
B. html5移动端页面上调用手机摄像头扫描二维码并获取二维码信息代码
html5移动端调用手机摄像头扫描二维码并获取二维码信息代码如下:
[html]view plain
<!DOCTYPEhtml>
<html><head>
<title>HTML5codeReader</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<styletype="text/css">
html,body{height:100%;width:100%;text-align:center;}
</style>
<scriptsrc="jquery-1.9.1.js"></script>
<script>
//这段代主要是获取摄像头的视频流并显示在Video签中
varcanvas=null,context=null,video=null;
window.addEventListener("DOMContentLoaded",function()
{
try{
canvas=document.getElementById("canvas");
context=canvas.getContext("2d");
video=document.getElementById("video");
varvideoObj={"video":true,audio:false},
flag=true,
MediaErr=function(error)
{
flag=false;
if(error.PERMISSION_DENIED)
{
alert('用户拒绝了浏览器请求媒体的权限','提示');
}elseif(error.NOT_SUPPORTED_ERROR){
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器','提示');
}elseif(error.MANDATORY_UNSATISFIED_ERROR){
alert('指定的媒体类型未接收到媒体流','提示');
}else{
alert('系统未能获取到摄像头,请确保摄像头已正确安装。或尝试刷新页面,重试','提示');
}
};
//获取媒体的兼容代码,目前只支持(Firefox,Chrome,Opera)
if(navigator.getUserMedia)
{
//qq浏览器不支持
if(navigator.userAgent.indexOf('MQQBrowser')>-1){
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器','提示');
returnfalse;
}
navigator.getUserMedia(videoObj,function(stream){
video.src=stream;
video.play();
},MediaErr);
}
elseif(navigator.webkitGetUserMedia)
{
navigator.webkitGetUserMedia(videoObj,function(stream)
{
video.src=window.webkitURL.createObjectURL(stream);
video.play();
},MediaErr);
}
elseif(navigator.mozGetUserMedia)
{
navigator.mozGetUserMedia(videoObj,function(stream){
video.src=window.URL.createObjectURL(stream);
video.play();
},MediaErr);
}
elseif(navigator.msGetUserMedia)
{
navigator.msGetUserMedia(videoObj,function(stream){
$(document).scrollTop($(window).height());
video.src=window.URL.createObjectURL(stream);
video.play();
},MediaErr);
}else{
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器');
returnfalse;
}
if(flag){
alert('为了获得更准确的测试结果,请尽量将二维码置于框中,然后进行拍摄、扫描。请确保浏览器有权限使用摄像功能');
}
//这个是拍照按钮的事件,
$("#snap").click(function(){startPat();}).show();
}catch(e){
printHtml("浏览器不支持HTML5CANVAS");
}
},false);
//打印内容到页面
functionprintHtml(content){
$(window.document.body).append(content+"<br/>");
}
//开始拍照
functionstartPat(){
setTimeout(function(){//防止调用过快
if(context)
{
context.drawImage(video,0,0,320,320);
CatchCode();
}
},200);
}
//抓屏获取图像流,并上传到服务器
functionCatchCode(){
if(canvas!=null)
{
//以下开始编数据
varimgData=canvas.toDataURL();
//将图像转换为base64数据
varbase64Data=imgData;//.substr(22);//在前端截取22位之后的字符串作为图像数据
//开始异步上
$.post("saveimg.php",{"img":base64Data},function(result)
{
printHtml("解析结果:"+result.data);
if(result.status=="success"&&result.data!="")
{
printHtml("解析结果成功!");
}else{
startPat();//如果没有解析出来则重新抓拍解析
}
},"json");
}
}
</script>
<body>
<divid="support"></div>
<divid="contentHolder">
<videoid="video"width="320"height="320"autoplay>
</video>
<canvasstyle="display:none;background-color:#F00;"id="canvas"width="320"height="320">
</canvas><br/>
<buttonid="snap"style="display:none;height:50px;width:120px;">开始扫描</button>
</div>
</body></html>
C. h5 js或者jquery实现二维码扫描功能 求demo
首先,扫描二维码需要调用手机摄像头,而网页本身是没法直接驱动硬件的;
SO:以Android为例:你可以用JS通过WebView调用Java方法,Java方法里面去写调用摄像头扫码二维码事件,将扫描结果在通过webview回传。
D. 用钉钉扫码登录的web程序怎么实现自动化测试
1.建立服务器
我们可以在数据库中建一个qrlogin的表来保存key,比如我们建这样的一个表
其中qrl_guid就是登录的key,登录后的标识flag就是qrl_dingDingUserId(钉钉用户的ID)。
2.生成二维码
二维码的生成可以使用相关的库,比如.net的可以用thoughtworks.qrcode.dll,生成的字符串是htttp://www.xxx.com/qrlogin.html?key=生成的GUID,代码如下
[csharp] view plain
string enCodeString = "http://www.xxx.com/qrlogin.html?key=" + key;
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
Bitmap qrBmp = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
其中key需要先将其插入到数据库表TQRLogin中。
3.qrlogin.html页面
在使用钉钉扫一扫进入到qrlogin.html页面后,我们不只需要得到url中的key,还需要得到该用户的信息,为此需要jsapi的票据,然后配置要调用的jsapi,比如dd.runtime.permission.requestAuthCode,再通过该函数得到用户的信息,示例代码如下
[javascript] view plain
E. 有没有好的websocket 微信扫码登陆实现方案
所以针对第一点,我们的关键在于,在扫描前要确保用户是已经被验证过且合法的用户(验证方式可以是用户名+密码,也可以是一个secure key),在选择是否登录时将这个结果一并推送到服务器端,就好了。如果用户没有验证是否合法,可以像微信的处理方式一样直接告诉用户二维码不可识别或提示请先登录到app。
F. 求java web项目使用html5调用手机摄像头扫描二维码并获取二维码信息代码
需要加载cordova.js 方法: document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { pictureSource = navigator.camera.PictureSourceType; destinationType = navigator.camera.DestinationType; } //相...
G. 怎么用WebView访问扫描到的二维码信息
扫描二维码从头到位都是摄像头在做,跟webview没有一毛钱的关系,你最多也是网页调用摄像头扫描二维码。
在android studio里面我们扫描二维码要引入zxing包项目文件,File->New->Import Mole里导入。
引入过后我们写代码:
Buttonbtn;
TextViewte;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.btn);
te=(TextView)findViewById(R.id.te);
btn.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewview){
if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.CAMERA)
!=PackageManager.PERMISSION_GRANTED){
//申请WRITE_EXTERNAL_STORAGE权限
ActivityCompat.requestPermissions(MainActivity.this,newString[]{Manifest.permission.CAMERA},
1);}//这一块红色的是开启手机里的相机权限,安卓6.0以后的系统需要,否则会报错
Intentintent=newIntent(MainActivity.this,CaptureActivity.class);//CaptureActivity是第三方类库里面的类
startActivityForResult(intent,0);
}
});
}
//这个方法是用来获取从另一个界面传回的值的,有不明白这个方法的作用和Intent类的使用的可以看另外一篇博客安卓的组件载体Intent
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
super.onActivityResult(requestCode,resultCode,data);
if(resultCode==RESULT_OK){
Strings=data.getStringExtra("result");//这个result是在第三方类库里面定义的key
te.setText(s);//往文本框输入结果
}
}
H. w10系统怎么启用 Web 扫描
方法/步骤
1.通过在IE浏览器中输入打印机IP地址登录web页面, 事先必须要设置扫描安全性,否则无法实现此功能.
I. 手机web页面怎么调用摄像头执行扫描,获取数据
HTML5技术支持WebApp在手机上拍照,显示在页面上并上传到服务器。这是手机微博应用中常见的功能,当然你也可以在其它类型应用中适当使用此技术。
1、 视频流
HTML5 的 The Media Capture(媒体捕捉) API 提供了对摄像头的可编程访问,用户可以直接用 getUserMedia(请注意目前仅Chrome和Opera支持)获得摄像头提供的视频流。我们需要做的是添加一个HTML5 的 Video 标签,并将从摄像头获得的视频作为这个标签的输入来源。
<video id=”video” autoplay=”"></video>
<script>
var video_element=document.getElementById(‘video’);
if(navigator.getUserMedia){ // opera应使用opera.getUserMedianow
navigator.getUserMedia(‘video’,success,error); //success是回调函数,当然你也可以直接在此写一个匿名函数
}
function success(stream){
video_element.src=stream;
}
</script>
此时,video 标签内将显示动态的摄像视频流。下面需要进行拍照了。
2、 拍照
拍照是采用HTML5的Canvas功能,实时捕获Video标签的内容,因为Video元素可以作为Canvas图像的输入,所以这一点很好实现。主要代码如下:
var canvas=document.createElement(‘canvas’); //动态创建画布对象
var ctx=canvas.getContext(’2d’);
var cw=vw,ch=vh;
ctx.fillStyle=”#ffffff”;
ctx.fillRect(0,0,cw,ch);
ctx.drawImage(video_element,0,0,cw,ch,0,0,vw,vh); //将video对象内指定的区域捕捉绘制到画布上指定的区域,可进行不等大不等位的绘制。
document.body.append(canvas);
3、 图片获取
从Canvas获取图片数据的核心思路是用canvas的toDataURL将Canvas的数据转换为base64位编码的PNG图像,类似于“data:image/png;base64,xxxxx”的格式。
var imgData=canvas.toDataURL(“image/png”);
这样,imgData变量就存储了一长串的字符数据内容,表示的就是一个PNG图像的base64编码。因为真正的图像数据是base64编码逗号之后的部分,所以要让实际服务器接收的图像数据应该是这部分,我们可以用两种办法来获取。
第一种:是在前端截取22位以后的字符串作为图像数据,例如:
var data=imgData.substr(22);
如果要在上传前获取图片的大小,可以使用:
var length=atob(data).length; //atob 可解码用base-64解码的字串
第二种:是在后端获取传输的数据后用后台语言截取22位以后的字符串(也就是在前台略过上面这步直接上传)。例如PHP里:
$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);
4、 图片上传
在前端可以使用Ajax将上面获得的图片数据上传到后台脚本。例如使用jQuery时可以用:
$.post(‘upload.php’,{‘data’:data});
在后台我们用PHP脚本接收数据并存储为图片。
function convert_data($data){
$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);
save_to_file($image);
}
function save_to_file($image){
$fp=fopen($filename,’w');
fwrite($fp,$image);
fclose($fp);
}