Генератор QR-кодов на JavaScript (Node.js) с qrcode и qr-image

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Генерация QR-кодов на Node.js: библиотеки qrcode и qr-image

QR-коды стали неотъемлемой частью современных веб-приложений: от ссылок на сайты и авторизации до передачи контактных данных и платежной информации. В экосистеме Node.js существует несколько зрелых библиотек, которые позволяют генерировать QR-коды без сторонних API и тяжелых графических редакторов. В этой статье мы подробно рассмотрим две самые популярные: qrcode и qr-image. Вы узнаете, как установить каждую, какие форматы вывода они поддерживают, и получите готовые примеры кода для интеграции в свой проект.

1. Библиотека qrcode — универсальный генератор

qrcode — это мощная библиотека с поддержкой JavaScript, TypeScript и даже браузеров. Она позволяет генерировать QR-коды в форматах PNG, SVG, canvas и даже в виде простого текста. Главное преимущество — детальная настройка: вы можете менять цвета, уровень коррекции ошибок, добавлять логотипы и управлять отступами.

Установка

npm install qrcode

Базовый пример: создание PNG-изображения

const QRCode = require('qrcode');

// Простая строка для кодирования
const data = 'https://pythonlib.ru';

QRCode.toFile('qrcode.png', data, {
  color: {
    dark: '#000000',   // цвет модулей (квадратов)
    light: '#FFFFFF'   // цвет фона
  },
  errorCorrectionLevel: 'H' // максимальная коррекция ошибок
}, function (err) {
  if (err) throw err;
  console.log('QR-код сохранен как qrcode.png');
});

Генерация SVG (векторный формат)

const QRCode = require('qrcode');

QRCode.toString('https://pythonlib.ru', {
  type: 'svg',
  color: {
    dark: '#2c3e50',
    light: '#ecf0f1'
  }
}, function (err, svgString) {
  if (err) throw err;
  console.log(svgString); // вывод SVG-разметки в консоль
});

Генерация в буфер (для отправки через HTTP)

const QRCode = require('qrcode');

QRCode.toBuffer('https://pythonlib.ru', {
  type: 'png',
  width: 400,
  margin: 2
}, function (err, buffer) {
  if (err) throw err;
  // buffer — это Buffer объект, который можно отправить как ответ HTTP
  // res.setHeader('Content-Type', 'image/png');
  // res.send(buffer);
});

2. Библиотека qr-image — легковесная альтернатива

qr-image — минималистичная библиотека без лишних зависимостей. Она ориентирована на быструю генерацию PNG, SVG, EPS и даже PDF (через установку дополнительного модуля). Если вам не нужны сложные настройки цвета и логотипы, qr-image станет отличным выбором.

Установка

npm install qr-image

Пример: создание PNG-изображения

const qr = require('qr-image');
const fs = require('fs');

const data = 'https://pythonlib.ru';
const qr_png = qr.image(data, { type: 'png', size: 10 });
qr_png.pipe(fs.createWriteStream('qr-image.png'));

console.log('QR-код сохранен как qr-image.png');

Генерация SVG

const qr = require('qr-image');
const fs = require('fs');

const data = 'https://pythonlib.ru';
const qr_svg = qr.image(data, { type: 'svg', size: 10 });
qr_svg.pipe(fs.createWriteStream('qr-image.svg'));

console.log('QR-код сохранен как qr-image.svg');

Получение строки SVG без сохранения в файл

const qr = require('qr-image');

const data = 'https://pythonlib.ru';
const svgString = qr.imageSync(data, { type: 'svg' });
console.log(svgString); // готовая SVG-разметка

3. Сравнение библиотек

Рекомендаций