diff --git a/browser.js b/browser.js new file mode 100644 index 0000000..7a11bae --- /dev/null +++ b/browser.js @@ -0,0 +1,25 @@ +var qrDecode = require('./') + +var decode = + exports.decode = function (bom) { + var canvas = document.createElement("canvas") + var ctx = canvas.getContext('2d') + canvas.width = bom.width; + canvas.height = bom.height; + ctx.drawImage(bom, 0, 0, canvas.width, canvas.height); + var data = ctx.getImageData(0, 0, canvas.width, canvas.height); + return qrDecode(data) + } + +exports.decodeByUrl = function (src, cb) { + var img = new Image(); + img.src = src; + img.onload = function () { + try { + cb(null,decode(img)); + } catch (e) { + cb(e); + } + } + img.onerror = cb; +} \ No newline at end of file diff --git a/demo/index.html b/demo/index.html index 7721c29..5010161 100644 --- a/demo/index.html +++ b/demo/index.html @@ -10,5 +10,5 @@
- + \ No newline at end of file diff --git a/demo/test.js b/demo/test.js index e3893f2..2cdb964 100644 --- a/demo/test.js +++ b/demo/test.js @@ -1,5 +1,5 @@ -var qrcodeDecode = require('../') - +var qrcodeDecode = require('../browser') +console.log(1111) document.getElementById('file').onchange = function (event) { var el = event.target; if (!el.files.length) return; @@ -20,19 +20,16 @@ document.getElementById('file').onchange = function (event) { ok(); } }).then((src)=>{ - var img = new Image(); - img.src = src; - img.onload = function(){ - var canvas = document.createElement("canvas"); - var ctx = canvas.getContext('2d'); - canvas.width = img.width; - canvas.height = img.height; - ctx.drawImage(img,0,0,canvas.width,canvas.height) - //inputimg.src = src; - //qrcode.decode(src); - var imageData = ctx.getImageData(0,0,canvas.width,canvas.height) - alert(qrcodeDecode(imageData)); - } + qrcodeDecode.decodeByUrl(src,function(err,txt){ + var msg = document.createElement("div") + if(err){ + console.log(err); + msg.innerHTML = "err:
" + err; + }else{ + msg.innerHTML = txt; + } + document.body.appendChild(msg); + }) }); diff --git a/package.json b/package.json index 1ece7f8..8d23eb4 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "description": "", "main": "index.js", "scripts": { - "test": "npm demo", - "demo": "parcel ./demo" + "test": "npm run demo", + "demo": "parcel ./demo/index.html" }, "repository": { "type": "git", diff --git a/server.js b/server.js index c4c7651..065e074 100644 --- a/server.js +++ b/server.js @@ -4,8 +4,11 @@ var imgType = require('image-type') var qrDecode = require('./') // var jpg = require('./src/imageDecode/jpg'); - -function decode(buffer) { +/** + * 通过Buffer识别二维码 + * @param {buufer} buffer 文件的Buffer + */ +function decodeByBuffer(buffer,debug) { var type; return new Promise(function (res, rej) { type = (imgType(buffer) || {}).ext; @@ -31,7 +34,7 @@ function decode(buffer) { throw 'not image!' } }).then(function (imageData) { - if (type == 'gif') { + if (type == 'gif' || type == 'png') { return new Promise(function (res, rej) { var errList = []; var images = imageData; @@ -40,7 +43,7 @@ function decode(buffer) { if (errList.length < images.length) return; rej('解码失败!') } - // console.log('length',imageData.length) + debug && console.log('length',imageData.length) if (imageData.length <= 0) { rej('解码失败!') } else if (imageData.length > 3) { @@ -57,13 +60,13 @@ function decode(buffer) { images.push(imageData[Math.floor(i*sp)]) }while(i++