master
cnwhy 7 years ago
parent 518ed4af94
commit dc74dd877c

@ -1,9 +1,11 @@
# qrcode-decode # qrcode-decode
时要的二维码识别代码整理自 [jsqrcode](https://github.com/LazarSoft/jsqrcode); 解密/识别 QRCode码
说明: 主要的二维码识别代码整理自 [jsqrcode](https://github.com/LazarSoft/jsqrcode);
**修改点:** **修改点:**
1. 模块化 1. 模块化
2. 剥离识别函数,改成适合服务端使用,但入参数还是保留为实现[ImageData](https://developer.mozilla.org/zh-CN/docs/Web/API/ImageData)接口的对像 2. 剥离识别函数,改成适合服务端使用,但入参数还是保留为[ImageData](https://developer.mozilla.org/zh-CN/docs/Web/API/ImageData)
**关于 `ImageData`** **关于 `ImageData`**
> `Canvas` 中可以用 `ctx.getImageData` 方法得到; > `Canvas` 中可以用 `ctx.getImageData` 方法得到;
@ -13,6 +15,23 @@
- `server.js` 服务端项目 提供两个API `decodeByPath`, `decodeByBuffer` - `server.js` 服务端项目 提供两个API `decodeByPath`, `decodeByBuffer`
> 服务端当前支持 `bmp` , `jpg` , `png` , `gif` 格式; > 服务端当前支持 `bmp` , `jpg` , `png` , `gif` 格式;
## install
```
npm i qrcode-decode
```
## import
```js
var qrDecode = require('qrcode-decode');
//web
var qr_web = require('qrcode-decode/browser')
//node
var qr_node = require('qrcode-decode/server')
var text = qrDecode(dataImage);
```
> 浏览器直接引用请使用 `./dist` 目录下的文件
## demo ## demo
### web ### web
> web端最终是利用`Canvas`获取`ImageData`, 注意兼容及跨域问题 > web端最终是利用`Canvas`获取`ImageData`, 注意兼容及跨域问题
@ -33,7 +52,7 @@ qrcodeDecode.decodeByDom(img, function (err, txt) {
``` ```
### nodejs ### nodejs
> 注意: 服务器端API是以 `promise` 返回结果,你注意你的`node`版本; > 注意: 服务器端API是以 `promise` 返回结果, 你注意你的`node`版本;
```js ```js
//解析文件 //解析文件
var qrcodeDecode = require('qrcode-decode/server'); var qrcodeDecode = require('qrcode-decode/server');

@ -1,5 +1,5 @@
var decode = require('./src/QRCodeDecode'); var qrDecode = require('./src/QRCodeDecode');
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')
@ -7,7 +7,7 @@ var decodeByDom = function (dom) {
canvas.height = dom.height; canvas.height = 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 decode(data) return qrDecode(data)
} }
var decodeByUrl = (src, cb) => { var decodeByUrl = (src, cb) => {
@ -24,8 +24,6 @@ var decodeByUrl = (src, cb) => {
img.onerror = cb; img.onerror = cb;
} }
module.exports = { qrDecode.decodeByDom = decodeByDom;
decodeByImageDate: decode, qrDecode.decodeByUrl = decodeByUrl;
decodeByDom: decodeByDom, module.exports = qrDecode;
decodeByUrl: decodeByUrl
}

@ -10,5 +10,5 @@
<input type="file" name="file" id="file"><br> <input type="file" name="file" id="file"><br>
<div></div> <div></div>
</body> </body>
<script type="text/javascript" src="test.1.js"></script> <script type="text/javascript" src="test.js"></script>
</html> </html>

@ -3029,19 +3029,11 @@
img.onerror = cb; img.onerror = cb;
}; };
var browser = { QRCodeDecode.decodeByDom = decodeByDom;
decodeByImageDate: QRCodeDecode, QRCodeDecode.decodeByUrl = decodeByUrl;
decodeByDom: decodeByDom, var browser = QRCodeDecode;
decodeByUrl: decodeByUrl
};
var browser_1 = browser.decodeByImageDate;
var browser_2 = browser.decodeByDom;
var browser_3 = browser.decodeByUrl;
exports.default = browser; exports.default = browser;
exports.decodeByImageDate = browser_1;
exports.decodeByDom = browser_2;
exports.decodeByUrl = browser_3;
Object.defineProperty(exports, '__esModule', { value: true }); Object.defineProperty(exports, '__esModule', { value: true });

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -3,6 +3,13 @@
"version": "0.0.1", "version": "0.0.1",
"description": "QRCode parser/decode", "description": "QRCode parser/decode",
"main": "src/QRCodeDecode.js", "main": "src/QRCodeDecode.js",
"files": [
"README.md",
"browser.js",
"server.js",
"src/*",
"dist/*"
],
"scripts": { "scripts": {
"test": "node test/node.js", "test": "node test/node.js",
"demo": "parcel ./demo/index.html", "demo": "parcel ./demo/index.html",

@ -24,9 +24,7 @@ function decodeByBuffer(buffer, options) {
res(imgDecode.png(buffer)); res(imgDecode.png(buffer));
break; break;
case 'gif': case 'gif':
// var t1 = Date.now(); res(imgDecode.gif(buffer));
res(imgDecode.gif1(buffer));
// console.log('gif: ',Date.now() - t1);
break; break;
default: default:
if (type) { if (type) {
@ -87,8 +85,7 @@ function decodeByPath(path,options) {
}) })
} }
module.exports = { qrDecode.decodeByBuffer = decodeByBuffer;
decodeByBuffer: decodeByBuffer, qrDecode.decodeByPath = decodeByPath;
decodeByPath: decodeByPath,
decodeByImageData: qrDecode module.exports = qrDecode;
}
Loading…
Cancel
Save