Skip to content

Генератор QR-кода на чистом Javascript

License

Notifications You must be signed in to change notification settings

slesareva-gala/QR-Code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QRCreator.js

QRCreator.js — это скрипт на чистом javascript для создания QR-кода.
Вы можете его свободно использовать с любой целью.

( Протестируйте ) => { ДЕМО };


ПОДКЛЮЧЕНИЕ

  1. Сохраните файл QRCreator.js

По ссылке страница перенаправляется на содержимое файла.
Нажмите правую кнопку мыши ( или сочетание клавиш Ctrl+S / CMD+S ) и выберите Сохранить как

  1. В файле html в тег <head> вставьте тег <script> с указанием ссылки на файл QRCreator.js
    <script src="QRCreator.js" defer><script/>

Пример подключения

<html>
  <head>
    <script src="QRCreator.js"></script>
  </head>

  <body>
    <div id="qrcode"></div>
  </body>

  <script>
    document.getElementById('qrcode').append(QRCreator('Привет, Мир!').result);
  </script>
</html>

Пример подключения с вызовом из js-файла

<html>
  <head>
    <script src="QRCreator.js" defer></script>
    <script src="sample.js" defer></script>
  </head>

  <body>
    <div id="qrcode1"></div>
    <div id="qrcode2"></div>
  </body>
</html>

sample.js

const qrcode1 = QRCreator('Привет, Мир!',
{ mode: 4,
  eccl: 0,
  version: 3,
  mask: -1,
  image: 'html',
  modsize: -1,
  margin: 0
});
const qrcode2 = QRCreator('Привет, Мир!', { mode: 1});

const content = (qrcode) =>{
  return qrcode.error ?
    `недопустимые исходные данные ${qrcode.error}`:
     qrcode.result;
};

document.getElementById('qrcode1').append( 'QR-код № 1: ', content(qrcode1));
document.getElementById('qrcode2').append( 'QR-код № 2: ', content(qrcode2));

СИНТАКСИС

window.QRCreator( text [, options ] )

или

QRCreator( text [, options ] )

Параметры

text
Кодируемая текстовая строка UTF-8.

options
Объект, содержащий свойства со значениями параметров генерации QR-кода, по умолчанию:
{mode: -1, eccl: 0, version: -1, mask: -1, image: 'PNG', modsize: -1, margin: -1}

Возвращаемое значение

Объект qrcode, описывающий результат генерации QR-кода.


ОПИСАНИЕ

1. Свойство options

1.1. Основные свойства options, содержащие значения параметров формирования матрицы QR-кода

свойство значение содержание
mode целое число
-1, 1, 2, 4
метод кодирования
1 - числовой,
2 - буквенно-цифровой,
4 - октетный,
если не указан или -1,
то выбирается допустимый
eccl целое число
от -1 до 3
уровень коррекции ошибок
1(L), 0(M), 3(Q), 2(H)
если не указан или -1,
то подбор допустимого, начиная с 3(Q)
version целое число
-1
или
от 1 до 40
версия
если не указана или -1, то выбирается наименьшая возможная
mask целое число
-1
или
от 0 до 7
шаблон маски
если не указан или -1, то выбирается лучшая маска

1.2. Дополнительные свойства options, содержащие значения параметров формирования изображения

свойство значение содержание
image регистронезависимая строка
'PNG', 'SVG', 'HTML'
или
'NONE'
формат изображения,
если не указан, то результат выводится в формате 'PNG',
при задании значения 'NONE' - результат не формируется
modsize целое число
-1
или
от 1
размер модуля
modsize x modsize

если не указан или -1, то 4
margin целое число
от 0
размер свободной зоны в модулях,
если не указан, то 4 модуля

2. Возвращаемый объект qrcode

2.1. Свойства qrcode

свойство значение содержание
text заданное исходный текст
mode
ecclversion
mask
заданное
или
подобранное
параметры сформированной матрицы QR-кода
modsize
margin
заданно
или
по умолчанию
параметры сформированной матрицы QR-кода
и параметры изображения QR-кода
image заданное формат изображения QR-кода
или
'NONE'
matrix массив [у][х]
у-индекс колонки,
х-индекс строки
матрица QR-кода
где значение элемента матрицы соответствует цвету изображения модуля:
0 - белый,
1 - черный
result HTML элемент
или
''
изображение QR-кода в заданом формате
или
пустая строка в случае ошибки, или когда был задан параметр image === 'NONE'
error имя свойства
или
''
имя свойства, значение которого вызвало ошибку
или
пустая строка при отстутствии ошибок
errorSubcode строка
с целочисленным
цифроовым кодом
или
''
код, поясняющий ошибку
или
пустая строка при отстутствии ошибок

2.2. Методы qrcode

qrcode.image = newImage

newImage
новое значение формата изображения
При изменении текущего формата qrcode.image на новое значение newImage происходит переформирование изображения.

Процесс может вызвать ошибку:
qrcode.error === "image".


qrcode.download (filename, image)

Вызывает скачивание изображения QR-кода в виде файла с именем filename в формате image.

filename
Имя файла для скачивания изображения, включая расширение.

Если параметр filename не задан или filename === '', то filename примает значение по умолчанию:
-'qrcode.png' при qrcode.image === 'PNG'
-'qrcode.svg' при qrcode.image === 'SVG'
-'qrcode.html' при qrcode.image === 'HTML'

image
Формат файла изображения QR-кода.

Если параметр image не задан, то приниматся текущее значение qrcode.image.

Если параметр image указан, то до вывода изображение переформируется ( соответствует методу qrcode.image = newImage).

Если при переформировании изображения произошла ошибка qrcode.error !== "" или задан формат qrcode.image === 'NONE' и, соответственно, отсутствует результат qrcode.result === '', то запрос на скачиваение файла не выполняется.


qrcode.clearError()

Очистка сообщения об ошибке qrcode.error и qrcode.errorSubcode.

При наличии ошибок формирования изображения, методы: qrcode.image = newImage и qrcode.download(filename, image) не работают, пока сообщение не будет обработано и (или) очищено qrcode.clearError()


2.3. Типы и подкоды ошибок

error errorSubcode содержание
text 1 недопустимый формат строки для кодирования
text 2 не указан текст для кодирования
text 3 текст содержит недопустимые символы
mode 1 недопустимый или неподдерживаемый метод кодирования
version 1 слишком длинный текст для кодирования
version 2 недопустимая версия
version 3 текст слишком длинный для выбранной версии
eccl 1 недопустимый уровень коррекции ошибок
mask 1 недопустимый шаблон маски
image 1 недопустимый формат изображения для генерации QR-кода
image 2 для вывода в формате PNG необходима поддержка canvas
image 3 недопустимый формат изображения для генерации QR-кода
modsize 1 недопустимый размер модуля
margin 1 недопустимый размер свободной зоны (в модулях)

Данная таблица описания ошибок на русском и английском языках приведена в .\docs\db\lang.json свойтво "qrcreator_error_message".


СОВМЕСТИМОСТЬ С БРАУЗЕРАМИ

Chrome v.106, Firefox v.105, Яндекс.Браузер v.22, Brave v.1.44, Microsoft Edge v.106

ПОЛЕЗНЫЕ ССЫЛКИ

Прообраз от Кана Сонуна qrcode.js

Замечательное пособие QR Code Tutorial

На Хабре Алгоритм генерации QR-кода

От Федерального агентства по техническому регулированию и метрологии Спецификация символики штрихового кода QR Code ISO/IEC 18004:2015

About

Генератор QR-кода на чистом Javascript

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages