提交 276aa44d authored 作者: 羊富学's avatar 羊富学

贝因美

上级 8e6d14dc
......@@ -10,7 +10,8 @@
"pages/fenggu/success/success",
"pages/fenggu/example/example",
"pages/result/result",
"pages/video/video"
"pages/video/video",
"pages/beiyinmei/beiyinmei"
],
"window": {
"backgroundTextStyle": "light",
......
// pages/beiyinmei/beiyinmei.js
import qrcode, {
height
} from '../../utils/llqrcodefrankyin.js'
Page({
/**
* 页面的初始数据
*/
data: {
img: 'https://res.wx.qq.com/wxdoc/dist/assets/img/0.4cb08bb4.jpg',
setHeight: '',
setWidth: '',
canvas: {
height: 100,
width: 100
},
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
const that = this
this.cameraContext = wx.createCameraContext()
//系统基本信息
const systemInfo = wx.getSystemInfoSync();
this.setData({
setHeight: systemInfo.windowWidth,
setWidth: systemInfo.windowHeight
})
let n = 1,
flag = true
// const ctx = wx.createCanvasContext('myCanvas');
// wx.chooseImage({
// success: function(res){
// console.log(res);
// ctx.drawImage(res.tempFilePaths[0], (400-50)/2, (300-50)/2, 50,50,0,0,200,200)
// // ctx.drawImage(res.tempFilePaths[0], 0, 0, 150, 150)
// ctx.draw()
// }
// })
// setInterval(() => {
// this.cameraContext.takePhoto({
// success: (res) => {
// console.log(888,res);
// this.checkPictureCode(res.tempImagePath)
// },
// fail(e){
// console.log(e,555);
// }
// })
// },0)
// return
const listener = this.cameraContext.onCameraFrame((frame) => {
if (n % 25 == 0 && flag) {
flag = false
this.setData({
canvas: {
height: 500,
width: 500,
flag: false
}
})
console.log(frame)
const base64 = wx.arrayBufferToBase64(frame.data)
// console.log(base64);
that.setData({
src: 'data:image/jpg;base64,' + base64
});
const data = new Uint8ClampedArray(frame.data);
// wx.canvasPutImageData({
// canvasId: 'myCanvas',
// x: 0,
// y: 0,
// width: frame.width,
// height: frame.width,
// data: data,
// success (res) {},
// fail(err){
// console.log(err);
// }
// })
// return
const query = wx.createSelectorQuery()
query.select('#myCanvas')
.fields({
node: true,
size: true
})
.exec((res) => {
const canvas = res[0].node
const ctx = canvas.getContext('2d')
// const imgData= ctx.getImageData(0,0,200,200)
// console.log(new ImageData(data,100,100));
// const d= ctx.putImageData(new ImageData(data,frame.width,frame.height),0,0)
const imgData = canvas.createImageData(data, 400, 400)
const d = ctx.putImageData(imgData, 0, 0)
flag = true
console.log(imgData, 4444, d);
})
}
n++
})
listener.start()
},
checkPictureCode(imagePath) {
const that = this
wx.getImageInfo({
src: imagePath,
success(result) {
console.log(result, 222);
const w = result.width;
const h = result.height;
const canvasContent = wx.createCanvasContext('myCanvas');
canvasContent.drawImage(imagePath, (w - 200) / 2, (h - 200) / 2 - 50, 200, 200, 0, 0, 200, 200)
canvasContent.draw()
console.log();
wx.canvasGetImageData({
canvasId: 'myCanvas',
x: parseInt(0),
y: parseInt(0),
width: 200,
height: 200,
success(data) {
let d = qrcode.decodefrank(200, 200, data.data)
console.log('d', d, 55555);
}
})
that.setData({
img: result.path
})
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})
\ No newline at end of file
{
"usingComponents": {}
}
\ No newline at end of file
<!--pages/beiyinmei/beiyinmei.wxml-->
<view style="height: 100vh;width: 100vw;position: relative;z-index: 99;">
<camera device-position="back" frame-size="large" flash="off" binderror="error" style="width: 100%; height: 300px;" mode="normal">
<view class="prompt">
<image src="/assets/imgs/拍照框.png" style="width: 40%;" mode="widthFix"/>
<text >请把二维码放置拍照框内</text>
</view>
</camera>
<view style="visibility: hidden;">
<canvas type="2d" id="myCanvas" canvas-id="myCanvas" style="height:{{canvas.height}}px;width: {{canvas.width}}px;"></canvas>
<image src="{{img}}" mode="widthFix"/>
</view>
</view>
/* pages/beiyinmei/beiyinmei.wxss */
.prompt {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
width: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: #fff;
}
.prompt text {
margin-top: 50px;
}
\ No newline at end of file
......@@ -41,7 +41,7 @@
"minifyWXML": true,
"showES6CompileOption": false,
"useCompilerPlugins": false,
"condition": false
"condition": true
},
"compileType": "miniprogram",
"libVersion": "2.25.3",
......
......@@ -9,6 +9,13 @@
"condition": {
"miniprogram": {
"list": [
{
"name": "pages/beiyinmei/beiyinmei",
"pathName": "pages/beiyinmei/beiyinmei",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/video/video",
"pathName": "pages/video/video",
......
var _aa = {};
_aa._ab = function (f, e) {
var d = qrcode.width;
var b = qrcode.height;
var c = true;
for (var g = 0; g < e.length && c; g += 2) {
var a = Math.floor(e[g]);
var h = Math.floor(e[g + 1]);
if (a < -1 || a > d || h < -1 || h > b) {
throw "Error._ab "
}
c = false;
if (a == -1) {
e[g] = 0;
c = true
} else {
if (a == d) {
e[g] = d - 1;
c = true
}
}
if (h == -1) {
e[g + 1] = 0;
c = true
} else {
if (h == b) {
e[g + 1] = b - 1;
c = true
}
}
}
c = true;
for (var g = e.length - 2; g >= 0 && c; g -= 2) {
var a = Math.floor(e[g]);
var h = Math.floor(e[g + 1]);
if (a < -1 || a > d || h < -1 || h > b) {
throw "Error._ab "
}
c = false;
if (a == -1) {
e[g] = 0;
c = true
} else {
if (a == d) {
e[g] = d - 1;
c = true
}
}
if (h == -1) {
e[g + 1] = 0;
c = true
} else {
if (h == b) {
e[g + 1] = b - 1;
c = true
}
}
}
};
_aa._af = function (b, d, a) {
var k = new _ac(d);
var j = new Array(d << 1);
for (var f = 0; f < d; f++) {
var g = j.length;
var i = f + 0.5;
for (var h = 0; h < g; h += 2) {
j[h] = (h >> 1) + 0.5;
j[h + 1] = i
}
a._ad(j);
_aa._ab(b, j);
try {
for (var h = 0; h < g; h += 2) {
var e = b[Math.floor(j[h]) + qrcode.width * Math.floor(j[h + 1])];
if (e) {
k._dq(h >> 1, f)
}
}
} catch (c) {
throw "Error._ab"
}
}
return k
};
_aa._ah = function (h, o, l, k, q, p, b, a, f, e, n, m, s, r, d, c, j, i) {
var g = _ae._ag(l, k, q, p, b, a, f, e, n, m, s, r, d, c, j, i);
return _aa._af(h, o, g)
};
function _a1(b, a) {
this.count = b;
this._fc = a;
this.__defineGetter__("Count", function () {
return this.count
});
this.__defineGetter__("_dm", function () {
return this._fc
})
}
function _a2(a, c, b) {
this._bm = a;
if (b) {
this._do = new Array(c, b)
} else {
this._do = new Array(c)
}
this.__defineGetter__("_bo", function () {
return this._bm
});
this.__defineGetter__("_dn", function () {
return this._bm * this._fo
});
this.__defineGetter__("_fo", function () {
var e = 0;
for (var d = 0; d < this._do.length; d++) {
e += this._do[d].length
}
return e
});
this._fb = function () {
return this._do
}
}
function _a3(k, l, h, g, f, e) {
this._bs = k;
this._ar = l;
this._do = new Array(h, g, f, e);
var j = 0;
var b = h._bo;
var a = h._fb();
for (var d = 0; d < a.length; d++) {
var c = a[d];
j += c.Count * (c._dm + b)
}
this._br = j;
this.__defineGetter__("_fd", function () {
return this._bs
});
this.__defineGetter__("_as", function () {
return this._ar
});
this.__defineGetter__("_dp", function () {
return this._br
});
this.__defineGetter__("_cr", function () {
return 17 + 4 * this._bs
});
this._aq = function () {
var q = this._cr;
var o = new _ac(q);
o._bq(0, 0, 9, 9);
o._bq(q - 8, 0, 8, 9);
o._bq(0, q - 8, 9, 8);
var n = this._ar.length;
for (var m = 0; m < n; m++) {
var p = this._ar[m] - 2;
for (var r = 0; r < n; r++) {
if ((m == 0 && (r == 0 || r == n - 1)) || (m == n - 1 && r == 0)) {
continue
}
o._bq(this._ar[r] - 2, p, 5, 5)
}
}
o._bq(6, 9, 1, q - 17);
o._bq(9, 6, q - 17, 1);
if (this._bs > 6) {
o._bq(q - 11, 0, 3, 6);
o._bq(0, q - 11, 6, 3)
}
return o
};
this._bu = function (i) {
return this._do[i.ordinal()]
}
}
_a3._bv = new Array(31892, 34236, 39577, 42195, 48118, 51042, 55367, 58893, 63784, 68472, 70749, 76311, 79154, 84390, 87683, 92361, 96236, 102084, 102881, 110507, 110734, 117786, 119615, 126325, 127568, 133589, 136944, 141498, 145311, 150283, 152622, 158308, 161089, 167017);
_a3.VERSIONS = _ay();
_a3._av = function (a) {
if (a < 1 || a > 40) {
throw "bad arguments"
}
return _a3.VERSIONS[a - 1]
};
_a3._at = function (b) {
if (b % 4 != 1) {
throw "Error _at"
}
try {
return _a3._av((b - 17) >> 2)
} catch (a) {
throw "Error _av"
}
};
_a3._aw = function (d) {
var b = 4294967295;
var f = 0;
for (var c = 0; c < _a3._bv.length; c++) {
var a = _a3._bv[c];
if (a == d) {
return this._av(c + 7)
}
var e = _ax._gj(d, a);
if (e < b) {
f = c + 7;
b = e
}
}
if (b <= 3) {
return this._av(f)
}
return null
};
function _ay() {
return new Array(new _a3(1, new Array(), new _a2(7, new _a1(1, 19)), new _a2(10, new _a1(1, 16)), new _a2(13, new _a1(1, 13)), new _a2(17, new _a1(1, 9))), new _a3(2, new Array(6, 18), new _a2(10, new _a1(1, 34)), new _a2(16, new _a1(1, 28)), new _a2(22, new _a1(1, 22)), new _a2(28, new _a1(1, 16))), new _a3(3, new Array(6, 22), new _a2(15, new _a1(1, 55)), new _a2(26, new _a1(1, 44)), new _a2(18, new _a1(2, 17)), new _a2(22, new _a1(2, 13))), new _a3(4, new Array(6, 26), new _a2(20, new _a1(1, 80)), new _a2(18, new _a1(2, 32)), new _a2(26, new _a1(2, 24)), new _a2(16, new _a1(4, 9))), new _a3(5, new Array(6, 30), new _a2(26, new _a1(1, 108)), new _a2(24, new _a1(2, 43)), new _a2(18, new _a1(2, 15), new _a1(2, 16)), new _a2(22, new _a1(2, 11), new _a1(2, 12))), new _a3(6, new Array(6, 34), new _a2(18, new _a1(2, 68)), new _a2(16, new _a1(4, 27)), new _a2(24, new _a1(4, 19)), new _a2(28, new _a1(4, 15))), new _a3(7, new Array(6, 22, 38), new _a2(20, new _a1(2, 78)), new _a2(18, new _a1(4, 31)), new _a2(18, new _a1(2, 14), new _a1(4, 15)), new _a2(26, new _a1(4, 13), new _a1(1, 14))), new _a3(8, new Array(6, 24, 42), new _a2(24, new _a1(2, 97)), new _a2(22, new _a1(2, 38), new _a1(2, 39)), new _a2(22, new _a1(4, 18), new _a1(2, 19)), new _a2(26, new _a1(4, 14), new _a1(2, 15))), new _a3(9, new Array(6, 26, 46), new _a2(30, new _a1(2, 116)), new _a2(22, new _a1(3, 36), new _a1(2, 37)), new _a2(20, new _a1(4, 16), new _a1(4, 17)), new _a2(24, new _a1(4, 12), new _a1(4, 13))), new _a3(10, new Array(6, 28, 50), new _a2(18, new _a1(2, 68), new _a1(2, 69)), new _a2(26, new _a1(4, 43), new _a1(1, 44)), new _a2(24, new _a1(6, 19), new _a1(2, 20)), new _a2(28, new _a1(6, 15), new _a1(2, 16))), new _a3(11, new Array(6, 30, 54), new _a2(20, new _a1(4, 81)), new _a2(30, new _a1(1, 50), new _a1(4, 51)), new _a2(28, new _a1(4, 22), new _a1(4, 23)), new _a2(24, new _a1(3, 12), new _a1(8, 13))), new _a3(12, new Array(6, 32, 58), new _a2(24, new _a1(2, 92), new _a1(2, 93)), new _a2(22, new _a1(6, 36), new _a1(2, 37)), new _a2(26, new _a1(4, 20), new _a1(6, 21)), new _a2(28, new _a1(7, 14), new _a1(4, 15))), new _a3(13, new Array(6, 34, 62), new _a2(26, new _a1(4, 107)), new _a2(22, new _a1(8, 37), new _a1(1, 38)), new _a2(24, new _a1(8, 20), new _a1(4, 21)), new _a2(22, new _a1(12, 11), new _a1(4, 12))), new _a3(14, new Array(6, 26, 46, 66), new _a2(30, new _a1(3, 115), new _a1(1, 116)), new _a2(24, new _a1(4, 40), new _a1(5, 41)), new _a2(20, new _a1(11, 16), new _a1(5, 17)), new _a2(24, new _a1(11, 12), new _a1(5, 13))), new _a3(15, new Array(6, 26, 48, 70), new _a2(22, new _a1(5, 87), new _a1(1, 88)), new _a2(24, new _a1(5, 41), new _a1(5, 42)), new _a2(30, new _a1(5, 24), new _a1(7, 25)), new _a2(24, new _a1(11, 12), new _a1(7, 13))), new _a3(16, new Array(6, 26, 50, 74), new _a2(24, new _a1(5, 98), new _a1(1, 99)), new _a2(28, new _a1(7, 45), new _a1(3, 46)), new _a2(24, new _a1(15, 19), new _a1(2, 20)), new _a2(30, new _a1(3, 15), new _a1(13, 16))), new _a3(17, new Array(6, 30, 54, 78), new _a2(28, new _a1(1, 107), new _a1(5, 108)), new _a2(28, new _a1(10, 46), new _a1(1, 47)), new _a2(28, new _a1(1, 22), new _a1(15, 23)), new _a2(28, new _a1(2, 14), new _a1(17, 15))), new _a3(18, new Array(6, 30, 56, 82), new _a2(30, new _a1(5, 120), new _a1(1, 121)), new _a2(26, new _a1(9, 43), new _a1(4, 44)), new _a2(28, new _a1(17, 22), new _a1(1, 23)), new _a2(28, new _a1(2, 14), new _a1(19, 15))), new _a3(19, new Array(6, 30, 58, 86), new _a2(28, new _a1(3, 113), new _a1(4, 114)), new _a2(26, new _a1(3, 44), new _a1(11, 45)), new _a2(26, new _a1(17, 21), new _a1(4, 22)), new _a2(26, new _a1(9, 13), new _a1(16, 14))), new _a3(20, new Array(6, 34, 62, 90), new _a2(28, new _a1(3, 107), new _a1(5, 108)), new _a2(26, new _a1(3, 41), new _a1(13, 42)), new _a2(30, new _a1(15, 24), new _a1(5, 25)), new _a2(28, new _a1(15, 15), new _a1(10, 16))), new _a3(21, new Array(6, 28, 50, 72, 94), new _a2(28, new _a1(4, 116), new _a1(4, 117)), new _a2(26, new _a1(17, 42)), new _a2(28, new _a1(17, 22), new _a1(6, 23)), new _a2(30, new _a1(19, 16), new _a1(6, 17))), new _a3(22, new Array(6, 26, 50, 74, 98), new _a2(28, new _a1(2, 111), new _a1(7, 112)), new _a2(28, new _a1(17, 46)), new _a2(30, new _a1(7, 24), new _a1(16, 25)), new _a2(24, new _a1(34, 13))), new _a3(23, new Array(6, 30, 54, 74, 102), new _a2(30, new _a1(4, 121), new _a1(5, 122)), new _a2(28, new _a1(4, 47), new _a1(14, 48)), new _a2(30, new _a1(11, 24), new _a1(14, 25)), new _a2(30, new _a1(16, 15), new _a1(14, 16))), new _a3(24, new Array(6, 28, 54, 80, 106), new _a2(30, new _a1(6, 117), new _a1(4, 118)), new _a2(28, new _a1(6, 45), new _a1(14, 46)), new _a2(30, new _a1(11, 24), new _a1(16, 25)), new _a2(30, new _a1(30, 16), new _a1(2, 17))), new _a3(25, new Array(6, 32, 58, 84, 110), new _a2(26, new _a1(8, 106), new _a1(4, 107)), new _a2(28, new _a1(8, 47), new _a1(13, 48)), new _a2(30, new _a1(7, 24), new _a1(22, 25)), new _a2(30, new _a1(22, 15), new _a1(13, 16))), new _a3(26, new Array(6, 30, 58, 86, 114), new _a2(28, new _a1(10, 114), new _a1(2, 115)), new _a2(28, new _a1(19, 46), new _a1(4, 47)), new _a2(28, new _a1(28, 22), new _a1(6, 23)), new _a2(30, new _a1(33, 16), new _a1(4, 17))), new _a3(27, new Array(6, 34, 62, 90, 118), new _a2(30, new _a1(8, 122), new _a1(4, 123)), new _a2(28, new _a1(22, 45), new _a1(3, 46)), new _a2(30, new _a1(8, 23), new _a1(26, 24)), new _a2(30, new _a1(12, 15), new _a1(28, 16))), new _a3(28, new Array(6, 26, 50, 74, 98, 122), new _a2(30, new _a1(3, 117), new _a1(10, 118)), new _a2(28, new _a1(3, 45), new _a1(23, 46)), new _a2(30, new _a1(4, 24), new _a1(31, 25)), new _a2(30, new _a1(11, 15), new _a1(31, 16))), new _a3(29, new Array(6, 30, 54, 78, 102, 126), new _a2(30, new _a1(7, 116), new _a1(7, 117)), new _a2(28, new _a1(21, 45), new _a1(7, 46)), new _a2(30, new _a1(1, 23), new _a1(37, 24)), new _a2(30, new _a1(19, 15), new _a1(26, 16))), new _a3(30, new Array(6, 26, 52, 78, 104, 130), new _a2(30, new _a1(5, 115), new _a1(10, 116)), new _a2(28, new _a1(19, 47), new _a1(10, 48)), new _a2(30, new _a1(15, 24), new _a1(25, 25)), new _a2(30, new _a1(23, 15), new _a1(25, 16))), new _a3(31, new Array(6, 30, 56, 82, 108, 134), new _a2(30, new _a1(13, 115), new _a1(3, 116)), new _a2(28, new _a1(2, 46), new _a1(29, 47)), new _a2(30, new _a1(42, 24), new _a1(1, 25)), new _a2(30, new _a1(23, 15), new _a1(28, 16))), new _a3(32, new Array(6, 34, 60, 86, 112, 138), new _a2(30, new _a1(17, 115)), new _a2(28, new _a1(10, 46), new _a1(23, 47)), new _a2(30, new _a1(10, 24), new _a1(35, 25)), new _a2(30, new _a1(19, 15), new _a1(35, 16))), new _a3(33, new Array(6, 30, 58, 86, 114, 142), new _a2(30, new _a1(17, 115), new _a1(1, 116)), new _a2(28, new _a1(14, 46), new _a1(21, 47)), new _a2(30, new _a1(29, 24), new _a1(19, 25)), new _a2(30, new _a1(11, 15), new _a1(46, 16))), new _a3(34, new Array(6, 34, 62, 90, 118, 146), new _a2(30, new _a1(13, 115), new _a1(6, 116)), new _a2(28, new _a1(14, 46), new _a1(23, 47)), new _a2(30, new _a1(44, 24), new _a1(7, 25)), new _a2(30, new _a1(59, 16), new _a1(1, 17))), new _a3(35, new Array(6, 30, 54, 78, 102, 126, 150), new _a2(30, new _a1(12, 121), new _a1(7, 122)), new _a2(28, new _a1(12, 47), new _a1(26, 48)), new _a2(30, new _a1(39, 24), new _a1(14, 25)), new _a2(30, new _a1(22, 15), new _a1(41, 16))), new _a3(36, new Array(6, 24, 50, 76, 102, 128, 154), new _a2(30, new _a1(6, 121), new _a1(14, 122)), new _a2(28, new _a1(6, 47), new _a1(34, 48)), new _a2(30, new _a1(46, 24), new _a1(10, 25)), new _a2(30, new _a1(2, 15), new _a1(64, 16))), new _a3(37, new Array(6, 28, 54, 80, 106, 132, 158), new _a2(30, new _a1(17, 122), new _a1(4, 123)), new _a2(28, new _a1(29, 46), new _a1(14, 47)), new _a2(30, new _a1(49, 24), new _a1(10, 25)), new _a2(30, new _a1(24, 15), new _a1(46, 16))), new _a3(38, new Array(6, 32, 58, 84, 110, 136, 162), new _a2(30, new _a1(4, 122), new _a1(18, 123)), new _a2(28, new _a1(13, 46), new _a1(32, 47)), new _a2(30, new _a1(48, 24), new _a1(14, 25)), new _a2(30, new _a1(42, 15), new _a1(32, 16))), new _a3(39, new Array(6, 26, 54, 82, 110, 138, 166), new _a2(30, new _a1(20, 117), new _a1(4, 118)), new _a2(28, new _a1(40, 47), new _a1(7, 48)), new _a2(30, new _a1(43, 24), new _a1(22, 25)), new _a2(30, new _a1(10, 15), new _a1(67, 16))), new _a3(40, new Array(6, 30, 58, 86, 114, 142, 170), new _a2(30, new _a1(19, 118), new _a1(6, 119)), new _a2(28, new _a1(18, 47), new _a1(31, 48)), new _a2(30, new _a1(34, 24), new _a1(34, 25)), new _a2(30, new _a1(20, 15), new _a1(61, 16))))
}
function _ae(i, f, c, h, e, b, g, d, a) {
this.a11 = i;
this.a12 = h;
this.a13 = g;
this.a21 = f;
this.a22 = e;
this.a23 = d;
this.a31 = c;
this.a32 = b;
this.a33 = a;
this._ad = function (v) {
var s = v.length;
var z = this.a11;
var w = this.a12;
var u = this.a13;
var q = this.a21;
var p = this.a22;
var o = this.a23;
var m = this.a31;
var k = this.a32;
var j = this.a33;
for (var n = 0; n < s; n += 2) {
var t = v[n];
var r = v[n + 1];
var l = u * t + o * r + j;
v[n] = (z * t + q * r + m) / l;
v[n + 1] = (w * t + p * r + k) / l
}
};
this._fp = function (m, k) {
var q = m.length;
for (var l = 0; l < q; l++) {
var j = m[l];
var p = k[l];
var o = this.a13 * j + this.a23 * p + this.a33;
m[l] = (this.a11 * j + this.a21 * p + this.a31) / o;
k[l] = (this.a12 * j + this.a22 * p + this.a32) / o
}
};
this._fr = function () {
return new _ae(this.a22 * this.a33 - this.a23 * this.a32, this.a23 * this.a31 - this.a21 * this.a33, this.a21 * this.a32 - this.a22 * this.a31, this.a13 * this.a32 - this.a12 * this.a33, this.a11 * this.a33 - this.a13 * this.a31, this.a12 * this.a31 - this.a11 * this.a32, this.a12 * this.a23 - this.a13 * this.a22, this.a13 * this.a21 - this.a11 * this.a23, this.a11 * this.a22 - this.a12 * this.a21)
};
this.times = function (j) {
return new _ae(this.a11 * j.a11 + this.a21 * j.a12 + this.a31 * j.a13, this.a11 * j.a21 + this.a21 * j.a22 + this.a31 * j.a23, this.a11 * j.a31 + this.a21 * j.a32 + this.a31 * j.a33, this.a12 * j.a11 + this.a22 * j.a12 + this.a32 * j.a13, this.a12 * j.a21 + this.a22 * j.a22 + this.a32 * j.a23, this.a12 * j.a31 + this.a22 * j.a32 + this.a32 * j.a33, this.a13 * j.a11 + this.a23 * j.a12 + this.a33 * j.a13, this.a13 * j.a21 + this.a23 * j.a22 + this.a33 * j.a23, this.a13 * j.a31 + this.a23 * j.a32 + this.a33 * j.a33)
}
}
_ae._ag = function (p, e, o, d, n, c, m, b, h, q, l, f, a, j, i, r) {
var g = this._be(p, e, o, d, n, c, m, b);
var k = this._bf(h, q, l, f, a, j, i, r);
return k.times(g)
};
_ae._bf = function (d, p, c, m, b, k, a, j) {
var h = j - k;
var f = p - m + k - j;
if (h == 0 && f == 0) {
return new _ae(c - d, b - c, d, m - p, k - m, p, 0, 0, 1)
} else {
var q = c - b;
var o = a - b;
var l = d - c + b - a;
var i = m - k;
var e = q * h - o * i;
var n = (l * h - o * f) / e;
var g = (q * f - l * i) / e;
return new _ae(c - d + n * c, a - d + g * a, d, m - p + n * m, j - p + g * j, p, n, g, 1)
}
};
_ae._be = function (f, h, d, g, b, e, a, c) {
return this._bf(f, h, d, g, b, e, a, c)._fr()
};
function _bg(b, a) {
this.bits = b;
this.points = a
}
function Detector(a) {
this.image = a;
this._am = null;
this._bi = function (m, l, c, b) {
var d = Math.abs(b - l) > Math.abs(c - m);
if (d) {
var r = m;
m = l;
l = r;
r = c;
c = b;
b = r
}
var j = Math.abs(c - m);
var i = Math.abs(b - l);
var p = -j >> 1;
var u = l < b ? 1 : -1;
var f = m < c ? 1 : -1;
var e = 0;
for (var h = m, g = l; h != c; h += f) {
var t = d ? g : h;
var s = d ? h : g;
if (e == 1) {
if (this.image[t + s * qrcode.width]) {
e++
}
} else {
if (!this.image[t + s * qrcode.width]) {
e++
}
}
if (e == 3) {
var o = h - m;
var n = g - l;
return Math.sqrt((o * o + n * n))
}
p += i;
if (p > 0) {
if (g == b) {
break
}
g += u;
p -= j
}
}
var k = c - m;
var q = b - l;
return Math.sqrt((k * k + q * q))
};
this._bh = function (i, g, h, f) {
var b = this._bi(i, g, h, f);
var e = 1;
var d = i - (h - i);
if (d < 0) {
e = i / (i - d);
d = 0
} else {
if (d >= qrcode.width) {
e = (qrcode.width - 1 - i) / (d - i);
d = qrcode.width - 1
}
}
var c = Math.floor(g - (f - g) * e);
e = 1;
if (c < 0) {
e = g / (g - c);
c = 0
} else {
if (c >= qrcode.height) {
e = (qrcode.height - 1 - g) / (c - g);
c = qrcode.height - 1
}
}
d = Math.floor(i + (d - i) * e);
b += this._bi(i, g, d, c);
return b - 1
};
this._bj = function (c, d) {
var b = this._bh(Math.floor(c.X), Math.floor(c.Y), Math.floor(d.X), Math.floor(d.Y));
var e = this._bh(Math.floor(d.X), Math.floor(d.Y), Math.floor(c.X), Math.floor(c.Y));
if (isNaN(b)) {
return e / 7
}
if (isNaN(e)) {
return b / 7
}
return (b + e) / 14
};
this._bk = function (d, c, b) {
return (this._bj(d, c) + this._bj(d, b)) / 2
};
this.distance = function (d, b) {
var e = d.X - b.X;
var c = d.Y - b.Y;
return Math.sqrt((e * e + c * c))
};
this._bx = function (g, f, d, e) {
var b = Math.round(this.distance(g, f) / e);
var c = Math.round(this.distance(g, d) / e);
var h = ((b + c) >> 1) + 7;
switch (h & 3) {
case 0:
h++;
break;
case 2:
h--;
break;
case 3:
throw "Error"
}
return h
};
this._bl = function (g, f, d, j) {
var k = Math.floor(j * g);
var h = Math.max(0, f - k);
var i = Math.min(qrcode.width - 1, f + k);
if (i - h < g * 3) {
throw "Error"
}
var b = Math.max(0, d - k);
var c = Math.min(qrcode.height - 1, d + k);
var e = new _ak(this.image, h, b, i - h, c - b, g, this._am);
return e.find()
};
this.createTransform = function (l, h, k, b, g) {
var j = g - 3.5;
var i;
var f;
var e;
var c;
if (b != null) {
i = b.X;
f = b.Y;
e = c = j - 3
} else {
i = (h.X - l.X) + k.X;
f = (h.Y - l.Y) + k.Y;
e = c = j
}
var d = _ae._ag(3.5, 3.5, j, 3.5, e, c, 3.5, j, l.X, l.Y, h.X, h.Y, i, f, k.X, k.Y);
return d
};
this._bz = function (e, b, d) {
var c = _aa;
return c._af(e, d, b)
};
this._cd = function (q) {
var j = q._gq;
var h = q._gs;
var n = q._gp;
var d = this._bk(j, h, n);
if (d < 1) {
throw "Error"
}
var r = this._bx(j, h, n, d);
var b = _a3._at(r);
var k = b._cr - 7;
var l = null;
if (b._as.length > 0) {
var f = h.X - j.X + n.X;
var e = h.Y - j.Y + n.Y;
var c = 1 - 3 / k;
var t = Math.floor(j.X + c * (f - j.X));
var s = Math.floor(j.Y + c * (e - j.Y));
for (var p = 4; p <= 16; p <<= 1) {
l = this._bl(d, t, s, p);
break
}
}
var g = this.createTransform(j, h, n, l, r);
var m = this._bz(this.image, g, r);
var o;
if (l == null) {
o = new Array(n, j, h)
} else {
o = new Array(n, j, h, l)
}
return new _bg(m, o)
};
this.detect = function () {
var b = new _cc()._ce(this.image);
return this._cd(b)
}
}
var _ca = 21522;
var _cb = new Array(new Array(21522, 0), new Array(20773, 1), new Array(24188, 2), new Array(23371, 3), new Array(17913, 4), new Array(16590, 5), new Array(20375, 6), new Array(19104, 7), new Array(30660, 8), new Array(29427, 9), new Array(32170, 10), new Array(30877, 11), new Array(26159, 12), new Array(25368, 13), new Array(27713, 14), new Array(26998, 15), new Array(5769, 16), new Array(5054, 17), new Array(7399, 18), new Array(6608, 19), new Array(1890, 20), new Array(597, 21), new Array(3340, 22), new Array(2107, 23), new Array(13663, 24), new Array(12392, 25), new Array(16177, 26), new Array(14854, 27), new Array(9396, 28), new Array(8579, 29), new Array(11994, 30), new Array(11245, 31));
var _ch = new Array(0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4);
function _ax(a) {
this._cf = _cg.forBits((a >> 3) & 3);
this._fe = (a & 7);
this.__defineGetter__("_cg", function () {
return this._cf
});
this.__defineGetter__("_dx", function () {
return this._fe
});
this.GetHashCode = function () {
return (this._cf.ordinal() << 3) | _fe
};
this.Equals = function (c) {
var b = c;
return this._cf == b._cf && this._fe == b._fe
}
}
_ax._gj = function (d, c) {
d ^= c;
return _ch[d & 15] + _ch[(_ew(d, 4) & 15)] + _ch[(_ew(d, 8) & 15)] + _ch[(_ew(d, 12) & 15)] + _ch[(_ew(d, 16) & 15)] + _ch[(_ew(d, 20) & 15)] + _ch[(_ew(d, 24) & 15)] + _ch[(_ew(d, 28) & 15)]
};
_ax._ci = function (a) {
var b = _ax._cj(a);
if (b != null) {
return b
}
return _ax._cj(a ^ _ca)
};
_ax._cj = function (d) {
var b = 4294967295;
var a = 0;
for (var c = 0; c < _cb.length; c++) {
var g = _cb[c];
var f = g[0];
if (f == d) {
return new _ax(g[1])
}
var e = this._gj(d, f);
if (e < b) {
a = g[1];
b = e
}
}
if (b <= 3) {
return new _ax(a)
}
return null
};
function _cg(a, c, b) {
this._ff = a;
this.bits = c;
this.name = b;
this.__defineGetter__("Bits", function () {
return this.bits
});
this.__defineGetter__("Name", function () {
return this.name
});
this.ordinal = function () {
return this._ff
}
}
_cg.forBits = function (a) {
if (a < 0 || a >= FOR_BITS.length) {
throw "bad arguments"
}
return FOR_BITS[a]
};
var L = new _cg(0, 1, "L");
var M = new _cg(1, 0, "M");
var Q = new _cg(2, 3, "Q");
var H = new _cg(3, 2, "H");
var FOR_BITS = new Array(M, L, H, Q);
function _ac(d, a) {
if (!a) {
a = d
}
if (d < 1 || a < 1) {
throw "Both dimensions must be greater than 0"
}
this.width = d;
this.height = a;
var c = d >> 5;
if ((d & 31) != 0) {
c++
}
this.rowSize = c;
this.bits = new Array(c * a);
for (var b = 0; b < this.bits.length; b++) {
this.bits[b] = 0
}
this.__defineGetter__("Width", function () {
return this.width
});
this.__defineGetter__("Height", function () {
return this.height
});
this.__defineGetter__("Dimension", function () {
if (this.width != this.height) {
throw "Can't call getDimension() on a non-square matrix"
}
return this.width
});
this._ds = function (e, g) {
var f = g * this.rowSize + (e >> 5);
return ((_ew(this.bits[f], (e & 31))) & 1) != 0
};
this._dq = function (e, g) {
var f = g * this.rowSize + (e >> 5);
this.bits[f] |= 1 << (e & 31)
};
this.flip = function (e, g) {
var f = g * this.rowSize + (e >> 5);
this.bits[f] ^= 1 << (e & 31)
};
this.clear = function () {
var e = this.bits.length;
for (var f = 0; f < e; f++) {
this.bits[f] = 0
}
};
this._bq = function (g, j, f, m) {
if (j < 0 || g < 0) {
throw "Left and top must be nonnegative"
}
if (m < 1 || f < 1) {
throw "Height and width must be at least 1"
}
var l = g + f;
var e = j + m;
if (e > this.height || l > this.width) {
throw "The region must fit inside the matrix"
}
for (var i = j; i < e; i++) {
var h = i * this.rowSize;
for (var k = g; k < l; k++) {
this.bits[h + (k >> 5)] |= 1 << (k & 31)
}
}
}
}
function _dl(a, b) {
this._dv = a;
this._dw = b;
this.__defineGetter__("_du", function () {
return this._dv
});
this.__defineGetter__("Codewords", function () {
return this._dw
})
}
_dl._gn = function (c, h, r) {
if (c.length != h._dp) {
throw "bad arguments"
}
var k = h._bu(r);
var e = 0;
var d = k._fb();
for (var q = 0; q < d.length; q++) {
e += d[q].Count
}
var l = new Array(e);
var n = 0;
for (var o = 0; o < d.length; o++) {
var f = d[o];
for (var q = 0; q < f.Count; q++) {
var m = f._dm;
var s = k._bo + m;
l[n++] = new _dl(m, new Array(s))
}
}
var t = l[0]._dw.length;
var b = l.length - 1;
while (b >= 0) {
var v = l[b]._dw.length;
if (v == t) {
break
}
b--
}
b++;
var g = t - k._bo;
var a = 0;
for (var q = 0; q < g; q++) {
for (var o = 0; o < n; o++) {
l[o]._dw[q] = c[a++]
}
}
for (var o = b; o < n; o++) {
l[o]._dw[g] = c[a++]
}
var p = l[0]._dw.length;
for (var q = g; q < p; q++) {
for (var o = 0; o < n; o++) {
var u = o < b ? q : q + 1;
l[o]._dw[u] = c[a++]
}
}
return l
};
function _cl(a) {
var b = a.Dimension;
if (b < 21 || (b & 3) != 1) {
throw "Error _cl"
}
this._au = a;
this._cp = null;
this._co = null;
this._dk = function (d, c, e) {
return this._au._ds(d, c) ? (e << 1) | 1 : e << 1
};
this._cm = function () {
if (this._co != null) {
return this._co
}
var g = 0;
for (var e = 0; e < 6; e++) {
g = this._dk(e, 8, g)
}
g = this._dk(7, 8, g);
g = this._dk(8, 8, g);
g = this._dk(8, 7, g);
for (var c = 5; c >= 0; c--) {
g = this._dk(8, c, g)
}
this._co = _ax._ci(g);
if (this._co != null) {
return this._co
}
var f = this._au.Dimension;
g = 0;
var d = f - 8;
for (var e = f - 1; e >= d; e--) {
g = this._dk(e, 8, g)
}
for (var c = f - 7; c < f; c++) {
g = this._dk(8, c, g)
}
this._co = _ax._ci(g);
if (this._co != null) {
return this._co
}
throw "Error _cm"
};
this._cq = function () {
if (this._cp != null) {
return this._cp
}
var h = this._au.Dimension;
var f = (h - 17) >> 2;
if (f <= 6) {
return _a3._av(f)
}
var g = 0;
var e = h - 11;
for (var c = 5; c >= 0; c--) {
for (var d = h - 9; d >= e; d--) {
g = this._dk(d, c, g)
}
}
this._cp = _a3._aw(g);
if (this._cp != null && this._cp._cr == h) {
return this._cp
}
g = 0;
for (var d = 5; d >= 0; d--) {
for (var c = h - 9; c >= e; c--) {
g = this._dk(d, c, g)
}
}
this._cp = _a3._aw(g);
if (this._cp != null && this._cp._cr == h) {
return this._cp
}
throw "Error _cq"
};
this._gk = function () {
var q = this._cm();
var o = this._cq();
var c = _dx._gl(q._dx);
var f = this._au.Dimension;
c._dj(this._au, f);
var k = o._aq();
var n = true;
var r = new Array(o._dp);
var m = 0;
var p = 0;
var h = 0;
for (var e = f - 1; e > 0; e -= 2) {
if (e == 6) {
e--
}
for (var l = 0; l < f; l++) {
var g = n ? f - 1 - l : l;
for (var d = 0; d < 2; d++) {
if (!k._ds(e - d, g)) {
h++;
p <<= 1;
if (this._au._ds(e - d, g)) {
p |= 1
}
if (h == 8) {
r[m++] = p;
h = 0;
p = 0
}
}
}
}
n ^= true
}
if (m != o._dp) {
throw "Error _gk"
}
return r
}
}
var _dx = {};
_dx._gl = function (a) {
if (a < 0 || a > 7) {
throw "bad arguments"
}
return _dx._dy[a]
};
function _fg() {
this._dj = function (c, d) {
for (var b = 0; b < d; b++) {
for (var a = 0; a < d; a++) {
if (this._fw(b, a)) {
c.flip(a, b)
}
}
}
};
this._fw = function (b, a) {
return ((b + a) & 1) == 0
}
}
function _fh() {
this._dj = function (c, d) {
for (var b = 0; b < d; b++) {
for (var a = 0; a < d; a++) {
if (this._fw(b, a)) {
c.flip(a, b)
}
}
}
};
this._fw = function (b, a) {
return (b & 1) == 0
}
}
function _fi() {
this._dj = function (c, d) {
for (var b = 0; b < d; b++) {
for (var a = 0; a < d; a++) {
if (this._fw(b, a)) {
c.flip(a, b)
}
}
}
};
this._fw = function (b, a) {
return a % 3 == 0
}
}
function _fj() {
this._dj = function (c, d) {
for (var b = 0; b < d; b++) {
for (var a = 0; a < d; a++) {
if (this._fw(b, a)) {
c.flip(a, b)
}
}
}
};
this._fw = function (b, a) {
return (b + a) % 3 == 0
}
}
function _fk() {
this._dj = function (c, d) {
for (var b = 0; b < d; b++) {
for (var a = 0; a < d; a++) {
if (this._fw(b, a)) {
c.flip(a, b)
}
}
}
};
this._fw = function (b, a) {
return (((_ew(b, 1)) + (a / 3)) & 1) == 0
}
}
function _fl() {
this._dj = function (c, d) {
for (var b = 0; b < d; b++) {
for (var a = 0; a < d; a++) {
if (this._fw(b, a)) {
c.flip(a, b)
}
}
}
};
this._fw = function (c, b) {
var a = c * b;
return (a & 1) + (a % 3) == 0
}
}
function _fm() {
this._dj = function (c, d) {
for (var b = 0; b < d; b++) {
for (var a = 0; a < d; a++) {
if (this._fw(b, a)) {
c.flip(a, b)
}
}
}
};
this._fw = function (c, b) {
var a = c * b;
return (((a & 1) + (a % 3)) & 1) == 0
}
}
function _fn() {
this._dj = function (c, d) {
for (var b = 0; b < d; b++) {
for (var a = 0; a < d; a++) {
if (this._fw(b, a)) {
c.flip(a, b)
}
}
}
};
this._fw = function (b, a) {
return ((((b + a) & 1) + ((b * a) % 3)) & 1) == 0
}
}
_dx._dy = new Array(new _fg(), new _fh(), new _fi(), new _fj(), new _fk(), new _fl(), new _fm(), new _fn());
function _db(a) {
this._fa = a;
this.decode = function (j, f) {
var c = new _bp(this._fa, j);
var p = new Array(f);
for (var g = 0; g < p.length; g++) {
p[g] = 0
}
var m = false;
var d = true;
for (var g = 0; g < f; g++) {
var q = c.evaluateAt(this._fa.exp(m ? g + 1 : g));
p[p.length - 1 - g] = q;
if (q != 0) {
d = false
}
}
if (d) {
return
}
var b = new _bp(this._fa, p);
var l = this._eb(this._fa._ba(f, 1), b, f);
var o = l[0];
var n = l[1];
var k = this._ey(o);
var e = this._di(n, k, m);
for (var g = 0; g < k.length; g++) {
var h = j.length - 1 - this._fa.log(k[g]);
if (h < 0) {
throw "ReedSolomonException Bad error location"
}
j[h] = _az._bd(j[h], e[g])
}
};
this._eb = function (z, y, f) {
if (z._ec < y._ec) {
var w = z;
z = y;
y = w
}
var B = z;
var k = y;
var o = this._fa.One;
var j = this._fa.Zero;
var e = this._fa.Zero;
var i = this._fa.One;
while (k._ec >= Math.floor(f / 2)) {
var x = B;
var g = o;
var v = e;
B = k;
o = j;
e = i;
if (B.Zero) {
throw "r_{i-1} was zero"
}
k = x;
var m = this._fa.Zero;
var p = B._ex(B._ec);
var h = this._fa.inverse(p);
while (k._ec >= B._ec && !k.Zero) {
var c = k._ec - B._ec;
var A = this._fa.multiply(k._ex(k._ec), h);
m = m._bd(this._fa._ba(c, A));
k = k._bd(B._dc(c, A))
}
j = m.multiply1(o)._bd(g);
i = m.multiply1(e)._bd(v)
}
var u = i._ex(0);
if (u == 0) {
throw "ReedSolomonException sigmaTilde(0) was zero"
}
var d = this._fa.inverse(u);
var n = i.multiply2(d);
var l = k.multiply2(d);
return new Array(n, l)
};
this._ey = function (f) {
var g = f._ec;
if (g == 1) {
return new Array(f._ex(1))
}
var b = new Array(g);
var d = 0;
for (var c = 1; c < 256 && d < g; c++) {
if (f.evaluateAt(c) == 0) {
b[d] = this._fa.inverse(c);
d++
}
}
if (d != g) {
throw "Error locator degree does not match number of roots"
}
return b
};
this._di = function (f, h, g) {
var k = h.length;
var l = new Array(k);
for (var e = 0; e < k; e++) {
var b = this._fa.inverse(h[e]);
var c = 1;
for (var d = 0; d < k; d++) {
if (e != d) {
c = this._fa.multiply(c, _az._bd(1, this._fa.multiply(h[d], b)))
}
}
l[e] = this._fa.multiply(f.evaluateAt(b), this._fa.inverse(c));
if (g) {
l[e] = this._fa.multiply(l[e], b)
}
}
return l
}
}
function _bp(f, e) {
if (e == null || e.length == 0) {
throw "bad arguments"
}
this._fa = f;
var c = e.length;
if (c > 1 && e[0] == 0) {
var d = 1;
while (d < c && e[d] == 0) {
d++
}
if (d == c) {
this._dd = f.Zero._dd
} else {
this._dd = new Array(c - d);
for (var b = 0; b < this._dd.length; b++) {
this._dd[b] = 0
}
for (var a = 0; a < this._dd.length; a++) {
this._dd[a] = e[d + a]
}
}
} else {
this._dd = e
}
this.__defineGetter__("Zero", function () {
return this._dd[0] == 0
});
this.__defineGetter__("_ec", function () {
return this._dd.length - 1
});
this.__defineGetter__("Coefficients", function () {
return this._dd
});
this._ex = function (g) {
return this._dd[this._dd.length - 1 - g]
};
this.evaluateAt = function (h) {
if (h == 0) {
return this._ex(0)
}
var l = this._dd.length;
if (h == 1) {
var g = 0;
for (var k = 0; k < l; k++) {
g = _az._bd(g, this._dd[k])
}
return g
}
var j = this._dd[0];
for (var k = 1; k < l; k++) {
j = _az._bd(this._fa.multiply(h, j), this._dd[k])
}
return j
};
this._bd = function (g) {
if (this._fa != g._fa) {
throw "GF256Polys do not have same _az _fa"
}
if (this.Zero) {
return g
}
if (g.Zero) {
return this
}
var o = this._dd;
var n = g._dd;
if (o.length > n.length) {
var j = o;
o = n;
n = j
}
var h = new Array(n.length);
var k = n.length - o.length;
for (var m = 0; m < k; m++) {
h[m] = n[m]
}
for (var l = k; l < n.length; l++) {
h[l] = _az._bd(o[l - k], n[l])
}
return new _bp(f, h)
};
this.multiply1 = function (o) {
if (this._fa != o._fa) {
throw "GF256Polys do not have same _az _fa"
}
if (this.Zero || o.Zero) {
return this._fa.Zero
}
var q = this._dd;
var g = q.length;
var l = o._dd;
var n = l.length;
var p = new Array(g + n - 1);
for (var m = 0; m < g; m++) {
var h = q[m];
for (var k = 0; k < n; k++) {
p[m + k] = _az._bd(p[m + k], this._fa.multiply(h, l[k]))
}
}
return new _bp(this._fa, p)
};
this.multiply2 = function (g) {
if (g == 0) {
return this._fa.Zero
}
if (g == 1) {
return this
}
var j = this._dd.length;
var k = new Array(j);
for (var h = 0; h < j; h++) {
k[h] = this._fa.multiply(this._dd[h], g)
}
return new _bp(this._fa, k)
};
this._dc = function (l, g) {
if (l < 0) {
throw "bad arguments"
}
if (g == 0) {
return this._fa.Zero
}
var j = this._dd.length;
var k = new Array(j + l);
for (var h = 0; h < k.length; h++) {
k[h] = 0
}
for (var h = 0; h < j; h++) {
k[h] = this._fa.multiply(this._dd[h], g)
}
return new _bp(this._fa, k)
};
this.divide = function (l) {
if (this._fa != l._fa) {
throw "GF256Polys do not have same _az _fa"
}
if (l.Zero) {
throw "Divide by 0"
}
var j = this._fa.Zero;
var o = this;
var g = l._ex(l._ec);
var n = this._fa.inverse(g);
while (o._ec >= l._ec && !o.Zero) {
var m = o._ec - l._ec;
var h = this._fa.multiply(o._ex(o._ec), n);
var i = l._dc(m, h);
var k = this._fa._ba(m, h);
j = j._bd(k);
o = o._bd(i)
}
return new Array(j, o)
}
}
function _az(b) {
this._gh = new Array(256);
this._gi = new Array(256);
var a = 1;
for (var e = 0; e < 256; e++) {
this._gh[e] = a;
a <<= 1;
if (a >= 256) {
a ^= b
}
}
for (var e = 0; e < 255; e++) {
this._gi[this._gh[e]] = e
}
var d = new Array(1);
d[0] = 0;
this.zero = new _bp(this, new Array(d));
var c = new Array(1);
c[0] = 1;
this.one = new _bp(this, new Array(c));
this.__defineGetter__("Zero", function () {
return this.zero
});
this.__defineGetter__("One", function () {
return this.one
});
this._ba = function (j, f) {
if (j < 0) {
throw "bad arguments"
}
if (f == 0) {
return zero
}
var h = new Array(j + 1);
for (var g = 0; g < h.length; g++) {
h[g] = 0
}
h[0] = f;
return new _bp(this, h)
};
this.exp = function (f) {
return this._gh[f]
};
this.log = function (f) {
if (f == 0) {
throw "bad arguments"
}
return this._gi[f]
};
this.inverse = function (f) {
if (f == 0) {
throw "System.ArithmeticException"
}
return this._gh[255 - this._gi[f]]
};
this.multiply = function (g, f) {
if (g == 0 || f == 0) {
return 0
}
if (g == 1) {
return f
}
if (f == 1) {
return g
}
return this._gh[(this._gi[g] + this._gi[f]) % 255]
}
}
_az._bb = new _az(285);
_az._bc = new _az(301);
_az._bd = function (d, c) {
return d ^ c
};
var Decoder = {};
Decoder.rsDecoder = new _db(_az._bb);
Decoder.correctErrors = function (g, b) {
var d = g.length;
var f = new Array(d);
for (var e = 0; e < d; e++) {
f[e] = g[e] & 255
}
var a = g.length - b;
try {
Decoder.rsDecoder.decode(f, a)
} catch (c) {
throw c
}
for (var e = 0; e < b; e++) {
g[e] = f[e]
}
};
Decoder.decode = function (q) {
var b = new _cl(q);
var o = b._cq();
var c = b._cm()._cg;
var p = b._gk();
var a = _dl._gn(p, o, c);
var f = 0;
for (var k = 0; k < a.length; k++) {
f += a[k]._du
}
var e = new Array(f);
var n = 0;
for (var h = 0; h < a.length; h++) {
var m = a[h];
var d = m.Codewords;
var g = m._du;
Decoder.correctErrors(d, g);
for (var k = 0; k < g; k++) {
e[n++] = d[k]
}
}
var l = new QRCodeDataBlockReader(e, o._fd, c.Bits);
if (l == '') {
return '空值'
} else {
return l
}
};
var qrcode = {};
qrcode.points = null;
qrcode.imagedata = null;
qrcode.indata = null;
qrcode.width = 0;
qrcode.height = 0;
qrcode.qrCodeSymbol = null;
qrcode.debug = false;
qrcode.maxImgSize = 1024 * 1024;
qrcode._eo = [
[10, 9, 8, 8],
[12, 11, 16, 10],
[14, 13, 16, 12]
];
qrcode.callback = null;
qrcode.vidError = function (a) {
qrcode.gUM = false;
return
};
qrcode.decode = function (width, height, imgdata, fz) {
try {
qrcode.width = width;
qrcode.height = height;
qrcode.imagedata = imgdata;
var f = height;
var l = width;
if (width * height > qrcode.maxImgSize) {
var k = width / height;
f = Math.sqrt(qrcode.maxImgSize / k);
l = k * f;
qrcode.width = l;
qrcode.height = f;
}
qrcode.result = qrcode.processfrank(fz);
if (qrcode.callback != null) {
qrcode.callback(qrcode.result)
}
return qrcode.result
} catch (c) {
return ''
}
};
qrcode.getAvgGary = function (w, h, idata) {
qrcode.indata = idata;
qrcode.width = w;
qrcode.height = h;
var rst = 0;
var dot1 = 0;
var dot2 = 0;
var graytemp = 0;
for (var x = 0; x < w; x++) {
for (var y = 0; y < h - 2; y++) {
dot1 = qrcode.getPixelFromIndata(x, y)
dot2 = qrcode.getPixelFromIndata(x, y + 2)
graytemp += dot1
rst += Math.abs(dot1 - dot2)
}
}
var averagegray = graytemp / (w * (h - 2))
return averagegray;
}
//清晰度
qrcode.brenner = function (w, h, idata) {
try {
qrcode.indata = idata;
qrcode.width = w;
qrcode.height = h;
var rst = 0;
var dot1 = 0;
var dot2 = 0;
var graytemp = 0;
for (var x = 0; x < w; x++) {
for (var y = 0; y < h - 2; y++) {
dot1 = qrcode.getPixelFromIndata(x, y)
dot2 = qrcode.getPixelFromIndata(x, y + 2)
graytemp += dot1
rst += Math.abs(dot1 - dot2)
}
}
var averagegray = graytemp / (w * (h - 2))
var mingray = 0
var mincount = 0
var maxgray = 127
var maxcount = 127
for (var x = 0; x < w - 2; x++) {
for (var y = 0; y < h; y++) {
dot1 = qrcode.getPixelFromIndata(x, y)
dot2 = qrcode.getPixelFromIndata(x + 2, y)
rst += Math.abs(dot1 - dot2)
if (dot1 < averagegray) {
if (dot1 < mingray) {
mingray = dot1
}
mincount += 1
} else {
if (maxgray < dot1) {
maxgray = dot1
}
maxcount += 1
}
}
}
return rst / (h * w) + "|" + averagegray + "|" + mingray + "|" + maxgray + "|" + mincount / maxcount
} catch (c) {
return -1
}
};
qrcode.brenneryin = function (points, idata) {
try {
qrcode.indata = idata;
var minx = 0
var maxx = 0
var miny = 0
var maxy = 0
for (var i = 0; i < points.length; i++) {
if (minx == 0) {
minx = points[i].x
maxx = points[i].x
miny = points[i].y
maxy = points[i].y
}
if (points[i].x < minx) {
minx = points[i].x
}
if (points[i].x > maxx) {
maxx = points[i].x
}
if (points[i].y < miny) {
miny = points[i].y
}
if (points[i].y > maxy) {
maxy = points[i].y
}
}
var rst = 0;
var dot1 = 0;
var dot2 = 0;
var graytemp = 0;
for (var x = minx; x <= maxx; x++) {
for (var y = miny; y <= maxy - 2; y++) {
dot1 = qrcode.getPixelFromIndata(x, y)
dot2 = qrcode.getPixelFromIndata(x, y + 2)
graytemp += dot1
rst += Math.abs(dot1 - dot2)
}
}
var averagegray = graytemp / ((maxx - minx) * (maxy - miny - 2))
var mingray = 0
var mincount = 0
var maxgray = 127
var maxcount = 127
for (var x = minx; x < maxx - 2; x++) {
for (var y = miny; y < maxy; y++) {
dot1 = qrcode.getPixelFromIndata(x, y)
dot2 = qrcode.getPixelFromIndata(x + 2, y)
rst += Math.abs(dot1 - dot2)
if (dot1 < averagegray) {
if (dot1 < mingray) {
mingray = dot1
}
mincount += 1
} else {
if (maxgray < dot1) {
maxgray = dot1
}
maxcount += 1
}
}
}
return rst / ((maxx - minx) * (maxy - miny)) + "|" + averagegray + "|" + mingray + "|" + maxgray + "|" + mincount / maxcount
} catch (c) {
return -1
}
};
qrcode.decodefrank = function (w, h, idata) {
try {
var ag = qrcode.getAvgGary(w,h,idata);
var rst = null;
var brennerQuality = 0;
if (!ag) {
ag = 150;
}
if (ag >= 150) {
//140~170 by 2
for (var i = 0; i <= 15; i++) {
rst = this.decode(w, h, idata, 140 + i * 2);
if (brennerQuality == 0 && rst != '' && rst != null) {
brennerQuality = 140 + i * 1;
}
if (rst != null && rst != '') {
if (rst.indexOf("http://tj1.me") >= 0 || rst.indexOf("http://tj1.co") >= 0) {
break;
}
}
}
//110~140 by 2
for (var i = 0; i <= 15; i++) {
rst = this.decode(w, h, idata, 110 + i * 2);
if (brennerQuality == 0 && rst != '' && rst != null) {
brennerQuality = 110 + i * 1;
}
if (rst != null && rst != '') {
if (rst.indexOf("http://tj1.me") >= 0 || rst.indexOf("http://tj1.co") >= 0) {
break;
}
}
}
//85~110 by 5
for (var i = 0; i <= 5; i++) {
rst = this.decode(w, h, idata, 85 + i * 5);
if (brennerQuality == 0 && rst != '' && rst != null) {
brennerQuality = 85 + i * 5;
}
if (rst != null && rst != '') {
if (rst.indexOf("http://tj1.me") >= 0 || rst.indexOf("http://tj1.co") >= 0) {
break;
}
}
}
} else {
//100~130 by 2
for (var i = 0; i <= 15; i++) {
rst = this.decode(w, h, idata, 100 + i * 2);
if (brennerQuality == 0 && rst != '' && rst != null) {
brennerQuality = 100 + i * 1;
}
if (rst != null && rst != '') {
if (rst.indexOf("http://tj1.me") >= 0 || rst.indexOf("http://tj1.co") >= 0) {
break;
}
}
}
//70~100 by 2
if (rst == null || rst == '') {
for (var j = 1; j <= 15; j++) {
rst = this.decode(w, h, idata, 100 - j * 2);
if (brennerQuality == 0 && rst != '' && rst != null) {
brennerQuality = 100 - j * 1;
}
if (rst != null && rst != '') {
if (rst.indexOf("http://tj1.me") >= 0 || rst.indexOf("http://tj1.co") >= 0) {
break;
}
}
}
}
//130~170 by 4
if (rst == null || rst == '') {
for (var j = 1; j <= 10; j++) {
rst = this.decode(w, h, idata, 130 + j * 4);
if (brennerQuality == 0 && rst != '' && rst != null) {
brennerQuality = 130 + j * 4;
}
if (rst != null && rst != '') {
if (rst.indexOf("http://tj1.me") >= 0 || rst.indexOf("http://tj1.co") >= 0) {
break;
}
}
}
}
}
//有解码结果后返回
if (rst != null && rst != '') {
return rst + "|[{\"x\":" + qrcode.points[0].x + ",\"y\":" + qrcode.points[0].y + "},{\"x\":" + qrcode.points[1].x + ",\"y\":" + qrcode.points[1].y + "},{\"x\":" + qrcode.points[2].x + ",\"y\":" + qrcode.points[2].y + "},{\"x\":" + qrcode.points[3].x + ",\"y\":" + qrcode.points[3].y + "}]" + "|" + ag + "|" + brennerQuality;
} else {
return ''
}
} catch (c) {
return c
}
};
qrcode.isUrl = function (a) {
var b = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
return b.test(a)
};
qrcode.decode_url = function (b) {
var d = "";
try {
d = escape(b)
} catch (c) {
console.log(c);
d = b
}
var a = "";
try {
a = decodeURIComponent(d)
} catch (c) {
console.log(c);
a = d
}
return a
};
qrcode.decode_utf8 = function (a) {
if (qrcode.isUrl(a)) {
return qrcode.decode_url(a)
} else {
return a
}
};
qrcode.processfrank = function (fz) {
var c = qrcode.grayScaleToBitmap(qrcode.grayscalefrank(fz));
var h = new Detector(c);
var p = h.detect();
qrcode.points = p.points;
var k = Decoder.decode(p.bits);
var g = k.DataByte;
var l = "";
for (var f = 0; f < g.length; f++) {
for (var e = 0; e < g[f].length; e++) {
l += String.fromCharCode(g[f][e])
}
}
return qrcode.decode_utf8(l)
};
qrcode.getPixel = function (b, d) {
if (qrcode.width < b) {
throw "point error"
}
if (qrcode.height < d) {
throw "point error"
}
var a = (b * 4) + (d * qrcode.width * 4);
var c = (qrcode.imagedata[a] * 33 + qrcode.imagedata[a + 1] * 34 + qrcode.imagedata[a + 2] * 33) / 100;
return c
};
qrcode.getPixelFromIndata = function (b, d) {
if (qrcode.width < b) {
throw "point error"
}
if (qrcode.height < d) {
throw "point error"
}
var a = (b * 4) + (d * qrcode.width * 4);
var c = (qrcode.indata[a] * 33 + qrcode.indata[a + 1] * 34 + qrcode.indata[a + 2] * 33) / 100;
return c
};
qrcode.getPixelFrank = function (b, d, fz) {
if (qrcode.width < b || qrcode.height < d) {
return 255
}
var a = (b * 4) + (d * qrcode.width * 4);
var gray = (qrcode.imagedata[a] * 0.30 + qrcode.imagedata[a + 1] * 0.59 + qrcode.imagedata[a + 2] * 0.11);
if (gray > fz) {
return 255
} else {
return 0
}
};
qrcode.binarize = function (d) {
var c = new Array(qrcode.width * qrcode.height);
for (var e = 0; e < qrcode.height; e++) {
for (var b = 0; b < qrcode.width; b++) {
var a = qrcode.getPixel(b, e);
c[b + e * qrcode.width] = a <= d ? true : false
}
}
return c
};
qrcode._em = function (d) {
var c = 4;
var k = Math.floor(qrcode.width / c);
var j = Math.floor(qrcode.height / c);
var f = new Array(c);
for (var g = 0; g < c; g++) {
f[g] = new Array(c);
for (var e = 0; e < c; e++) {
f[g][e] = new Array(0, 0)
}
}
for (var o = 0; o < c; o++) {
for (var a = 0; a < c; a++) {
f[a][o][0] = 255;
for (var l = 0; l < j; l++) {
for (var n = 0; n < k; n++) {
var h = d[k * a + n + (j * o + l) * qrcode.width];
if (h < f[a][o][0]) {
f[a][o][0] = h
}
if (h > f[a][o][1]) {
f[a][o][1] = h
}
}
}
}
}
var m = new Array(c);
for (var b = 0; b < c; b++) {
m[b] = new Array(c)
}
for (var o = 0; o < c; o++) {
for (var a = 0; a < c; a++) {
m[a][o] = Math.floor((f[a][o][0] + f[a][o][1]) / 2)
}
}
return m
};
qrcode.grayScaleToBitmap = function (f) {
var k = qrcode._em(f);
var b = k.length;
var e = Math.floor(qrcode.width / b);
var d = Math.floor(qrcode.height / b);
var h = new ArrayBuffer(qrcode.width * qrcode.height);
var c = new Uint8Array(h);
for (var j = 0; j < b; j++) {
for (var a = 0; a < b; a++) {
for (var g = 0; g < d; g++) {
for (var i = 0; i < e; i++) {
c[e * a + i + (d * j + g) * qrcode.width] = (f[e * a + i + (d * j + g) * qrcode.width] < k[a][j]) ? true : false
}
}
}
}
return c
};
qrcode.grayscalefrank = function (fz) {
var e = new ArrayBuffer(qrcode.width * qrcode.height);
var c = new Uint8Array(e);
for (var d = 0; d < qrcode.height; d++) {
for (var b = 0; b < qrcode.width; b++) {
var a = qrcode.getPixelFrank(b, d, fz);
c[b + d * qrcode.width] = a
}
}
return c
};
//将中心点转化为灰度图
qrcode.grayscaleCenterPoint = function (width, height, fz, imgCenterPoint) {
var e = new ArrayBuffer(width * height);
var c = new Uint8Array(e);
for (var d = 0; d < height; d++) {
for (var b = 0; b < width; b++) {
var a = qrcode.getPixelCenterPoint(b, d, fz, width, height, imgCenterPoint);
c[b + d * width] = a;
}
}
return c
}
qrcode.getPixelCenterPoint = function (b, d, fz, width, height, imgCenterPoint) {
if (width < b || height < d) {
return 255
}
var a = (b * 4) + (d * width * 4);
var gray = imgCenterPoint[a] * 0.30 + imgCenterPoint[a + 1] * 0.59 + imgCenterPoint[a + 2] * 0.11;
return gray;
// if (gray > fz) {
// return 255
// } else {
// return 0
// }
}
//获取直方图
qrcode.histogram = function (w, h, indata) {
var hist = [];
for (var i = 0; i < 256; i++)
hist[i] = 0;
for (var y = 0; y < h; y++) {
for (var x = 0; x < w; x++) {
var idx = (y * w + x) * 4;
var val = Math.floor((indata[idx] / 255.0) * 255);
hist[val]++;
}
}
return hist;
}
function _ew(a, b) {
if (a >= 0) {
return a >> b
} else {
return (a >> b) + (2 << ~b)
}
}
var _gf = 3;
var _eh = 57;
var _el = 8;
var _eg = 2;
qrcode._er = function (c) {
function b(m, k) {
var n = m.X - k.X;
var l = m.Y - k.Y;
return Math.sqrt((n * n + l * l))
}
function d(k, o, n) {
var m = o.x;
var l = o.y;
return ((n.x - m) * (k.y - l)) - ((n.y - l) * (k.x - m))
}
var i = b(c[0], c[1]);
var f = b(c[1], c[2]);
var e = b(c[0], c[2]);
var a, j, h;
if (f >= i && f >= e) {
j = c[0];
a = c[1];
h = c[2]
} else {
if (e >= f && e >= i) {
j = c[1];
a = c[0];
h = c[2]
} else {
j = c[2];
a = c[0];
h = c[1]
}
}
if (d(a, j, h) < 0) {
var g = a;
a = h;
h = g
}
c[0] = a;
c[1] = j;
c[2] = h
};
function _cz(c, a, b) {
this.x = c;
this.y = a;
this.count = 1;
this._aj = b;
this.__defineGetter__("_ei", function () {
return this._aj
});
this.__defineGetter__("Count", function () {
return this.count
});
this.__defineGetter__("X", function () {
return this.x
});
this.__defineGetter__("Y", function () {
return this.y
});
this._ek = function () {
this.count++
};
this._ev = function (f, e, d) {
if (Math.abs(e - this.y) <= f && Math.abs(d - this.x) <= f) {
var g = Math.abs(f - this._aj);
return g <= 1 || g / this._aj <= 1
}
return false
}
}
function _es(a) {
this._go = a[0];
this._gu = a[1];
this._gr = a[2];
this.__defineGetter__("_gp", function () {
return this._go
});
this.__defineGetter__("_gq", function () {
return this._gu
});
this.__defineGetter__("_gs", function () {
return this._gr
})
}
function _cc() {
this.image = null;
this._cv = [];
this._ge = false;
this._al = new Array(0, 0, 0, 0, 0);
this._am = null;
this.__defineGetter__("_da", function () {
this._al[0] = 0;
this._al[1] = 0;
this._al[2] = 0;
this._al[3] = 0;
this._al[4] = 0;
return this._al
});
this._ao = function (f) {
var b = 0;
for (var d = 0; d < 5; d++) {
var e = f[d];
if (e == 0) {
return false
}
b += e
}
if (b < 7) {
return false
}
var c = Math.floor((b << _el) / 7);
var a = Math.floor(c / 2);
return Math.abs(c - (f[0] << _el)) < a && Math.abs(c - (f[1] << _el)) < a && Math.abs(3 * c - (f[2] << _el)) < 3 * a && Math.abs(c - (f[3] << _el)) < a && Math.abs(c - (f[4] << _el)) < a
};
this._an = function (b, a) {
return (a - b[4] - b[3]) - b[2] / 2
};
this._ap = function (a, j, d, g) {
var c = this.image;
var h = qrcode.height;
var b = this._da;
var f = a;
while (f >= 0 && c[j + f * qrcode.width]) {
b[2]++;
f--
}
if (f < 0) {
return NaN
}
while (f >= 0 && !c[j + f * qrcode.width] && b[1] <= d) {
b[1]++;
f--
}
if (f < 0 || b[1] > d) {
return NaN
}
while (f >= 0 && c[j + f * qrcode.width] && b[0] <= d) {
b[0]++;
f--
}
if (b[0] > d) {
return NaN
}
f = a + 1;
while (f < h && c[j + f * qrcode.width]) {
b[2]++;
f++
}
if (f == h) {
return NaN
}
while (f < h && !c[j + f * qrcode.width] && b[3] < d) {
b[3]++;
f++
}
if (f == h || b[3] >= d) {
return NaN
}
while (f < h && c[j + f * qrcode.width] && b[4] < d) {
b[4]++;
f++
}
if (b[4] >= d) {
return NaN
}
var e = b[0] + b[1] + b[2] + b[3] + b[4];
if (5 * Math.abs(e - g) >= 2 * g) {
return NaN
}
return this._ao(b) ? this._an(b, f) : NaN
};
this._ej = function (b, a, e, h) {
var d = this.image;
var i = qrcode.width;
var c = this._da;
var g = b;
while (g >= 0 && d[g + a * qrcode.width]) {
c[2]++;
g--
}
if (g < 0) {
return NaN
}
while (g >= 0 && !d[g + a * qrcode.width] && c[1] <= e) {
c[1]++;
g--
}
if (g < 0 || c[1] > e) {
return NaN
}
while (g >= 0 && d[g + a * qrcode.width] && c[0] <= e) {
c[0]++;
g--
}
if (c[0] > e) {
return NaN
}
g = b + 1;
while (g < i && d[g + a * qrcode.width]) {
c[2]++;
g++
}
if (g == i) {
return NaN
}
while (g < i && !d[g + a * qrcode.width] && c[3] < e) {
c[3]++;
g++
}
if (g == i || c[3] >= e) {
return NaN
}
while (g < i && d[g + a * qrcode.width] && c[4] < e) {
c[4]++;
g++
}
if (c[4] >= e) {
return NaN
}
var f = c[0] + c[1] + c[2] + c[3] + c[4];
if (5 * Math.abs(f - h) >= h) {
return NaN
}
return this._ao(c) ? this._an(c, g) : NaN
};
this._cu = function (c, f, e) {
var d = c[0] + c[1] + c[2] + c[3] + c[4];
var n = this._an(c, e);
var b = this._ap(f, Math.floor(n), c[2], d);
if (!isNaN(b)) {
n = this._ej(Math.floor(n), Math.floor(b), c[2], d);
if (!isNaN(n)) {
var l = d / 7;
var m = false;
var h = this._cv.length;
for (var g = 0; g < h; g++) {
var a = this._cv[g];
if (a._ev(l, b, n)) {
a._ek();
m = true;
break
}
}
if (!m) {
var k = new _cz(n, b, l);
this._cv.push(k);
if (this._am != null) {
this._am._ep(k)
}
}
return true
}
}
return false
};
this._ee = function () {
var h = this._cv.length;
if (h < 3) {
throw "Couldn't find enough finder patterns (found " + h + ")"
}
if (h > 3) {
var b = 0;
var j = 0;
for (var d = 0; d < h; d++) {
var g = this._cv[d]._ei;
b += g;
j += (g * g)
}
var a = b / h;
this._cv.sort(function (m, l) {
var k = Math.abs(l._ei - a);
var i = Math.abs(m._ei - a);
if (k < i) {
return (-1)
} else {
if (k == i) {
return 0
} else {
return 1
}
}
});
var e = Math.sqrt(j / h - a * a);
var c = Math.max(0.2 * a, e);
for (var d = this._cv.length - 1; d >= 0; d--) {
var f = this._cv[d];
if (Math.abs(f._ei - a) > c) {
this._cv.splice(d, 1)
}
}
}
if (this._cv.length > 3) {
this._cv.sort(function (k, i) {
if (k.count > i.count) {
return -1
}
if (k.count < i.count) {
return 1
}
return 0
})
}
return new Array(this._cv[0], this._cv[1], this._cv[2])
};
this._eq = function () {
var b = this._cv.length;
if (b <= 1) {
return 0
}
var c = null;
for (var d = 0; d < b; d++) {
var a = this._cv[d];
if (a.Count >= _eg) {
if (c == null) {
c = a
} else {
this._ge = true;
return Math.floor((Math.abs(c.X - a.X) - Math.abs(c.Y - a.Y)) / 2)
}
}
}
return 0
};
this._cx = function () {
var g = 0;
var c = 0;
var a = this._cv.length;
for (var d = 0; d < a; d++) {
var f = this._cv[d];
if (f.Count >= _eg) {
g++;
c += f._ei
}
}
if (g < 3) {
return false
}
var e = c / a;
var b = 0;
for (var d = 0; d < a; d++) {
f = this._cv[d];
b += Math.abs(f._ei - e)
}
return b <= 0.05 * c
};
this._ce = function (e) {
var o = false;
this.image = e;
var n = qrcode.height;
var k = qrcode.width;
var a = Math.floor((3 * n) / (4 * _eh));
if (a < _gf || o) {
a = _gf
}
var g = false;
var d = new Array(5);
for (var h = a - 1; h < n && !g; h += a) {
d[0] = 0;
d[1] = 0;
d[2] = 0;
d[3] = 0;
d[4] = 0;
var b = 0;
for (var f = 0; f < k; f++) {
if (e[f + h * qrcode.width]) {
if ((b & 1) == 1) {
b++
}
d[b]++
} else {
if ((b & 1) == 0) {
if (b == 4) {
if (this._ao(d)) {
var c = this._cu(d, h, f);
if (c) {
a = 2;
if (this._ge) {
g = this._cx()
} else {
var m = this._eq();
if (m > d[2]) {
h += m - d[2] - a;
f = k - 1
}
}
} else {
do {
f++
} while (f < k && !e[f + h * qrcode.width]);
f--
}
b = 0;
d[0] = 0;
d[1] = 0;
d[2] = 0;
d[3] = 0;
d[4] = 0
} else {
d[0] = d[2];
d[1] = d[3];
d[2] = d[4];
d[3] = 1;
d[4] = 0;
b = 3
}
} else {
d[++b]++
}
} else {
d[b]++
}
}
}
if (this._ao(d)) {
var c = this._cu(d, h, k);
if (c) {
a = d[0];
if (this._ge) {
g = _cx()
}
}
}
}
var l = this._ee();
qrcode._er(l);
return new _es(l)
}
}
function _ai(c, a, b) {
this.x = c;
this.y = a;
this.count = 1;
this._aj = b;
this.__defineGetter__("_ei", function () {
return this._aj
});
this.__defineGetter__("Count", function () {
return this.count
});
this.__defineGetter__("X", function () {
return Math.floor(this.x)
});
this.__defineGetter__("Y", function () {
return Math.floor(this.y)
});
this._ek = function () {
this.count++
};
this._ev = function (f, e, d) {
if (Math.abs(e - this.y) <= f && Math.abs(d - this.x) <= f) {
var g = Math.abs(f - this._aj);
return g <= 1 || g / this._aj <= 1
}
return false
}
}
function _ak(g, c, b, f, a, e, d) {
this.image = g;
this._cv = new Array();
this.startX = c;
this.startY = b;
this.width = f;
this.height = a;
this._ef = e;
this._al = new Array(0, 0, 0);
this._am = d;
this._an = function (i, h) {
return (h - i[2]) - i[1] / 2
};
this._ao = function (l) {
var k = this._ef;
var h = k / 2;
for (var j = 0; j < 3; j++) {
if (Math.abs(k - l[j]) >= h) {
return false
}
}
return true
};
this._ap = function (h, q, l, o) {
var k = this.image;
var p = qrcode.height;
var j = this._al;
j[0] = 0;
j[1] = 0;
j[2] = 0;
var n = h;
while (n >= 0 && k[q + n * qrcode.width] && j[1] <= l) {
j[1]++;
n--
}
if (n < 0 || j[1] > l) {
return NaN
}
while (n >= 0 && !k[q + n * qrcode.width] && j[0] <= l) {
j[0]++;
n--
}
if (j[0] > l) {
return NaN
}
n = h + 1;
while (n < p && k[q + n * qrcode.width] && j[1] <= l) {
j[1]++;
n++
}
if (n == p || j[1] > l) {
return NaN
}
while (n < p && !k[q + n * qrcode.width] && j[2] <= l) {
j[2]++;
n++
}
if (j[2] > l) {
return NaN
}
var m = j[0] + j[1] + j[2];
if (5 * Math.abs(m - o) >= 2 * o) {
return NaN
}
return this._ao(j) ? this._an(j, n) : NaN
};
this._cu = function (l, o, n) {
var m = l[0] + l[1] + l[2];
var t = this._an(l, n);
var k = this._ap(o, Math.floor(t), 2 * l[1], m);
if (!isNaN(k)) {
var s = (l[0] + l[1] + l[2]) / 3;
var q = this._cv.length;
for (var p = 0; p < q; p++) {
var h = this._cv[p];
if (h._ev(s, k, t)) {
return new _ai(t, k, s)
}
}
var r = new _ai(t, k, s);
this._cv.push(r);
if (this._am != null) {
this._am._ep(r)
}
}
return null
};
this.find = function () {
var p = this.startX;
var s = this.height;
var q = p + f;
var r = b + (s >> 1);
var m = new Array(0, 0, 0);
for (var k = 0; k < s; k++) {
var o = r + ((k & 1) == 0 ? ((k + 1) >> 1) : -((k + 1) >> 1));
m[0] = 0;
m[1] = 0;
m[2] = 0;
var n = p;
while (n < q && !g[n + qrcode.width * o]) {
n++
}
var h = 0;
while (n < q) {
if (g[n + o * qrcode.width]) {
if (h == 1) {
m[h]++
} else {
if (h == 2) {
if (this._ao(m)) {
var l = this._cu(m, o, n);
if (l != null) {
return l
}
}
m[0] = m[2];
m[1] = 1;
m[2] = 0;
h = 1
} else {
m[++h]++
}
}
} else {
if (h == 1) {
h++
}
m[h]++
}
n++
}
if (this._ao(m)) {
var l = this._cu(m, o, q);
if (l != null) {
return l
}
}
}
if (!(this._cv.length == 0)) {
return this._cv[0]
}
throw "Couldn't find enough alignment patterns"
}
}
function QRCodeDataBlockReader(c, a, b) {
this._ed = 0;
this._cw = 7;
this.dataLength = 0;
this.blocks = c;
this._en = b;
if (a <= 9) {
this.dataLengthMode = 0
} else {
if (a >= 10 && a <= 26) {
this.dataLengthMode = 1
} else {
if (a >= 27 && a <= 40) {
this.dataLengthMode = 2
}
}
}
this._gd = function (f) {
var k = 0;
if (f < this._cw + 1) {
var m = 0;
for (var e = 0; e < f; e++) {
m += (1 << e)
}
m <<= (this._cw - f + 1);
k = (this.blocks[this._ed] & m) >> (this._cw - f + 1);
this._cw -= f;
return k
} else {
if (f < this._cw + 1 + 8) {
var j = 0;
for (var e = 0; e < this._cw + 1; e++) {
j += (1 << e)
}
k = (this.blocks[this._ed] & j) << (f - (this._cw + 1));
this._ed++;
k += ((this.blocks[this._ed]) >> (8 - (f - (this._cw + 1))));
this._cw = this._cw - f % 8;
if (this._cw < 0) {
this._cw = 8 + this._cw
}
return k
} else {
if (f < this._cw + 1 + 16) {
var j = 0;
var h = 0;
for (var e = 0; e < this._cw + 1; e++) {
j += (1 << e)
}
var g = (this.blocks[this._ed] & j) << (f - (this._cw + 1));
this._ed++;
var d = this.blocks[this._ed] << (f - (this._cw + 1 + 8));
this._ed++;
for (var e = 0; e < f - (this._cw + 1 + 8); e++) {
h += (1 << e)
}
h <<= 8 - (f - (this._cw + 1 + 8));
var l = (this.blocks[this._ed] & h) >> (8 - (f - (this._cw + 1 + 8)));
k = g + d + l;
this._cw = this._cw - (f - 8) % 8;
if (this._cw < 0) {
this._cw = 8 + this._cw
}
return k
} else {
return 0
}
}
}
};
this.NextMode = function () {
if ((this._ed > this.blocks.length - this._en - 2)) {
return 0
} else {
return this._gd(4)
}
};
this.getDataLength = function (d) {
var e = 0;
while (true) {
if ((d >> e) == 1) {
break
}
e++
}
return this._gd(qrcode._eo[this.dataLengthMode][e])
};
this.getRomanAndFigureString = function (h) {
var f = h;
var g = 0;
var j = "";
var d = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", " ", "$", "%", "*", "+", "-", ".", "/", ":");
do {
if (f > 1) {
g = this._gd(11);
var i = Math.floor(g / 45);
var e = g % 45;
j += d[i];
j += d[e];
f -= 2
} else {
if (f == 1) {
g = this._gd(6);
j += d[g];
f -= 1
}
}
} while (f > 0);
return j
};
this.getFigureString = function (f) {
var d = f;
var e = 0;
var g = "";
do {
if (d >= 3) {
e = this._gd(10);
if (e < 100) {
g += "0"
}
if (e < 10) {
g += "0"
}
d -= 3
} else {
if (d == 2) {
e = this._gd(7);
if (e < 10) {
g += "0"
}
d -= 2
} else {
if (d == 1) {
e = this._gd(4);
d -= 1
}
}
}
g += e
} while (d > 0);
return g
};
this.get8bitByteArray = function (g) {
var e = g;
var f = 0;
var d = new Array();
do {
f = this._gd(8);
d.push(f);
e--
} while (e > 0);
return d
};
this.getKanjiString = function (j) {
var g = j;
var i = 0;
var h = "";
do {
i = _gd(13);
var e = i % 192;
var f = i / 192;
var k = (f << 8) + e;
var d = 0;
if (k + 33088 <= 40956) {
d = k + 33088
} else {
d = k + 49472
}
h += String.fromCharCode(d);
g--
} while (g > 0);
return h
};
this.__defineGetter__("DataByte", function () {
var h = new Array();
var e = 1;
var f = 2;
var d = 4;
var o = 8;
do {
var l = this.NextMode();
if (l == 0) {
if (h.length > 0) {
break
} else {
throw "Empty data block"
}
}
if (l != e && l != f && l != d && l != o) {
throw "Invalid mode: " + l + " in (block:" + this._ed + " bit:" + this._cw + ")"
}
var g = this.getDataLength(l);
if (g < 1) {
throw "Invalid data length: " + g
}
switch (l) {
case e:
var m = this.getFigureString(g);
var k = new Array(m.length);
for (var i = 0; i < m.length; i++) {
k[i] = m.charCodeAt(i)
}
h.push(k);
break;
case f:
var m = this.getRomanAndFigureString(g);
var k = new Array(m.length);
for (var i = 0; i < m.length; i++) {
k[i] = m.charCodeAt(i)
}
h.push(k);
break;
case d:
var n = this.get8bitByteArray(g);
h.push(n);
break;
case o:
var m = this.getKanjiString(g);
h.push(m);
break
}
} while (true);
return h
})
};
module.exports = qrcode;
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论