Nektov 59 Опубликовано: 2 ноября 2015 Рассказать Опубликовано: 2 ноября 2015 Доброго времени суток, Может кто, где видел плагин генератора QR кода вывода адреса станицы? То есть, плагин должен генерировать QR код страницы который можно либо сканировать прям с экрана, либо слать на почту. Спасибо Цитата Ссылка на сообщение Поделиться на других сайтах
alex32 942 Опубликовано: 2 ноября 2015 Рассказать Опубликовано: 2 ноября 2015 http://www.rips.su/dle/modules/2232-dle-module-qr-kod-20.html не проверял Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 3 ноября 2015 Рассказать Опубликовано: 3 ноября 2015 Автор 12 часа назад, alex32 сказал: http://www.rips.su/dle/modules/2232-dle-module-qr-kod-20.html не проверял Спасибо, но он (код) подтягивает левый сайт. Если есть еще что, буду благодарен. Цитата Ссылка на сообщение Поделиться на других сайтах
odys 384 Опубликовано: 3 ноября 2015 Рассказать Опубликовано: 3 ноября 2015 9 минут назад, Nektov сказал: Спасибо, но он (код) подтягивает левый сайт. Если есть еще что, буду благодарен. http://habrahabr.ru/post/92094/ Цитата Ссылка на сообщение Поделиться на других сайтах
odys 384 Опубликовано: 3 ноября 2015 Рассказать Опубликовано: 3 ноября 2015 или вот: http://iface.menville.net/@/qrcode.js сохраняй к себе на хостинг и подключай в то место, где хочешь показывать qr код, вот пример: http://iface.menville.net/@/qr.html Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 3 ноября 2015 Рассказать Опубликовано: 3 ноября 2015 (изменено) Автор Спасибо, Использовать Google Charts API не получается <img src="http://chart.apis.google.com/chart?cht=qr&chs=300x300&chl={full-story}" /> Ковыряет текст новости + генерит только часть кода, вместо урла, Пример http://i.piccy.info/i9/7effaae3a39471a3e632c2be8f2f8cd9/1446569221/1264/967350/chart.png http://iface.menville.net/@/qrcode.js Можно прям к себе загрузить, не обращаясь к другим ресурсам. Только вот куда втыкнуть адрес страницы, а именно {full-story}, я так и не нашёл. + QR касается, не не касается DLE. Кто то видел оффлайн конвертер изображений в base64 и оффлайн генератор QR кодов. (ссылка с Хабра, а точнее сайт с оффлайн генератором QR кодов, дает качать только после регистрации, а вот при попытке регистрации ошибка mysqli) Изменено 3 ноября 2015 пользователем Nektov Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 3 ноября 2015 Рассказать Опубликовано: 3 ноября 2015 Автор Работает Как всегда спешка не приводит ни к чему хорошему, перепутал теги движка. Правильный код для вставки <img src="http://chart.apis.google.com/chart?cht=qr&chs=300x300&chl={full-link}" /> Пример: Также, есть дополнительные настройки вывода кода 1 Цитата Ссылка на сообщение Поделиться на других сайтах
odys 384 Опубликовано: 3 ноября 2015 Рассказать Опубликовано: 3 ноября 2015 3 часа назад, Nektov сказал: Можно прям к себе загрузить, не обращаясь к другим ресурсам. Только вот куда втыкнуть адрес страницы, а именно {full-story}, я так и не нашёл. ни куда, я же дал ссылку на пример, открой исходный код и посомтри. 3 часа назад, Nektov сказал: дает качать только после регистрации, а вот при попытке регистрации ошибка mysqli может быть. Ссылка в закладках уже давненько, не проверял. Раньше просто делал.... 1 час назад, Nektov сказал: Правильный код для вставки тоже конечно вариант, но это же использование стороннего сайта, а мой вариант, это всё у тебя и ни от кого не зависит Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 10 ноября 2015 Рассказать Опубликовано: 10 ноября 2015 (изменено) Автор В 03.11.2015 22:33:37, odys сказал: открой исходный код и посомтри Вот именно это и делал. Знаете куда втыкать подскажите На всякий случай, сам код: var qrcode = function() { var P = function(s, t) { var u = 0xEC; var v = 0x11; var w = s; var z = R[t]; var A = null; var B = 0; var C = null; var D = new Array(); var E = {}; var F = function(e, f) { B = w * 4 + 17; A = function(a) { var b = new Array(a); for (var c = 0; c < a; c += 1) { b[c] = new Array(a); for (var d = 0; d < a; d += 1) { b[c][d] = null } } return b }(B); G(0, 0); G(B - 7, 0); G(0, B - 7); J(); I(); L(e, f); if (w >= 7) { K(e) } if (C == null) { C = O(w, z, D) } M(C, f) }; var G = function(a, b) { for (var r = -1; r <= 7; r += 1) { if (a + r <= -1 || B <= a + r) continue; for (var c = -1; c <= 7; c += 1) { if (b + c <= -1 || B <= b + c) continue; if ((0 <= r && r <= 6 && (c == 0 || c == 6)) || (0 <= c && c <= 6 && (r == 0 || r == 6)) || (2 <= r && r <= 4 && 2 <= c && c <= 4)) { A[a + r][b + c] = true } else { A[a + r][b + c] = false } } } }; var H = function() { var a = 0; var b = 0; for (var i = 0; i < 8; i += 1) { F(true, i); var c = T.getLostPoint(E); if (i == 0 || a > c) { a = c; b = i } } return b }; var I = function() { for (var r = 8; r < B - 8; r += 1) { if (A[r][6] != null) { continue } A[r][6] = (r % 2 == 0) } for (var c = 8; c < B - 8; c += 1) { if (A[6][c] != null) { continue } A[6][c] = (c % 2 == 0) } }; var J = function() { var a = T.getPatternPosition(w); for (var i = 0; i < a.length; i += 1) { for (var j = 0; j < a.length; j += 1) { var b = a[i]; var d = a[j]; if (A[b][d] != null) { continue } for (var r = -2; r <= 2; r += 1) { for (var c = -2; c <= 2; c += 1) { if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) { A[b + r][d + c] = true } else { A[b + r][d + c] = false } } } } } }; var K = function(a) { var b = T.getBCHTypeNumber(w); for (var i = 0; i < 18; i += 1) { var c = (!a && ((b >> i) & 1) == 1); A[Math.floor(i / 3)][i % 3 + B - 8 - 3] = c } for (var i = 0; i < 18; i += 1) { var c = (!a && ((b >> i) & 1) == 1); A[i % 3 + B - 8 - 3][Math.floor(i / 3)] = c } }; var L = function(a, b) { var c = (z << 3) | b; var d = T.getBCHTypeInfo(c); for (var i = 0; i < 15; i += 1) { var e = (!a && ((d >> i) & 1) == 1); if (i < 6) { A[i][8] = e } else if (i < 8) { A[i + 1][8] = e } else { A[B - 15 + i][8] = e } } for (var i = 0; i < 15; i += 1) { var e = (!a && ((d >> i) & 1) == 1); if (i < 8) { A[8][B - i - 1] = e } else if (i < 9) { A[8][15 - i - 1 + 1] = e } else { A[8][15 - i - 1] = e } } A[B - 8][8] = (!a) }; var M = function(a, b) { var d = -1; var e = B - 1; var f = 7; var g = 0; var h = T.getMaskFunction(b); for (var i = B - 1; i > 0; i -= 2) { if (i == 6) i -= 1; while (true) { for (var c = 0; c < 2; c += 1) { if (A[e][i - c] == null) { var j = false; if (g < a.length) { j = (((a[g] >>> f) & 1) == 1) } var k = h(e, i - c); if (k) { j = !j } A[e][i - c] = j; f -= 1; if (f == -1) { g += 1; f = 7 } } } e += d; if (e < 0 || B <= e) { e -= d; d = -d; break } } } }; var N = function(a, b) { var c = 0; var d = 0; var e = 0; var f = new Array(b.length); var g = new Array(b.length); for (var r = 0; r < b.length; r += 1) { var h = b[r].dataCount; var j = b[r].totalCount - h; d = Math.max(d, h); e = Math.max(e, j); f[r] = new Array(h); for (var i = 0; i < f[r].length; i += 1) { f[r][i] = 0xff & a.getBuffer()[i + c] } c += h; var k = T.getErrorCorrectPolynomial(j); var l = qrPolynomial(f[r], k.getLength() - 1); var m = l.mod(k); g[r] = new Array(k.getLength() - 1); for (var i = 0; i < g[r].length; i += 1) { var n = i + m.getLength() - g[r].length; g[r][i] = (n >= 0) ? m.get(n) : 0 } } var o = 0; for (var i = 0; i < b.length; i += 1) { o += b[i].totalCount } var p = new Array(o); var q = 0; for (var i = 0; i < d; i += 1) { for (var r = 0; r < b.length; r += 1) { if (i < f[r].length) { p[q] = f[r][i]; q += 1 } } } for (var i = 0; i < e; i += 1) { for (var r = 0; r < b.length; r += 1) { if (i < g[r].length) { p[q] = g[r][i]; q += 1 } } } return p }; var O = function(a, b, c) { var d = V.getRSBlocks(a, b); var e = W(); for (var i = 0; i < c.length; i += 1) { var f = c[i]; e.put(f.getMode(), 4); e.put(f.getLength(), T.getLengthInBits(f.getMode(), a)); f.write(e) } var g = 0; for (var i = 0; i < d.length; i += 1) { g += d[i].dataCount } if (e.getLengthInBits() > g * 8) { throw new Error('code length overflow. (' + e.getLengthInBits() + '>' + g * 8 + ')'); } if (e.getLengthInBits() + 4 <= g * 8) { e.put(0, 4) } while (e.getLengthInBits() % 8 != 0) { e.putBit(false) } while (true) { if (e.getLengthInBits() >= g * 8) { break } e.put(u, 8); if (e.getLengthInBits() >= g * 8) { break } e.put(v, 8) } return N(e, d) }; E.addData = function(a) { var b = X(a); D.push(b); C = null }; E.isDark = function(a, b) { if (a < 0 || B <= a || b < 0 || B <= b) { throw new Error(a + ',' + b); } return A[a][b] }; E.getModuleCount = function() { return B }; E.make = function() { F(false, H()) }; E.createTableTag = function(a, b) { a = a || 2; b = (typeof b == 'undefined') ? a * 4 : b; var d = ''; d += '<table style="'; d += ' border-width: 0px; border-style: none;'; d += ' border-collapse: collapse;'; d += ' padding: 0px; margin: ' + b + 'px;'; d += '">'; d += '<tbody>'; for (var r = 0; r < E.getModuleCount(); r += 1) { d += '<tr>'; for (var c = 0; c < E.getModuleCount(); c += 1) { d += '<td style="'; d += ' border-width: 0px; border-style: none;'; d += ' border-collapse: collapse;'; d += ' padding: 0px; margin: 0px;'; d += ' width: ' + a + 'px;'; d += ' height: ' + a + 'px;'; d += ' background-color: '; d += E.isDark(r, c) ? '#000000' : '#ffffff'; d += ';'; d += '"/>' } d += '</tr>' } d += '</tbody>'; d += '</table>'; return d }; E.createImgTag = function(a, b) { a = a || 3; b = (typeof b == 'undefined') ? a * 4 : b; var d = E.getModuleCount() * a + b * 2; var e = b; var f = d - b; return bc(d, d, function(x, y) { if (e <= x && x < f && e <= y && y < f) { var c = Math.floor((x - e) / a); var r = Math.floor((y - e) / a); return E.isDark(r, c) ? 0 : 1 } else { return 1 } }) }; return E }; P.stringToBytes = function(s) { var a = new Array(); for (var i = 0; i < s.length; i += 1) { var c = s.charCodeAt(i); a.push(c & 0xff) } return a }; P.createStringToBytes = function(j, l) { var m = function() { var a = ba(j); var c = function() { var b = a.read(); if (b == -1) throw new Error(); return b }; var d = 0; var e = {}; while (true) { var f = a.read(); if (f == -1) break; var g = c(); var h = c(); var i = c(); var k = String.fromCharCode((f << 8) | g); var v = (h << 8) | i; e[k] = v; d += 1 } if (d != l) { throw new Error(d + ' != ' + l); } return e }(); var n = '?'.charCodeAt(0); return function(s) { var a = new Array(); for (var i = 0; i < s.length; i += 1) { var c = s.charCodeAt(i); if (c < 128) { a.push(c) } else { var b = m[s.charAt(i)]; if (typeof b == 'number') { if ((b & 0xff) == b) { a.push(b) } else { a.push(b >>> 8); a.push(b & 0xff) } } else { a.push(n) } } } return a } }; var Q = { MODE_NUMBER: 1 << 0, MODE_ALPHA_NUM: 1 << 1, MODE_8BIT_BYTE: 1 << 2, MODE_KANJI: 1 << 3 }; var R = { L: 1, M: 0, Q: 3, H: 2 }; var S = { PATTERN000: 0, PATTERN001: 1, PATTERN010: 2, PATTERN011: 3, PATTERN100: 4, PATTERN101: 5, PATTERN110: 6, PATTERN111: 7 }; var T = function() { var l = [ [], [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] ]; var m = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0); var n = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0); var o = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1); var p = {}; var q = function(a) { var b = 0; while (a != 0) { b += 1; a >>>= 1 } return b }; p.getBCHTypeInfo = function(a) { var d = a << 10; while (q(d) - q(m) >= 0) { d ^= (m << (q(d) - q(m))) } return ((a << 10) | d) ^ o }; p.getBCHTypeNumber = function(a) { var d = a << 12; while (q(d) - q(n) >= 0) { d ^= (n << (q(d) - q(n))) } return (a << 12) | d }; p.getPatternPosition = function(a) { return l[a - 1] }; p.getMaskFunction = function(a) { switch (a) { case S.PATTERN000: return function(i, j) { return (i + j) % 2 == 0 }; case S.PATTERN001: return function(i, j) { return i % 2 == 0 }; case S.PATTERN010: return function(i, j) { return j % 3 == 0 }; case S.PATTERN011: return function(i, j) { return (i + j) % 3 == 0 }; case S.PATTERN100: return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0 }; case S.PATTERN101: return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0 }; case S.PATTERN110: return function(i, j) { return ((i * j) % 2 + (i * j) % 3) % 2 == 0 }; case S.PATTERN111: return function(i, j) { return ((i * j) % 3 + (i + j) % 2) % 2 == 0 }; default: throw new Error('bad maskPattern:' + a); } }; p.getErrorCorrectPolynomial = function(b) { var a = qrPolynomial([1], 0); for (var i = 0; i < b; i += 1) { a = a.multiply(qrPolynomial([1, U.gexp(i)], 0)) } return a }; p.getLengthInBits = function(a, b) { if (1 <= b && b < 10) { switch (a) { case Q.MODE_NUMBER: return 10; case Q.MODE_ALPHA_NUM: return 9; case Q.MODE_8BIT_BYTE: return 8; case Q.MODE_KANJI: return 8; default: throw new Error('mode:' + a); } } else if (b < 27) { switch (a) { case Q.MODE_NUMBER: return 12; case Q.MODE_ALPHA_NUM: return 11; case Q.MODE_8BIT_BYTE: return 16; case Q.MODE_KANJI: return 10; default: throw new Error('mode:' + a); } } else if (b < 41) { switch (a) { case Q.MODE_NUMBER: return 14; case Q.MODE_ALPHA_NUM: return 13; case Q.MODE_8BIT_BYTE: return 16; case Q.MODE_KANJI: return 12; default: throw new Error('mode:' + a); } } else { throw new Error('type:' + b); } }; p.getLostPoint = function(a) { var b = a.getModuleCount(); var d = 0; for (var e = 0; e < b; e += 1) { for (var f = 0; f < b; f += 1) { var g = 0; var h = a.isDark(e, f); for (var r = -1; r <= 1; r += 1) { if (e + r < 0 || b <= e + r) { continue } for (var c = -1; c <= 1; c += 1) { if (f + c < 0 || b <= f + c) { continue } if (r == 0 && c == 0) { continue } if (h == a.isDark(e + r, f + c)) { g += 1 } } } if (g > 5) { d += (3 + g - 5) } } }; for (var e = 0; e < b - 1; e += 1) { for (var f = 0; f < b - 1; f += 1) { var i = 0; if (a.isDark(e, f)) i += 1; if (a.isDark(e + 1, f)) i += 1; if (a.isDark(e, f + 1)) i += 1; if (a.isDark(e + 1, f + 1)) i += 1; if (i == 0 || i == 4) { d += 3 } } } for (var e = 0; e < b; e += 1) { for (var f = 0; f < b - 6; f += 1) { if (a.isDark(e, f) && !a.isDark(e, f + 1) && a.isDark(e, f + 2) && a.isDark(e, f + 3) && a.isDark(e, f + 4) && !a.isDark(e, f + 5) && a.isDark(e, f + 6)) { d += 40 } } } for (var f = 0; f < b; f += 1) { for (var e = 0; e < b - 6; e += 1) { if (a.isDark(e, f) && !a.isDark(e + 1, f) && a.isDark(e + 2, f) && a.isDark(e + 3, f) && a.isDark(e + 4, f) && !a.isDark(e + 5, f) && a.isDark(e + 6, f)) { d += 40 } } } var j = 0; for (var f = 0; f < b; f += 1) { for (var e = 0; e < b; e += 1) { if (a.isDark(e, f)) { j += 1 } } } var k = Math.abs(100 * j / b / b - 50) / 5; d += k * 10; return d }; return p }(); var U = function() { var a = new Array(256); var b = new Array(256); for (var i = 0; i < 8; i += 1) { a[i] = 1 << i } for (var i = 8; i < 256; i += 1) { a[i] = a[i - 4] ^ a[i - 5] ^ a[i - 6] ^ a[i - 8] } for (var i = 0; i < 255; i += 1) { b[a[i]] = i } var c = {}; c.glog = function(n) { if (n < 1) { throw new Error('glog(' + n + ')'); } return b[n] }; c.gexp = function(n) { while (n < 0) { n += 255 } while (n >= 256) { n -= 255 } return a[n] }; return c }(); function qrPolynomial(c, d) { if (typeof c.length == 'undefined') { throw new Error(c.length + '/' + d); } var f = function() { var a = 0; while (a < c.length && c[a] == 0) { a += 1 } var b = new Array(c.length - a + d); for (var i = 0; i < c.length - a; i += 1) { b[i] = c[i + a] } return b }(); var g = {}; g.get = function(a) { return f[a] }; g.getLength = function() { return f.length }; g.multiply = function(e) { var a = new Array(g.getLength() + e.getLength() - 1); for (var i = 0; i < g.getLength(); i += 1) { for (var j = 0; j < e.getLength(); j += 1) { a[i + j] ^= U.gexp(U.glog(g.get(i)) + U.glog(e.get(j))) } } return qrPolynomial(a, 0) }; g.mod = function(e) { if (g.getLength() - e.getLength() < 0) { return g } var a = U.glog(g.get(0)) - U.glog(e.get(0)); var b = new Array(g.getLength()); for (var i = 0; i < g.getLength(); i += 1) { b[i] = g.get(i) } for (var i = 0; i < e.getLength(); i += 1) { b[i] ^= U.gexp(U.glog(e.get(i)) + a) } return qrPolynomial(b, 0).mod(e) }; return g }; var V = function() { var k = [ [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] ]; var l = function(a, b) { var c = {}; c.totalCount = a; c.dataCount = b; return c }; var m = {}; var n = function(a, b) { switch (b) { case R.L: return k[(a - 1) * 4 + 0]; case R.M: return k[(a - 1) * 4 + 1]; case R.Q: return k[(a - 1) * 4 + 2]; case R.H: return k[(a - 1) * 4 + 3]; default: return undefined } }; m.getRSBlocks = function(a, b) { var c = n(a, b); if (typeof c == 'undefined') { throw new Error('bad rs block @ typeNumber:' + a + '/errorCorrectLevel:' + b); } var d = c.length / 3; var e = new Array(); for (var i = 0; i < d; i += 1) { var f = c[i * 3 + 0]; var g = c[i * 3 + 1]; var h = c[i * 3 + 2]; for (var j = 0; j < f; j += 1) { e.push(l(g, h)) } } return e }; return m }(); var W = function() { var c = new Array(); var d = 0; var e = {}; e.getBuffer = function() { return c }; e.get = function(a) { var b = Math.floor(a / 8); return ((c[b] >>> (7 - a % 8)) & 1) == 1 }; e.put = function(a, b) { for (var i = 0; i < b; i += 1) { e.putBit(((a >>> (b - i - 1)) & 1) == 1) } }; e.getLengthInBits = function() { return d }; e.putBit = function(a) { var b = Math.floor(d / 8); if (c.length <= b) { c.push(0) } if (a) { c[b] |= (0x80 >>> (d % 8)) } d += 1 }; return e }; var X = function(b) { var c = Q.MODE_8BIT_BYTE; var d = b; var e = P.stringToBytes(b); var f = {}; f.getMode = function() { return c }; f.getLength = function(a) { return e.length }; f.write = function(a) { for (var i = 0; i < e.length; i += 1) { a.put(e[i], 8) } }; return f }; var Y = function() { var d = new Array(); var e = {}; e.writeByte = function(b) { d.push(b & 0xff) }; e.writeShort = function(i) { e.writeByte(i); e.writeByte(i >>> 8) }; e.writeBytes = function(b, a, c) { a = a || 0; c = c || b.length; for (var i = 0; i < c; i += 1) { e.writeByte(b[i + a]) } }; e.writeString = function(s) { for (var i = 0; i < s.length; i += 1) { e.writeByte(s.charCodeAt(i)) } }; e.toByteArray = function() { return d }; e.toString = function() { var s = ''; s += '['; for (var i = 0; i < d.length; i += 1) { if (i > 0) { s += ',' } s += d[i] } s += ']'; return s }; return e }; var Z = function() { var c = 0; var d = 0; var e = 0; var f = ''; var g = {}; var h = function(b) { f += String.fromCharCode(j(b & 0x3f)) }; var j = function(n) { if (n < 0) {} else if (n < 26) { return 0x41 + n } else if (n < 52) { return 0x61 + (n - 26) } else if (n < 62) { return 0x30 + (n - 52) } else if (n == 62) { return 0x2b } else if (n == 63) { return 0x2f } throw new Error('n:' + n); }; g.writeByte = function(n) { c = (c << 8) | (n & 0xff); d += 8; e += 1; while (d >= 6) { h(c >>> (d - 6)); d -= 6 } }; g.flush = function() { if (d > 0) { h(c << (6 - d)); c = 0; d = 0 } if (e % 3 != 0) { var a = 3 - e % 3; for (var i = 0; i < a; i += 1) { f += '=' } } }; g.toString = function() { return f }; return g }; var ba = function(a) { var b = a; var d = 0; var e = 0; var f = 0; var g = {}; g.read = function() { while (f < 8) { if (d >= b.length) { if (f == 0) { return -1 } throw new Error('unexpected end of file./' + f); } var c = b.charAt(d); d += 1; if (c == '=') { f = 0; return -1 } else if (c.match(/^\s$/)) { continue } e = (e << 6) | h(c.charCodeAt(0)); f += 6 } var n = (e >>> (f - 8)) & 0xff; f -= 8; return n }; var h = function(c) { if (0x41 <= c && c <= 0x5a) { return c - 0x41 } else if (0x61 <= c && c <= 0x7a) { return c - 0x61 + 26 } else if (0x30 <= c && c <= 0x39) { return c - 0x30 + 52 } else if (c == 0x2b) { return 62 } else if (c == 0x2f) { return 63 } else { throw new Error('c:' + c); } }; return g }; var bb = function(k, l) { var m = k; var n = l; var o = new Array(k * l); var p = {}; p.setPixel = function(x, y, a) { o[y * m + x] = a }; p.write = function(a) { a.writeString('GIF87a'); a.writeShort(m); a.writeShort(n); a.writeByte(0x80); a.writeByte(0); a.writeByte(0); a.writeByte(0x00); a.writeByte(0x00); a.writeByte(0x00); a.writeByte(0xff); a.writeByte(0xff); a.writeByte(0xff); a.writeString(','); a.writeShort(0); a.writeShort(0); a.writeShort(m); a.writeShort(n); a.writeByte(0); var b = 2; var c = r(b); a.writeByte(b); var d = 0; while (c.length - d > 255) { a.writeByte(255); a.writeBytes(c, d, 255); d += 255 } a.writeByte(c.length - d); a.writeBytes(c, d, c.length - d); a.writeByte(0x00); a.writeString(';') }; var q = function(c) { var d = c; var e = 0; var f = 0; var g = {}; g.write = function(a, b) { if ((a >>> b) != 0) { throw new Error('length over'); } while (e + b >= 8) { d.writeByte(0xff & ((a << e) | f)); b -= (8 - e); a >>>= (8 - e); f = 0; e = 0 } f = (a << e) | f; e = e + b }; g.flush = function() { if (e > 0) { d.writeByte(f) } }; return g }; var r = function(a) { var b = 1 << a; var d = (1 << a) + 1; var e = a + 1; var f = t(); for (var i = 0; i < b; i += 1) { f.add(String.fromCharCode(i)) } f.add(String.fromCharCode(b)); f.add(String.fromCharCode(d)); var g = Y(); var h = q(g); h.write(b, e); var j = 0; var s = String.fromCharCode(o[j]); j += 1; while (j < o.length) { var c = String.fromCharCode(o[j]); j += 1; if (f.contains(s + c)) { s = s + c } else { h.write(f.indexOf(s), e); if (f.size() < 0xfff) { if (f.size() == (1 << e)) { e += 1 } f.add(s + c) } s = c } } h.write(f.indexOf(s), e); h.write(d, e); h.flush(); return g.toByteArray() }; var t = function() { var b = {}; var c = 0; var d = {}; d.add = function(a) { if (d.contains(a)) { throw new Error('dup key:' + a); } b[a] = c; c += 1 }; d.size = function() { return c }; d.indexOf = function(a) { return b[a] }; d.contains = function(a) { return typeof b[a] != 'undefined' }; return d }; return p }; var bc = function(a, c, d, e) { var f = bb(a, c); for (var y = 0; y < c; y += 1) { for (var x = 0; x < a; x += 1) { f.setPixel(x, y, d(x, y)) } } var b = Y(); f.write(b); var g = Z(); var h = b.toByteArray(); for (var i = 0; i < h.length; i += 1) { g.writeByte(h[i]) } g.flush(); var j = ''; j += '<img border="0"'; j += '\u0020src="'; j += 'data:image/gif;base64,'; j += g; j += '"'; j += '\u0020width="'; j += a; j += '"'; j += '\u0020height="'; j += c; j += '"'; if (e) { j += '\u0020alt="QR Code'; j += e; j += '"' } j += '/>'; return j }; return P }(); var qr = qrcode(5, 'L'); qr.addData('URL:' + document.URL); qr.make(); document.write(qr.createImgTag()); Вопрос к администрации форума: А где подевался спойлер, при создании сообщения? Изменено 10 ноября 2015 пользователем Nektov Вопрос к администрации форума: А где подевался спойлер, при создании сообщения? Цитата Ссылка на сообщение Поделиться на других сайтах
odys 384 Опубликовано: 10 ноября 2015 Рассказать Опубликовано: 10 ноября 2015 1 час назад, Nektov сказал: Знаете куда втыкать подскажите в то место, где должен появиться qr код. Я же написал. Открой исходный код из примера, там всё наглядно Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 17 ноября 2015 Рассказать Опубликовано: 17 ноября 2015 Автор В 10.11.2015 21:38:40, odys сказал: Я же написал. Открой исходный код из примера, там всё наглядно Я кажись также писал ... В 10.11.2015 19:50:47, Nektov сказал: Знаете куда втыкать подскажите В 10.11.2015 21:38:40, odys сказал: в то место, где должен появиться qr код То есть, код вписывать (выводить) в шаблон (шаблоне)? Цитата Ссылка на сообщение Поделиться на других сайтах
odys 384 Опубликовано: 17 ноября 2015 Рассказать Опубликовано: 17 ноября 2015 1 час назад, Nektov сказал: То есть, код вписывать (выводить) в шаблон (шаблоне)? да, в то место где ты хочешь чтобы показывался qr код, js сам всё сделает. Цитата Ссылка на сообщение Поделиться на других сайтах
Datagor 31 Опубликовано: 18 ноября 2015 Рассказать Опубликовано: 18 ноября 2015 Nektov, такие листинги надо в спойлер заворачивать. У меня мышка устала листать Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 18 ноября 2015 Рассказать Опубликовано: 18 ноября 2015 Автор 8 часов назад, Datagor сказал: Nektov, такие листинги надо в спойлер заворачивать. У меня мышка устала листать В 10.11.2015 19:50:47, Nektov сказал: Вопрос к администрации форума: А где подевался спойлер, при создании сообщения? Изменено 10 Ноябрь пользователем Nektov Вопрос к администрации форума: А где подевался спойлер, при создании сообщения? В 17.11.2015 16:06:37, odys сказал: да, в то место где ты хочешь чтобы показывался qr код, js сам всё сделает. Cпасибо Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.