Библиотека генерации QR-кода в JavaScript - PullRequest
57 голосов
/ 28 декабря 2010

В настоящее время я ищу библиотеку js, которая может кодировать текст в qr-кодах. Единственный , который мне удалось найти до сих пор, кажется сломанным, хотя другие люди утверждают, что используют его. Пример страницы не работает. Немного поиграв с этим, мне удалось сгенерировать коды, но они не расшифровываются программным обеспечением телефона.

Есть ли для этого еще одна библиотека js? Кому-нибудь удалось заставить его работать?

Меня не интересует решение, которое извлекает код из онлайн-сервиса (kaywa, google и т. Д.).


Обновление:

Ну, вы правы, эта библиотека работает . Моя проблема заключалась в том, что я пытался включить его в страницу HTML5 Boilerplate, и document.write, похоже, не работает в этом. В любом случае я изменил пример кода, чтобы браузер рисовал на холсте, а не в таблице, и я получил порядок функции fillRect в обратном направлении. Ниже приведен исправленный вызов функции.

context.fillRect(c * UNIT_SIZE, r * UNIT_SIZE, UNIT_SIZE, UNIT_SIZE);
// it's column-row, not row-column; don't ask why :)

Так как мое изображение больше не транспонируется :), теперь qr прекрасно декодируется. Спасибо за поддержку.

Ответы [ 11 ]

26 голосов
/ 18 февраля 2011

Я написал простой кодер GPLv3 qr в javascript, который является локальным, использует HTML5 и действительно быстр, поскольку это порт встроенной версии C, которую я написал для процессоров Atmel AVR.

http://code.google.com/p/jsqrencode/downloads/list

Существует живая версия (которую можно сохранить как веб-приложение на устройствах iOS) по адресу http://zdez.org/qrenc3.html (сохранить на дом, открывается в Safari, чтобы вы могли скопировать изображение или использовать airprint)

Вот ссылка на загружаемый исходный код .

23 голосов
/ 28 декабря 2010

Сценарий, который вы опубликовали, РАБОТАЕТ, sample.html не анализируется как HTML.

alt text

18 голосов
/ 08 февраля 2013

Существует простая библиотека JavaScript, которую я когда-то нашел, которая называется QRCode.js .

QRCode.js - это кросс-браузерная библиотека JavaScript, которая позволяет генерировать QR-коды на лету, на стороне клиента. QRCode.js использует HTMl5 Canvas и Tables для отображения QRCode. Сама библиотека не имеет никаких зависимостей.

Чтобы сгенерировать QRCode, вам просто нужно включить библиотеку JavaScript и затем передать в качестве параметров функции QRCode текст, который вы хотите кодировать как QRCode, ширину и высоту QRCode, который вы хотите отобразить, а также как ваш заданный цвет переднего плана и цвет фона.

8 голосов
/ 12 августа 2011

Я нашел работающий генератор qrcode на основе javascript-jquery, который может вас заинтересовать.Это с открытым исходным кодом, и это действительно работает.Вот ссылка: https://github.com/jeromeetienne/jquery-qrcode

Хорошая вещь об этом - то, что он легкий и не вызывает никаких удаленных услуг или веб-сайтов.

4 голосов
/ 31 марта 2011

QR-код в первоначальном сообщении поддерживает только до 271 байта (версия 10, размер = 57x57, уровень EC L).

Чтобы он поддерживал полные спецификации QR-кода (версия 40, 177x177, 2953 байта), вы должны добавить дополнительные значения в его RS_BLOCK_TABLE.

Смотрите остальные матрицы (версия 11-40) здесь: http://two.pairlist.net/pipermail/reportlab-users/2010-September/009707.html

3 голосов
/ 28 июля 2016

Я использую QR-код ShieldUI Lite, который можно найти здесь:

https://github.com/shieldui/shieldui-lite

Содержит все версии QR-кода, все уровни ошибок.

2 голосов
/ 26 ноября 2017

As Canvas / PNG

Существует также новый kjua от того же автора, что и "old" jQuery.qrcode .

As Canvas / PNG / SVG

и QR-код-генератор от @ nayuki также имеет возможность создавать QR-коды в виде SVG.

1 голос
/ 11 октября 2013

npm имеет несколько.Я понятия не имею, какие из них хороши.

$ npm search qrcode
npm http GET https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1379059929305
npm http 200 https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1379059929305
NAME             DESCRIPTION                                                   A
jsqrcode         a node port of Lazar Laszlo's `jsqrcode` qr code decoder      =
jsqrcode-lite    Simplified version of Lazar Laszlo's `jsqrcode` for node.     =
node-zxing       ZXing Wrapper                                                 =
qr               A small library to generate QR codes with libqrencode.        =
qr-element       qrcode dom element                                            =
qr.js            qrcode encoding in javascript                                 =
qrcode           QRCode / 2d Barcode api with both server side and client side s
qrcode-emitter   Emits QR codes found in an image stream.                      =
qrcode-npm       QRCode Generator for JavaScript                               =
qrcode-terminal  QRCodes, in the terminal                                      =
qrcode.js        QR Code Detection / Decoding / Generation                     =
qread            QRcode detector & decoder                                     =
qruri            NodeJS port of Kang Seonghoon's qr.js                         =
rescode          Generate Codes (EAN13, QRCODE ..)                             =
zbar             node-zbar is a NodeJS binding to the ZBar QR Code library.   
0 голосов
/ 20 мая 2019

Я знаю, что это старый вопрос, но я думаю, что нет необходимости в библиотеке для создания QR-кода из текста.Вам просто нужно использовать API QR-кода .

. Реализация очень проста, у нас есть форма с текстовым полем, которая захватывает данные контента.Всякий раз, когда мы нажимаем кнопку «Генерировать», мы генерируем новый URL-адрес запроса к API. Этот URL-адрес состоит из двух основных компонентов data и size.Первый требует текстового содержимого в кодировке, а второй будет определять размер изображения.Вот код:

let baseURL = 'https://api.qrserver.com/v1/create-qr-code/?data='
let config = '&size=120x120'

let btn, qrCode, content;

function htmlEncode(value) {
  return $('<div/>').text(value).html();
}

$(function() {
  btn = $('#generate');
  qrCode = $('.qr-code');
  content = $('#content');
  btn.click(function() {
    qrCode.attr('src', baseURL + encodeURIComponent(htmlEncode(content.val())) + config);
  });
});
.qr-code {
  max-width: 160px;
  margin: 10px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container-fluid">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
  <div class="text-center">
    <img src="https://api.qrserver.com/v1/create-qr-code/?data=http%3A%2F%2Fwww.google.com&size=120x120" class="qr-code img-thumbnail img-responsive">
  </div>

  <div class="form-horizontal">
    <div class="form-group">
      <label class="control-label col-sm-4" for="content">Enter content:</label>
      <div class="col-sm-10">
        <input type="text" class="form-control" id="content" placeholder="i.e. www.google.com">
      </div>
    </div>
    <div class="form-group">
      <div class="col-sm-offset-2 col-sm-10">
        <button type="button" class="btn btn-default" id="generate">Generate</button>
      </div>
    </div>
  </div>
</div>
0 голосов
/ 28 декабря 2010

Я не смог найти генератор кода javascript qr.

Но вы могли бы Рассмотреть вопрос об использовании API Google:

http://code.google.com/apis/chart/docs/gallery/qr_codes.html http://togosoft.com/web/qrcode/qrcode.js

Обновление: Я только что попробовал http://d -project.googlecode.com / svn / trunk / misc / qrcode / js / qrcode.js и, кажется, мне подходит. Единственное, что я сделал, это увеличил размер и заставил его правильно закрывать TD, поскольку само закрытие не является правильным html. http://k3rmit.org/nopaste/759 Я протестировал 3 разные строки и использовал приложение под названием QRReader на своем iPhone для декодирования.

Обновление 2: С var qr = new QRCode(10, QRErrorCorrectLevel.L); я смог уместить 271 символ в QRCode, но это может быть не самый надежный параметр.

...