-
2018-05-29 15:39:31不多说,直接上代码
[HTML]代码
<!DOCTYPE html>
<html>
<head>
<title>二维码扫描测试</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<style type="text/css">
html, body {
height: 100%;
width: 100%;
text-align: center;
}
</style>
<script src="../js/jquery-1.11.1.min.js"></script>
<script>
//这段代 主要是获取摄像头的视频流并显示在Video 签中
var canvas = null, context = null, video = null;
window.addEventListener("DOMContentLoaded", function () {
try {
canvas = document.getElementById("canvas");
context = canvas.getContext("2d");
video = document.getElementById("video");var videoObj = { "video": true, audio: false },
flag = true,
MediaErr = function (error) {
flag = false;
if (error.PERMISSION_DENIED) {
alert('用户拒绝了浏览器请求媒体的权限', '提示');
} else if (error.NOT_SUPPORTED_ERROR) {
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');
} else if (error.MANDATORY_UNSATISFIED_ERROR) {
alert('指定的媒体类型未接收到媒体流', '提示');
} else {
alert('系统未能获取到摄像头,请确保摄像头已正确安装。或尝试刷新页面,重试', '提示');
}
};
//获取媒体的兼容代码,目前只支持(Firefox,Chrome,Opera)
if (navigator.getUserMedia) {
//qq浏览器不支持
if (navigator.userAgent.indexOf('MQQBrowser') > -1) {
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');
return false;
}
navigator.getUserMedia(videoObj, function (stream) {
video.src = stream;
video.play();
}, MediaErr);
}
else if (navigator.webkitGetUserMedia) {
navigator.webkitGetUserMedia(videoObj, function (stream) {
video.src = window.webkitURL.createObjectURL(stream);
video.play();
}, MediaErr);
}
else if (navigator.mozGetUserMedia) {
navigator.mozGetUserMedia(videoObj, function (stream) {
video.src = window.URL.createObjectURL(stream);
video.play();
}, MediaErr);
}
else if (navigator.msGetUserMedia) {
navigator.msGetUserMedia(videoObj, function (stream) {
$(document).scrollTop($(window).height());
video.src = window.URL.createObjectURL(stream);
video.play();
}, MediaErr);
} else {
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器');
return false;
}
if (flag) {
//alert('为了获得更准确的测试结果,请尽量将二维码置于框中,然后进行拍摄、扫描。 请确保浏览器有权限使用摄像功能');
}
//这个是拍照按钮的事件,
$("#snap").click(function () { startPat(); }).show();
} catch (e) {
printHtml("浏览器不支持HTML5 CANVAS");
}
}, false);//打印内容到页面
function printHtml(content) {
$(window.document.body).append(content + "<br/>");
}
//开始拍照
function startPat() {
setTimeout(function () {//防止调用过快
if (context) {
context.drawImage(video, 0, 0, 320, 320);
CatchCode();
}
}, 200);
}
//抓屏获取图像流,并上传到服务器
function CatchCode() {
if (canvas != null) {
//以下开始编 数据
var imgData = canvas.toDataURL("image/jpeg");
//将图像转换为base64数据
var base64Data = imgData; //在前端截取22位之后的字符串作为图像数据
$.ajax({
type: 'post',
url: '../ashx/HandlerScan.ashx?method=ParseImage',
data: 'ImgData=' + base64Data,
dataType: "json",
cache: false,
timeout: 10000,
success: function (mes) {
if (mes.code == '1') {
alert('未识别二维码,请重新扫描!');
}
else {
alert(mes.name);
}
},
error: function (err) {
alert('扫描失败' + err);
}
});
}
}
</script>
<body>
<div id="support"></div>
<div id="contentHolder">
<video id="video" width="320" height="320" autoplay></video>
<canvas id="canvas" style="display:none; background-color:#F00;" width="320" height="320"></canvas><br/>
<button id="snap" style="display:none; height:50px; width:120px;">开始扫描</button>
</div>
</body>
</html>
[C#后台]
public class HandlerScan : IHttpHandler
{
private JsonResult js = new JsonResult();
public void ProcessRequest(HttpContext context)
{
string result = string.Empty;
string method = context.Request.QueryString.ToString();//获取想要做的操作
switch (method)
{
case "method=ParseImage":
result = ParseImage(context);
break;
default:
break;
}
context.Response.ContentType = "text/json";
context.Response.Write(result);
}private string ParseImage(HttpContext context)
{
try
{
string imgStr = context.Request.Params["ImgData"].ToString();
imgStr = imgStr.Replace("data:image/jpeg;base64,", "");
//整理字符串
imgStr = imgStr.Replace(" ", "+");
byte[] arr = Convert.FromBase64String(imgStr);
MemoryStream ms = new MemoryStream(arr, 0, arr.Length);
Bitmap bmp = new Bitmap(ms);
//解析图片
Result result = new BarcodeReader().Decode(bmp);
if(result == null)
{
return "{\"code\":1,\"name\":\"\"}";
}
else
{
string[] a = result.Text.Split(',');
string str = "{\"code\":0,\" name\":\"" + a[0] + "\"}";
return str;
}
}
catch (Exception ex)
{
return "{\"code\":1,\"msg\":\"" + ex.Message + "\",\"userName\":\"\"}";
}
}public bool IsReusable
{
get
{
return false;
}
}
}解析图片用的 ZXing 的DLL,引用上之后就可以了,二维码格式自己定义,研究了几天,虽然大多数代码都不是自己写的
但是也有点收获,至少我的思路时没错的,大家觉得有用可以参考下,另外浏览器要支持HTML5,我用的是火狐浏览器,谢谢!
更多相关内容 -
html扫描二维码
2020-12-02 11:06:16引入Jquery,bootstrap 依赖 <script src="https://cdn.staticfile.org/jquery/1.11.2/jquery.min.js"></script> <...</script>...Html内容,通过 a标签重定向到 http://sao315.com/w/引入Jquery,bootstrap 依赖
<script src="https://cdn.staticfile.org/jquery/1.11.2/jquery.min.js"></script> <script src="https://cdn.bootcss.com/twitter-bootstrap/4.4.1/js/bootstrap.min.js"></script>
Html内容,通过 a标签重定向到 http://sao315.com/w/api/saoyisao 在重定向到当前页面 启动扫一扫得到结果
<div> <a href="http://sao315.com/w/api/saoyisao" class="btn btn-outline-primary" role="button" aria-pressed="true" style="width: 250px;margin-top: -90px; z-index: 999;position: sticky;display: none;"> <i class='dzwfont dzw-saomiao' style="font-size: 25px;"></i> 不跳转页面普通扫描</a> <a href="http://sao315.com/w/api/saoyisao?redirect_uri=当前页面url" style="width: 250px;margin-top: -90px; z-index: 999;position: sticky;" class="btn btn-outline-info" role="button" aria-pressed="true"><i class='dzwfont dzw-saomiao' style="font-size: 25px;"></i>跳转页面强制扫描</a> <div>
JS
// 页面初始化(调用扫一扫后) $(function(){ // 得到扫描 结果 var qr = getQueryString("qrresult"); if (qr) { alert(qr); var qrString = qr; try{ // 根据 扫描结果qr 实现自定义逻辑 }catch(exception){ } } }) // 解析扫描结果 function getQueryString(name) { var reg = new RegExp("\\b" + name + "=([^&]*)"); var r = location.href.match(reg); if (r != null) return decodeURIComponent(r[1]); }
-
HTML5获取摄像头和视频控制接口进行扫描二维码示例
2020-08-05 09:33:02扫码是通过jsQR库实现的,在vue环境也可以实现调用摄像头进行扫描二维码并且返回二维码链接的一个操作。示例是一个html和一个jsQR.js两个文件,想了解vue环境的代码怎么写的可以去看看我的写的文章。文章链接:... -
html5+js 实现二维码扫描
2015-12-17 09:39:12html5+js 实现二维码扫描,跨平台实现了QR的识别,里面有js库 -
通过扫描二维码打开app的实现代码
2020-11-28 00:06:47最近有朋友问小编这样一个问题,先给大家说下项目需求:扫描二维码打开app如果用户没有这个app则提示它跳转。 用网页直接来调用app是不打可能的,必须原生那边先做一些配置。 首先,安卓和苹果的调用方法是不同的。 ... -
JS实现扫码枪扫描二维码功能
2020-11-28 17:49:03扫码枪扫描二维码,具体内容如下所示: 业务需求要将数据生成二维码,并用扫码枪扫出数据上传到服务端。 先上代码吧,之后再完善注意点 this.start = new Date().getTime() let code = '' let lastTime, nextTime... -
JAVA整合HTML5实现扫描二维码功能项目源码
2016-07-09 15:36:28Eclipse,JDK1.7,struts2,HTML5,Jquery,QRCode HTML5技术支持WebApp在手机上拍照,显示在页面上并上传到服务器。这是手机微博应用中常见的功能,当然你也可以在其它类型应用中适当使用此技术。 -
H5扫描二维码
2019-05-08 16:02:40html 实现扫描二维码! -
Html5实现二维码扫描并解析
2021-01-21 14:15:33引子: 最近公司项目有个需求,微博客户端中, h5 的页面上的某个按钮能够与native 交互呼起摄像头,扫描二维码并且解析。在非微博客户端中(微信或者是原生浏览器,如:safari)呼起系统的拍照或者上传图片按钮,... -
html页面实现扫描二维码功能
2021-06-22 13:24:40二维码的内容具体是一串 10位数的字符串ID , 这个10位数的ID 就是对应数据库表里的 rowID , 扫码之后,打开一个显示记录详情的页面即可。 本人菜鸟,还没有做过手机端的应用。 我不知道怎么用 html 页面打开扫... -
h5扫描二维码.zip
2020-09-09 16:00:12由html5页面调取手机摄像头中扫描工具,可识别所有二维码,整体环节不算很流畅,但是应对一般的需求还是没问题的,时间紧迫没时间做后期需优化。 -
js 扫描二维码
2018-10-24 15:19:00通过js在前端html页面进行二维码扫码,有一定误差,但是不影响 -
自定义手机浏览器Html+二维码扫描插件
2019-09-17 14:00:22自定义浏览器扫描二维码的样式,reqrcode.js识别二维码图片,具体代码及效果参考https://mp.csdn.net/postedit/100923933 -
JS调用安卓手机摄像头扫描二维码
2020-11-28 12:50:36项目要求: ...经过一系列的查找最后发现可以使用 JS调用...html lang="ZH-CN"> <head> <meta charset="utf-8"> <title>Web QrCode Test</title> [removed][removed] <script type="te -
手APP扫描二维码功能
2019-09-18 17:00:49非常方便快捷Hbuilder打包就可以手机安装使用 -
微信扫描二维码提示在浏览器中打开
2020-11-25 23:03:01微信扫描二维码提示在浏览器中打开 -
mui+html5+实现扫描二维码操作
2021-06-01 22:10:33先创建一个html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,...利用:barcode
Barcode模块管理条码(一维码和二维码)扫描识别,支持常见的一维码(如EAN13码)及二维码(如QR码)。通过调用设备的摄像头对条码进行扫描识别,扫描到条码后进行解码并返回码数据内容及码类型。
Barcode模块可使得Web开发人员能快速方便调用设备的摄像头进行条码扫描识别,而不需要安装额外的扫描插件。规范建议条码识别引擎的支持规范定义的所有条码常量类型。
https://www.html5plus.org/doc/zh_cn/barcode.html
例子:
1,先创建一个html,主要当点击按钮的时候就跳转到显示二维码扫描的页面去。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <title></title> <script src="js/mui.min.js"></script> <link href="css/mui.min.css" rel="stylesheet"/> </head> <body> <header class="mui-bar mui-bar-nav"> <h1 class="mui-title">二维码</h1> </header> <div class="mui-content"> <button type="button" class="mui-btn mui-btn-blue" id="scan">扫描二维码</button> </div> <script type="text/javascript" charset="utf-8"> mui.init(); mui.plusReady(function(){ mui("#scan")[0].addEventListener("tap",function(){ //打开一个页面,用来进行扫描操作 mui.openWindow({ url:'email.html', id:'email.html' }) }) }) </script> </body> </html>
,2,显示显示二维码操作的页面
html:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <title></title> <script src="js/mui.min.js"></script> <link href="css/mui.min.css" rel="stylesheet"/> </head> <body> <header class="mui-bar mui-bar-nav" > <h1 class="mui-title">扫描操作</h1> </header> <div class="mui-content"> <div id="scan" style="width: 100%;height: 500px;"></div> </div> <script type="text/javascript" charset="utf-8"> mui.init(); mui.plusReady(function(){ //Barcode模块管理条码(一维码和二维码)扫描识别,支持常见的一维码(如EAN13码)及二维码(如QR码)。通过调用设备的摄像头对条码进行扫描识别,扫描到条码后进行解码并返回码数据内容及码类型。 //Barcode模块可使得Web开发人员能快速方便调用设备的摄像头进行条码扫描识别,而不需要安装额外的扫描插件。规范建议条码识别引擎的支持规范定义的所有条码常量类型。 //https://www.html5plus.org/doc/zh_cn/barcode.html //创建二维码摄像头对象 var barcode = new plus.barcode.Barcode('scan'); //扫码识别成功事件 barcode.onmarked = function(type, code, file){ console.log(type); console.log(code); console.log(file); //扫描完打开路径: //调用第三方程序打开指定的URL plus.runtime.openURL(code); } //调用设备的摄像头在控件中预览,并获取捕获数据进行扫码识别,当识别出条码(二维码)数据时触发onmarked事件返回扫码结果。 // barcode.start(options); }) </script> </body> </html>
扫描的是该二维码:
输出效果:
-
h5扫描二维码,uni-app h5扫描二维码,vue h5扫描二维码
2021-09-28 18:19:04 -
C# 调用摄像头扫描二维码、生成二维码
2016-06-08 16:16:05所以就干脆照抄别人的,简单实现了一个生成二维码,调用摄像头实时扫描二维码。 扫描的基本思路是每个10秒截一次屏,并保存为一个bmp格式的图片,然后调用zxing的类库解码,如果解码成功就终止截屏任务。 -
Android webview调用摄像头扫描二维码
2016-10-13 15:48:11直接下载可以运行, android studio 工具开发, webview引用的本地页面 或者远程页面调用android 摄像头, 通过zxing解析包 进行二维码解析 -
HTML5混合开发二维码扫描以及调用本地摄像头
2020-09-28 03:43:05今天主管给了我个需求,说要用混合开发,用H5调用本地摄像头进行扫描二维码,我之前有做过原生安卓的二维码扫一扫,主要是通过调用zxing插件进行操作的 -
javascript解析二维码插件以及demo
2018-10-15 11:06:29原生JavaScript识别二维码并解析出二维码的值的插件,里面有一个test.html的demo可以直接用浏览器打开查看,仅供测试练习玩耍使用,实际项目中可能有异常 -
Android使用WebView调用H5完成摄像头扫描二维码
2020-11-04 11:14:46Android APP使用WebView调用H5页面完成摄像头扫描二维码 项目使用Android Studio,打开项目可以直接运行,用过的都说好:) -
基于MUI框架的使用HTML5+实现的二维码扫描功能
2019-04-21 11:03:55基于MUI框架的使用HTML5+实现的二维码扫描功能,代码实现了二维码的实时扫描功能,并可以从本地文件夹中选取图片进行扫描,对布局进行了优化,适配了更多的机型。PC端不可使用,仅限于移动端,下载使用之前,请先... -
Html5实现二维码扫描并解析-web前端教程
2020-07-03 15:43:47最近公司项目有个需求,微博客户端中, h5 的页面上的某个按钮能够与native 交互呼起摄像头,扫描二维码并且解析。在非微博客户端中(微信或者是原生浏览器,如:safari)呼起系统的拍照或者上传图片按钮,通过拍照... -
html5实现二维码扫描并解析
2016-09-02 09:16:53实现基本步骤: 操作摄像头,获取图片。 技术要点:MediaStream、GetUserMedia、File api。 利用canvas使用相关算法分析图片识别图片得出结果。 ...后台解析二维码主要用到ThoughtWorks.QRCode.dll -
网页实现二维码扫描完整代码+插件.zip
2020-01-03 17:37:43实现了纯网页实现二维码扫描和解析,此文件夹包含了实现的全部代码和相关资源。实现语言:html、js。 -
mui打开摄像头扫描二维码
2019-04-16 14:17:42用mui做的纯html5打开摄像头扫描二维码的项目 -
qrcode-scanner_HTML5QRCodeScaner_二维码扫描插件_
2021-10-04 03:11:09使用javascript编写的二维码扫描插件,使用简单,安装即用。 -
zxing.zip 基于zxing 实现纯HTML5+JS 扫描识别二维码,不需要联外网
2021-07-22 09:42:27基于zxing实现的移动端H5扫描识别二维码,支持局域网,识别率高!需要开启HTTPS~
收藏数
37,837
精华内容
15,134