中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

使用jquery.qrcode.min.js實(shí)現(xiàn)中文轉(zhuǎn)化二維碼
來源:易賢網(wǎng) 閱讀:1351 次 日期:2016-07-20 16:42:01
溫馨提示:易賢網(wǎng)小編為您整理了“使用jquery.qrcode.min.js實(shí)現(xiàn)中文轉(zhuǎn)化二維碼”,方便廣大網(wǎng)友查閱!

今天還是要講一下關(guān)于二維碼的知識,前幾篇講解中有講到我使用的可以生成二維碼的js是qrcode.js,然后結(jié)合Cordovad的插件$cordovaBarcodeScanner插件可以掃描二維碼,這樣就基本完成了簡單的掃一掃功能。后來在項目進(jìn)行,開始要調(diào)用后臺數(shù)據(jù)和傳參數(shù)到接口的時候發(fā)現(xiàn)qrcode.js它只能解析英文或者數(shù)字,并且只能解析一個字符串!

而我所需要的是將一個對象轉(zhuǎn)化成二維碼,然后在掃描的時候取出對象中的數(shù)據(jù),顯然qrcode.js不能實(shí)現(xiàn),經(jīng)過查找,找到另一個jquery.qrcode.min.js(支持中文轉(zhuǎn)化二維碼).

下面讓我來介紹一下具體的步驟和代碼實(shí)現(xiàn)吧!

一、這是我找到的jquery.qrcode.min.js(支持中文轉(zhuǎn)化二維碼)代碼,需要引入到你的項目里去:

/**

 * Created by ncloud on 16/3/8.

 */

//jquery.qrcode.min.js

(function (r) {

 r.fn.qrcode = function (h) {

  var s; function u(a) { this.mode = s; this.data = a } function o(a, c) { this.typeNumber = a; this.errorCorrectLevel = c; this.modules = null; this.moduleCount = 0; this.dataCache = null; this.dataList = [] } function q(a, c) { if (void 0 == a.length) throw Error(a.length + "/" + c); for (var d = 0; d < a.length && 0 == a[d]; ) d++; this.num = Array(a.length - d + c); for (var b = 0; b < a.length - d; b++) this.num[b] = a[b + d] } function p(a, c) { this.totalCount = a; this.dataCount = c } function t() { this.buffer = []; this.length = 0 } u.prototype = { getLength: function () { return this.data.length },

   write: function (a) { for (var c = 0; c < this.data.length; c++) a.put(this.data.charCodeAt(c), 8) }

  }; o.prototype = { addData: function (a) { this.dataList.push(new u(a)); this.dataCache = null }, isDark: function (a, c) { if (0 > a || this.moduleCount <= a || 0 > c || this.moduleCount <= c) throw Error(a + "," + c); return this.modules[a][c] }, getModuleCount: function () { return this.moduleCount }, make: function () {

   if (1 > this.typeNumber) {

    for (var a = 1, a = 1; 40 > a; a++) {

     for (var c = p.getRSBlocks(a, this.errorCorrectLevel), d = new t, b = 0, e = 0; e < c.length; e++) b += c[e].dataCount;

     for (e = 0; e < this.dataList.length; e++) c = this.dataList[e], d.put(c.mode, 4), d.put(c.getLength(), j.getLengthInBits(c.mode, a)), c.write(d); if (d.getLengthInBits() <= 8 * b) break

    } this.typeNumber = a

   } this.makeImpl(!1, this.getBestMaskPattern())

  }, makeImpl: function (a, c) {

   this.moduleCount = 4 * this.typeNumber + 17; this.modules = Array(this.moduleCount); for (var d = 0; d < this.moduleCount; d++) { this.modules[d] = Array(this.moduleCount); for (var b = 0; b < this.moduleCount; b++) this.modules[d][b] = null } this.setupPositionProbePattern(0, 0); this.setupPositionProbePattern(this.moduleCount -

    7, 0); this.setupPositionProbePattern(0, this.moduleCount - 7); this.setupPositionAdjustPattern(); this.setupTimingPattern(); this.setupTypeInfo(a, c); 7 <= this.typeNumber && this.setupTypeNumber(a); null == this.dataCache && (this.dataCache = o.createData(this.typeNumber, this.errorCorrectLevel, this.dataList)); this.mapData(this.dataCache, c)

  }, setupPositionProbePattern: function (a, c) {

   for (var d = -1; 7 >= d; d++) if (!(-1 >= a + d || this.moduleCount <= a + d)) for (var b = -1; 7 >= b; b++)-1 >= c + b || this.moduleCount <= c + b || (this.modules[a + d][c + b] =

    0 <= d && 6 >= d && (0 == b || 6 == b) || 0 <= b && 6 >= b && (0 == d || 6 == d) || 2 <= d && 4 >= d && 2 <= b && 4 >= b ? !0 : !1)

  }, getBestMaskPattern: function () { for (var a = 0, c = 0, d = 0; 8 > d; d++) { this.makeImpl(!0, d); var b = j.getLostPoint(this); if (0 == d || a > b) a = b, c = d } return c }, createMovieClip: function (a, c, d) { a = a.createEmptyMovieClip(c, d); this.make(); for (c = 0; c < this.modules.length; c++) for (var d = 1 * c, b = 0; b < this.modules[c].length; b++) { var e = 1 * b; this.modules[c][b] && (a.beginFill(0, 100), a.moveTo(e, d), a.lineTo(e + 1, d), a.lineTo(e + 1, d + 1), a.lineTo(e, d + 1), a.endFill()) } return a },

   setupTimingPattern: function () { for (var a = 8; a < this.moduleCount - 8; a++) null == this.modules[a][6] && (this.modules[a][6] = 0 == a % 2); for (a = 8; a < this.moduleCount - 8; a++) null == this.modules[6][a] && (this.modules[6][a] = 0 == a % 2) }, setupPositionAdjustPattern: function () { for (var a = j.getPatternPosition(this.typeNumber), c = 0; c < a.length; c++) for (var d = 0; d < a.length; d++) { var b = a[c], e = a[d]; if (null == this.modules[b][e]) for (var f = -2; 2 >= f; f++) for (var i = -2; 2 >= i; i++) this.modules[b + f][e + i] = -2 == f || 2 == f || -2 == i || 2 == i || 0 == f && 0 == i ? !0 : !1 } }, setupTypeNumber: function (a) {

    for (var c =

     j.getBCHTypeNumber(this.typeNumber), d = 0; 18 > d; d++) { var b = !a && 1 == (c >> d & 1); this.modules[Math.floor(d / 3)][d % 3 + this.moduleCount - 8 - 3] = b } for (d = 0; 18 > d; d++) b = !a && 1 == (c >> d & 1), this.modules[d % 3 + this.moduleCount - 8 - 3][Math.floor(d / 3)] = b

   }, setupTypeInfo: function (a, c) {

    for (var d = j.getBCHTypeInfo(this.errorCorrectLevel << 3 | c), b = 0; 15 > b; b++) { var e = !a && 1 == (d >> b & 1); 6 > b ? this.modules[b][8] = e : 8 > b ? this.modules[b + 1][8] = e : this.modules[this.moduleCount - 15 + b][8] = e } for (b = 0; 15 > b; b++) e = !a && 1 == (d >> b & 1), 8 > b ? this.modules[8][this.moduleCount -

    b - 1] = e : 9 > b ? this.modules[8][15 - b - 1 + 1] = e : this.modules[8][15 - b - 1] = e; this.modules[this.moduleCount - 8][8] = !a

   }, mapData: function (a, c) { for (var d = -1, b = this.moduleCount - 1, e = 7, f = 0, i = this.moduleCount - 1; 0 < i; i -= 2) for (6 == i && i--; ; ) { for (var g = 0; 2 > g; g++) if (null == this.modules[b][i - g]) { var n = !1; f < a.length && (n = 1 == (a[f] >>> e & 1)); j.getMask(c, b, i - g) && (n = !n); this.modules[b][i - g] = n; e--; -1 == e && (f++, e = 7) } b += d; if (0 > b || this.moduleCount <= b) { b -= d; d = -d; break } } }

  }; o.PAD0 = 236; o.PAD1 = 17; o.createData = function (a, c, d) {

   for (var c = p.getRSBlocks(a,

    c), b = new t, e = 0; e < d.length; e++) { var f = d[e]; b.put(f.mode, 4); b.put(f.getLength(), j.getLengthInBits(f.mode, a)); f.write(b) } for (e = a = 0; e < c.length; e++) a += c[e].dataCount; if (b.getLengthInBits() > 8 * a) throw Error("code length overflow. (" + b.getLengthInBits() + ">" + 8 * a + ")"); for (b.getLengthInBits() + 4 <= 8 * a && b.put(0, 4); 0 != b.getLengthInBits() % 8; ) b.putBit(!1); for (; !(b.getLengthInBits() >= 8 * a); ) { b.put(o.PAD0, 8); if (b.getLengthInBits() >= 8 * a) break; b.put(o.PAD1, 8) } return o.createBytes(b, c)

  }; o.createBytes = function (a, c) {

   for (var d =

    0, b = 0, e = 0, f = Array(c.length), i = Array(c.length), g = 0; g < c.length; g++) { var n = c[g].dataCount, h = c[g].totalCount - n, b = Math.max(b, n), e = Math.max(e, h); f[g] = Array(n); for (var k = 0; k < f[g].length; k++) f[g][k] = 255 & a.buffer[k + d]; d += n; k = j.getErrorCorrectPolynomial(h); n = (new q(f[g], k.getLength() - 1)).mod(k); i[g] = Array(k.getLength() - 1); for (k = 0; k < i[g].length; k++) h = k + n.getLength() - i[g].length, i[g][k] = 0 <= h ? n.get(h) : 0 } for (k = g = 0; k < c.length; k++) g += c[k].totalCount; d = Array(g); for (k = n = 0; k < b; k++) for (g = 0; g < c.length; g++) k < f[g].length &&

   (d[n++] = f[g][k]); for (k = 0; k < e; k++) for (g = 0; g < c.length; g++) k < i[g].length && (d[n++] = i[g][k]); return d

  }; s = 4; for (var j = { PATTERN_POSITION_TABLE: [[], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34], [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54], [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74], [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90], [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102], [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114], [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126], [6, 26, 52,

   78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138], [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150], [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162], [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170]], G15: 1335, G18: 7973, G15_MASK: 21522, getBCHTypeInfo: function (a) { for (var c = a << 10; 0 <= j.getBCHDigit(c) - j.getBCHDigit(j.G15); ) c ^= j.G15 << j.getBCHDigit(c) - j.getBCHDigit(j.G15); return (a << 10 | c) ^ j.G15_MASK }, getBCHTypeNumber: function (a) {

   for (var c = a << 12; 0 <= j.getBCHDigit(c) -

   j.getBCHDigit(j.G18); ) c ^= j.G18 << j.getBCHDigit(c) - j.getBCHDigit(j.G18); return a << 12 | c

  }, getBCHDigit: function (a) { for (var c = 0; 0 != a; ) c++, a >>>= 1; return c }, getPatternPosition: function (a) { return j.PATTERN_POSITION_TABLE[a - 1] }, getMask: function (a, c, d) {

   switch (a) {

    case 0: return 0 == (c + d) % 2; case 1: return 0 == c % 2; case 2: return 0 == d % 3; case 3: return 0 == (c + d) % 3; case 4: return 0 == (Math.floor(c / 2) + Math.floor(d / 3)) % 2; case 5: return 0 == c * d % 2 + c * d % 3; case 6: return 0 == (c * d % 2 + c * d % 3) % 2; case 7: return 0 == (c * d % 3 + (c + d) % 2) % 2; default: throw Error("bad maskPattern:" +

    a);

   }

  }, getErrorCorrectPolynomial: function (a) { for (var c = new q([1], 0), d = 0; d < a; d++) c = c.multiply(new q([1, l.gexp(d)], 0)); return c }, getLengthInBits: function (a, c) {

   if (1 <= c && 10 > c) switch (a) { case 1: return 10; case 2: return 9; case s: return 8; case 8: return 8; default: throw Error("mode:" + a); } else if (27 > c) switch (a) { case 1: return 12; case 2: return 11; case s: return 16; case 8: return 10; default: throw Error("mode:" + a); } else if (41 > c) switch (a) {

    case 1: return 14; case 2: return 13; case s: return 16; case 8: return 12; default: throw Error("mode:" +

     a);

   } else throw Error("type:" + c);

  }, getLostPoint: function (a) {

   for (var c = a.getModuleCount(), d = 0, b = 0; b < c; b++) for (var e = 0; e < c; e++) { for (var f = 0, i = a.isDark(b, e), g = -1; 1 >= g; g++) if (!(0 > b + g || c <= b + g)) for (var h = -1; 1 >= h; h++) 0 > e + h || c <= e + h || 0 == g && 0 == h || i == a.isDark(b + g, e + h) && f++; 5 < f && (d += 3 + f - 5) } for (b = 0; b < c - 1; b++) for (e = 0; e < c - 1; e++) if (f = 0, a.isDark(b, e) && f++, a.isDark(b + 1, e) && f++, a.isDark(b, e + 1) && f++, a.isDark(b + 1, e + 1) && f++, 0 == f || 4 == f) d += 3; for (b = 0; b < c; b++) for (e = 0; e < c - 6; e++) a.isDark(b, e) && !a.isDark(b, e + 1) && a.isDark(b, e +

    2) && a.isDark(b, e + 3) && a.isDark(b, e + 4) && !a.isDark(b, e + 5) && a.isDark(b, e + 6) && (d += 40); for (e = 0; e < c; e++) for (b = 0; b < c - 6; b++) a.isDark(b, e) && !a.isDark(b + 1, e) && a.isDark(b + 2, e) && a.isDark(b + 3, e) && a.isDark(b + 4, e) && !a.isDark(b + 5, e) && a.isDark(b + 6, e) && (d += 40); for (e = f = 0; e < c; e++) for (b = 0; b < c; b++) a.isDark(b, e) && f++; a = Math.abs(100 * f / c / c - 50) / 5; return d + 10 * a

  }

  }, l = { glog: function (a) { if (1 > a) throw Error("glog(" + a + ")"); return l.LOG_TABLE[a] }, gexp: function (a) { for (; 0 > a; ) a += 255; for (; 256 <= a; ) a -= 255; return l.EXP_TABLE[a] }, EXP_TABLE: Array(256),

   LOG_TABLE: Array(256)

  }, m = 0; 8 > m; m++) l.EXP_TABLE[m] = 1 << m; for (m = 8; 256 > m; m++) l.EXP_TABLE[m] = l.EXP_TABLE[m - 4] ^ l.EXP_TABLE[m - 5] ^ l.EXP_TABLE[m - 6] ^ l.EXP_TABLE[m - 8]; for (m = 0; 255 > m; m++) l.LOG_TABLE[l.EXP_TABLE[m]] = m; q.prototype = { get: function (a) { return this.num[a] }, getLength: function () { return this.num.length }, multiply: function (a) { for (var c = Array(this.getLength() + a.getLength() - 1), d = 0; d < this.getLength(); d++) for (var b = 0; b < a.getLength(); b++) c[d + b] ^= l.gexp(l.glog(this.get(d)) + l.glog(a.get(b))); return new q(c, 0) }, mod: function (a) {

   if (0 >

    this.getLength() - a.getLength()) return this; for (var c = l.glog(this.get(0)) - l.glog(a.get(0)), d = Array(this.getLength()), b = 0; b < this.getLength(); b++) d[b] = this.get(b); for (b = 0; b < a.getLength(); b++) d[b] ^= l.gexp(l.glog(a.get(b)) + c); return (new q(d, 0)).mod(a)

  }

  }; p.RS_BLOCK_TABLE = [[1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9], [1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16], [1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13], [1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9], [1, 134, 108], [2, 67, 43], [2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12], [2, 86, 68], [4, 43, 27],

   [4, 43, 19], [4, 43, 15], [2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1, 40, 14], [2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2, 41, 15], [2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4, 37, 13], [2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6, 43, 15, 2, 44, 16], [4, 101, 81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3, 36, 12, 8, 37, 13], [2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47, 21], [7, 42, 14, 4, 43, 15], [4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45, 21], [12, 33, 11, 4, 34, 12], [3, 145, 115, 1, 146,

    116], [4, 64, 40, 5, 65, 41], [11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13], [5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12], [5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16], [1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15], [5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15], [3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14], [3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15,

    43, 15, 10, 44, 16], [4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46, 16, 6, 47, 17], [2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37, 13], [4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45, 15, 14, 46, 16], [6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25], [30, 46, 16, 2, 47, 17], [8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24, 22, 55, 25], [22, 45, 15, 13, 46, 16], [10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17], [8, 152, 122, 4, 153, 123], [22, 73, 45,

    3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16], [3, 147, 117, 10, 148, 118], [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16], [7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16], [5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16], [13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16], [17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16], [17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19,

    55, 25], [11, 45, 15, 46, 46, 16], [13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44, 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17], [12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76, 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16], [6, 151, 121, 14, 152, 122], [6, 75, 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16], [17, 152, 122, 4, 153, 123], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16], [4, 152, 122, 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16], [20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10,

    45, 15, 67, 46, 16], [19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25], [20, 45, 15, 61, 46, 16]]; p.getRSBlocks = function (a, c) { var d = p.getRsBlockTable(a, c); if (void 0 == d) throw Error("bad rs block @ typeNumber:" + a + "/errorCorrectLevel:" + c); for (var b = d.length / 3, e = [], f = 0; f < b; f++) for (var h = d[3 * f + 0], g = d[3 * f + 1], j = d[3 * f + 2], l = 0; l < h; l++) e.push(new p(g, j)); return e }; p.getRsBlockTable = function (a, c) {

   switch (c) {

    case 1: return p.RS_BLOCK_TABLE[4 * (a - 1) + 0]; case 0: return p.RS_BLOCK_TABLE[4 * (a - 1) + 1]; case 3: return p.RS_BLOCK_TABLE[4 *

   (a - 1) + 2]; case 2: return p.RS_BLOCK_TABLE[4 * (a - 1) + 3]

   }

  }; t.prototype = { get: function (a) { return 1 == (this.buffer[Math.floor(a / 8)] >>> 7 - a % 8 & 1) }, put: function (a, c) { for (var d = 0; d < c; d++) this.putBit(1 == (a >>> c - d - 1 & 1)) }, getLengthInBits: function () { return this.length }, putBit: function (a) { var c = Math.floor(this.length / 8); this.buffer.length <= c && this.buffer.push(0); a && (this.buffer[c] |= 128 >>> this.length % 8); this.length++ } }; "string" === typeof h && (h = { text: h }); h = r.extend({}, { render: "canvas", width: 256, height: 256, typeNumber: -1,

   correctLevel: 2, background: "#ffffff", foreground: "#000000"

  }, h); return this.each(function () {

   var a; if ("canvas" == h.render) {

    a = new o(h.typeNumber, h.correctLevel); a.addData(h.text); a.make(); var c = document.createElement("canvas"); c.width = h.width; c.height = h.height; for (var d = c.getContext("2d"), b = h.width / a.getModuleCount(), e = h.height / a.getModuleCount(), f = 0; f < a.getModuleCount(); f++) for (var i = 0; i < a.getModuleCount(); i++) {

     d.fillStyle = a.isDark(f, i) ? h.foreground : h.background; var g = Math.ceil((i + 1) * b) - Math.floor(i * b),

      j = Math.ceil((f + 1) * b) - Math.floor(f * b); d.fillRect(Math.round(i * b), Math.round(f * e), g, j)

    }

   } else {

    a = new o(h.typeNumber, h.correctLevel); a.addData(h.text); a.make(); c = r("<table></table>").css("width", h.width + "px").css("height", h.height + "px").css("border", "0px").css("border-collapse", "collapse").css("background-color", h.background); d = h.width / a.getModuleCount(); b = h.height / a.getModuleCount(); for (e = 0; e < a.getModuleCount(); e++) {

     f = r("<tr></tr>").css("height", b + "px").appendTo(c); for (i = 0; i < a.getModuleCount(); i++) r("<td></td>").css("width",

      d + "px").css("background-color", a.isDark(e, i) ? h.foreground : h.background).appendTo(f)

    }

   } a = c; jQuery(a).appendTo(this)

  })

 }

})(jQuery);

二、HTML代碼,與之前的不同,修改了一些代碼:

<div class="text-center">

 <span>(二維碼)</span>

 <div id="Qrcode"></div>

 <button class="button button-positive"

   ng-click="saveImageQrcode()">保存到手機(jī)

 </button>

</div>

三、JS代碼,這里需要將信息轉(zhuǎn)化一下utf16轉(zhuǎn)化為utf8格式,才能實(shí)現(xiàn)轉(zhuǎn)化為二維碼,我是將一個對象轉(zhuǎn)化的:

function utf16to8(str) {

 var out, i, len, c;

 out = "";

 len = str.length;

 for (i = 0; i < len; i++) {

  c = str.charCodeAt(i);

  if ((c >= 0x0001) && (c <= 0x007F)) {

   out += str.charAt(i);

  } else if (c > 0x07FF) {

   out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));

   out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));

   out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));

  } else {

   out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));

   out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));

  }

 }

 return out;

}

//{name: currentUser.UserName, id: currentUser.Id}這個是我需要轉(zhuǎn)化的對象,也是我在掃描二維碼的時候需要解析出來的內(nèi)容

$(function () {

 jQuery('#Qrcode').qrcode(utf16to8(angular.toJson({name: currentUser.UserName, id: currentUser.Id})))

});

至于怎么將二維碼保存到手機(jī),我之前的文章中有講到的,如果想實(shí)現(xiàn)的話可以參考一下~

好了,具體實(shí)現(xiàn)的步驟就是這樣了,大家可以提意見或者參考一下!

更多信息請查看網(wǎng)絡(luò)編程
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn)

版權(quán)所有:易賢網(wǎng)

中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
在线播放91灌醉迷j高跟美女| 欧美极品少妇xxxxⅹ高跟鞋| 久久麻豆一区二区| 一区二区三区免费在线观看| 免费看欧美女人艹b| 色综合色狠狠综合色| 337p粉嫩大胆色噜噜噜噜亚洲| 一区在线播放视频| 国产在线精品免费| 4438成人网| 亚洲人成影院在线观看| 久久99国产精品尤物| 欧美日韩国产免费一区二区 | 一区二区三区在线视频观看58| 久久精品国产999大香线蕉| 在线日韩av片| 综合电影一区二区三区| 国产精品一区二区在线播放| 欧美日韩不卡在线| 亚洲精品伦理在线| 粉嫩蜜臀av国产精品网站| 日韩你懂的在线播放| 亚洲国产精品一区二区尤物区| 色婷婷狠狠综合| 亚洲丝袜制服诱惑| 成人黄色网址在线观看| 久久久亚洲高清| 国内外成人在线视频| 欧美一三区三区四区免费在线看 | 日韩和的一区二区| 日本福利一区二区| 亚洲综合激情网| 日本精品视频一区二区三区| 有坂深雪av一区二区精品| 91丨九色丨蝌蚪富婆spa| 亚洲男帅同性gay1069| 91免费看`日韩一区二区| 国产精品白丝在线| 99久久99久久精品免费看蜜桃| 国产精品久久久久9999吃药| 成人精品鲁一区一区二区| 中文字幕av一区二区三区免费看 | 国产精品久久精品日日| 丁香五精品蜜臀久久久久99网站| 久久综合久久综合久久综合| 黄色成人免费在线| 中文字幕国产精品一区二区| av成人免费在线观看| 亚洲乱码国产乱码精品精小说| 91黄色在线观看| 午夜电影一区二区三区| 日韩美女视频一区二区在线观看| 青青草成人在线观看| 久久综合网色—综合色88| 国产高清亚洲一区| 亚洲猫色日本管| 精品视频在线免费| 国产老肥熟一区二区三区| 日韩一区日韩二区| 678五月天丁香亚洲综合网| 久久草av在线| 最新国产の精品合集bt伙计| 在线观看亚洲精品| 久久er99热精品一区二区| 欧美极品美女视频| 欧美日韩国产天堂| 国产剧情av麻豆香蕉精品| 亚洲黄色尤物视频| 精品久久久久久最新网址| gogogo免费视频观看亚洲一| 亚洲国产aⅴ天堂久久| 久久亚洲精品小早川怜子| 91久久奴性调教| 麻豆成人91精品二区三区| 亚洲欧洲国产日韩| 欧美电影在线免费观看| 国产aⅴ精品一区二区三区色成熟| 亚洲日本在线a| 精品精品欲导航| 色94色欧美sute亚洲线路二| 另类专区欧美蜜桃臀第一页| 中文字幕亚洲视频| 精品国产制服丝袜高跟| 日本高清不卡在线观看| 国产盗摄女厕一区二区三区| 日日摸夜夜添夜夜添精品视频 | 亚洲国产精品久久不卡毛片| 久久综合色婷婷| 91精品中文字幕一区二区三区| 成人精品gif动图一区| 美女www一区二区| 亚洲大片一区二区三区| 亚洲欧美一区二区久久| 久久毛片高清国产| 日韩欧美电影一区| 在线播放一区二区三区| 色婷婷综合久久久中文一区二区 | 国产精品入口麻豆原神| 日韩三级中文字幕| 91精品蜜臀在线一区尤物| 91麻豆国产自产在线观看| 国产剧情一区二区| 久久狠狠亚洲综合| 日本不卡免费在线视频| 亚洲影院免费观看| 亚洲欧美aⅴ...| 中文字幕日韩精品一区| 国产精品国产自产拍在线| 久久精品人人做人人爽97| 精品久久久久香蕉网| 日韩精品一区二区三区三区免费| 欧美美女一区二区| 日本道色综合久久| 在线视频综合导航| 欧美三区在线观看| 欧美午夜精品一区| 欧美亚洲自拍偷拍| 欧美特级限制片免费在线观看| 94-欧美-setu| 在线日韩av片| 欧美日韩一区二区在线视频| 在线观看一区不卡| 欧美日韩国产中文| 91精品国产黑色紧身裤美女| 欧美丰满少妇xxxxx高潮对白| 69堂精品视频| 精品久久久网站| 欧美激情一区二区三区在线| 国产欧美日韩视频在线观看| 亚洲国产精品t66y| 亚洲品质自拍视频| 亚洲成人av一区二区三区| 日韩va亚洲va欧美va久久| 久久99国产精品麻豆| 国产精品白丝jk黑袜喷水| 国产91在线观看| 97国产一区二区| 欧美私模裸体表演在线观看| 91麻豆精品国产91久久久更新时间| 91精品免费在线| 国产亚洲女人久久久久毛片| 中文字幕在线播放不卡一区| 亚洲美女在线国产| 日本大胆欧美人术艺术动态| 久久电影国产免费久久电影| 99久久久精品免费观看国产蜜| 91福利国产精品| 欧美精品一区二区三| 亚洲婷婷综合久久一本伊一区 | 激情六月婷婷综合| 成人性生交大合| 欧美亚洲国产bt| 日韩免费成人网| 亚洲在线免费播放| 韩国精品免费视频| 欧美色中文字幕| wwwwww.欧美系列| 亚洲成人在线观看视频| 国产成人综合在线观看| 欧美日韩国产乱码电影| 国产亚洲一区二区三区四区| 亚洲国产欧美日韩另类综合 | 免费一级欧美片在线观看| 国产成+人+日韩+欧美+亚洲| 在线观看免费成人| 日本一区二区成人| 免费观看久久久4p| 在线免费观看一区| 国产精品狼人久久影院观看方式| 日韩精品91亚洲二区在线观看| 99国产精品国产精品久久| 精品日本一线二线三线不卡| 一区二区三区鲁丝不卡| 丁香婷婷综合激情五月色| 91精品一区二区三区久久久久久| 日韩码欧中文字| 国产成人av影院| 欧美电影免费提供在线观看| 亚洲6080在线| 欧美亚洲一区二区在线| 成人免费一区二区三区在线观看| 精油按摩中文字幕久久| 欧美精品一级二级三级| 亚洲黄色免费电影| 91污片在线观看| 中文字幕 久热精品 视频在线| 蜜桃视频在线观看一区二区| 一本大道av伊人久久综合| 国产婷婷一区二区| 国产精品麻豆视频| 久久99精品视频| 日韩手机在线导航| 日韩免费看网站| 午夜精品福利视频网站| 一本久久a久久精品亚洲| 337p粉嫩大胆噜噜噜噜噜91av| 麻豆精品在线看| 精品捆绑美女sm三区| 天天色 色综合| 制服丝袜av成人在线看|