2 Commits
Author SHA1 Message Date
cnwhy 2e142c20e8 v0.0.2 2018-07-24 17:32:09 +08:00
cnwhy a98b9e1129 bugfix 2018-07-24 17:28:43 +08:00
15 changed files with 108 additions and 6416 deletions
View File
+3 -2
View File
@@ -3,8 +3,9 @@ var qrDecode = require('./src/QRDecode');
var decodeByDom = function (dom) { var decodeByDom = function (dom) {
var canvas = document.createElement("canvas") var canvas = document.createElement("canvas")
var ctx = canvas.getContext('2d') var ctx = canvas.getContext('2d')
canvas.width = dom.width; var isVideo = dom.tagName == 'VIDEO'
canvas.height = dom.height; canvas.width = isVideo ? dom.videoWidth : dom.width;
canvas.height = isVideo ? dom.videoHeight : dom.height;
ctx.drawImage(dom, 0, 0, canvas.width, canvas.height); ctx.drawImage(dom, 0, 0, canvas.width, canvas.height);
var data = ctx.getImageData(0, 0, canvas.width, canvas.height); var data = ctx.getImageData(0, 0, canvas.width, canvas.height);
return qrDecode(data) return qrDecode(data)
+85 -2
View File
@@ -1,14 +1,97 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>qrcode-decode</title> <title>qrcode-decode</title>
</head> </head>
<body> <body>
<input type="file" name="file" id="file"><br> <input type="file" name="file" id="file">
<br>
<button id="videoBut" onclick="buttonClick()">启用摄像头</button><br>
<video id="video" width="300"></video>
<div></div> <div></div>
</body> </body>
<script type="text/javascript" src="test.js"></script> <script type="text/javascript" src="../dist/qr-decode.js"></script>
<script>
document.getElementById('file').onchange = function (event) {
var el = event.target;
if (!el.files.length) return;
var file = el.files[0];
new Promise(function (ok, no) {
if (window.URL && window.URL.createObjectURL) {
ok(window.URL.createObjectURL(file));
} else if (typeof FileReader) {
var reader = new FileReader();
reader.onload = evt => {
ok(evt.target.result);
};
reader.readAsDataURL(file);
} else {
no('浏览器不支持');
}
}).then((src) => {
qrDecode.decodeByUrl(src, function (err, txt) {
var msg = document.createElement("div")
if (err) {
console.log(err);
msg.innerHTML = "err: <br>" + err;
} else {
msg.innerHTML = txt;
}
document.body.appendChild(msg);
})
});
}
var video =document.getElementById('video');
var videoBut =document.getElementById('videoBut');
var xc;
videoBut.onclick = videoEnable;
function videoEnable() {
var URL = window.URL || window.webkitURL;
navigator.getUserMedia({
video: true
}, function (stream) {
video.src = URL.createObjectURL(stream);// 将获取到的视频流对象转换为地址
video.oncanplay = function(){
videoPlay();
video.width = video.videoWidth;
video.height = video.videoHeight;
}
}, function (error) {
alert(error.name || error);
});
}
function videoStop(){
clearInterval(xc);
video.pause();
videoBut.innerText = '启动';
videoBut.onclick = videoPlay;
}
function videoPlay(){
video.play();
videoBut.innerText = '停止';
xc = setInterval(function(){
try{
var txt = qrDecode.decodeByDom(video);
var msg = document.createElement("div")
msg.innerHTML = "识别到二维码: " + txt;
document.body.appendChild(msg);
videoStop();
}catch(err){
console.log(err);
}
},300)
videoBut.onclick = videoStop;
}
</script>
</html> </html>
-32
View File
@@ -1,32 +0,0 @@
var qrcodeDecode = require('../browser')
document.getElementById('file').onchange = function (event) {
var el = event.target;
if (!el.files.length) return;
var file = el.files[0];
new Promise(function (ok, no) {
if (window.URL && window.URL.createObjectURL) {
ok(window.URL.createObjectURL(file));
} else if (typeof FileReader) {
var reader = new FileReader();
reader.onload = evt => {
ok(evt.target.result);
};
reader.readAsDataURL(file);
} else {
no('浏览器不支持');
}
}).then((src) => {
qrcodeDecode.decodeByUrl(src, function (err, txt) {
var msg = document.createElement("div")
if (err) {
console.log(err);
msg.innerHTML = "err: <br>" + err;
} else {
msg.innerHTML = txt;
}
document.body.appendChild(msg);
})
});
}
-14
View File
@@ -1,14 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>qrcode-decode</title>
</head>
<body>
<input type="file" name="file" id="file"><br>
<div></div>
</body>
<script type="text/javascript" src="/test.b0eca09c.js"></script>
</html>
+9 -10
View File
@@ -1,13 +1,13 @@
/*! /*!
* qr-decode v0.0.1 * qr-decode v0.0.2
* (c) 2018-present cnwhy <w.why@163.com> * (c) 2018-present cnwhy <w.why@163.com>
* Released under the ISC License. * Released under the ISC License.
*/ */
(function (global, factory) { (function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(['exports'], factory) : typeof define === 'function' && define.amd ? define(factory) :
(factory((global.qrDecode = {}))); (global.qrDecode = factory());
}(this, (function (exports) { 'use strict'; }(this, (function () { 'use strict';
function AlignmentPattern(posX, posY, estimatedModuleSize) { function AlignmentPattern(posX, posY, estimatedModuleSize) {
this.x = posX; this.x = posX;
@@ -3007,8 +3007,9 @@
var decodeByDom = function decodeByDom(dom) { var decodeByDom = function decodeByDom(dom) {
var canvas = document.createElement("canvas"); var canvas = document.createElement("canvas");
var ctx = canvas.getContext('2d'); var ctx = canvas.getContext('2d');
canvas.width = dom.width; var isVideo = dom.tagName == 'VIDEO';
canvas.height = dom.height; canvas.width = isVideo ? dom.videoWidth : dom.width;
canvas.height = isVideo ? dom.videoHeight : dom.height;
ctx.drawImage(dom, 0, 0, canvas.width, canvas.height); ctx.drawImage(dom, 0, 0, canvas.width, canvas.height);
var data = ctx.getImageData(0, 0, canvas.width, canvas.height); var data = ctx.getImageData(0, 0, canvas.width, canvas.height);
return QRDecode(data); return QRDecode(data);
@@ -3034,8 +3035,6 @@
QRDecode.decodeByUrl = decodeByUrl; QRDecode.decodeByUrl = decodeByUrl;
var browser = QRDecode; var browser = QRDecode;
exports.default = browser; return browser;
Object.defineProperty(exports, '__esModule', { value: true });
}))); })));
+2 -2
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
-3040
View File
File diff suppressed because one or more lines are too long
-7
View File
File diff suppressed because one or more lines are too long
-1
View File
File diff suppressed because one or more lines are too long
-3302
View File
File diff suppressed because one or more lines are too long
-1
View File
File diff suppressed because one or more lines are too long
+6
View File
@@ -0,0 +1,6 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0;url=./demo/" />
</head>
</html>
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "qr-decode", "name": "qr-decode",
"version": "0.0.1", "version": "0.0.2",
"description": "QRCode parser/decode", "description": "QRCode parser/decode",
"main": "src/QRCodeDecode.js", "main": "src/QRCodeDecode.js",
"files": [ "files": [
@@ -13,7 +13,7 @@
"scripts": { "scripts": {
"test": "node test/node.js", "test": "node test/node.js",
"demo": "parcel ./demo/index.html", "demo": "parcel ./demo/index.html",
"build": "bili browser.js --format umd,umd-min --banner --exports named" "build": "bili browser.js --format umd,umd-min --banner"
}, },
"repository": { "repository": {
"type": "git", "type": "git",