Генератор QR-кодов на C# (.NET) с помощью QRCoder

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

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

Начать курс

Генератор QR-кодов на C# (.NET) с библиотекой QRCoder

QR-коды стали неотъемлемой частью современного веба и мобильных приложений. Они используются для быстрой передачи ссылок, контактных данных, Wi-Fi паролей, платежных реквизитов и многого другого. В экосистеме C# (.NET) одной из самых популярных и простых в использовании библиотек для генерации QR-кодов является QRCoder. В этой статье мы подробно разберём, как установить библиотеку, создать простой и сложный QR-код, а также сохранить его в различных форматах (PNG, SVG).

Что такое QRCoder?

QRCoder — это легковесная, высокопроизводительная библиотека с открытым исходным кодом для .NET (поддерживает .NET Framework 4.6+ и .NET Core/.NET 5+). Она не требует внешних зависимостей, кроме стандартной библиотеки System.Drawing для растровых изображений. Основные возможности:

  • Генерация QR-кодов из текста, URL, контактов (vCard), Wi-Fi настроек, SMS, email и других форматов.
  • Настройка уровня коррекции ошибок (L, M, Q, H).
  • Выбор версии QR-кода (размера матрицы).
  • Экспорт в PNG, BMP, SVG, XAML, EPS, PostScript и HTML.
  • Поддержка цветов, фона, прозрачности и пользовательских логотипов.

Установка в проекте C#

Установка библиотеки QRCoder осуществляется через NuGet Package Manager. Откройте консоль диспетчера пакетов или используйте .NET CLI:

dotnet add package QRCoder

Или через Package Manager Console:

Install-Package QRCoder

Базовый пример — генерация простого QR-кода

Создадим консольное приложение, которое генерирует QR-код для строки "https://pythonlib.ru" и сохраняет его в файл PNG.

using QRCoder;
using System.Drawing;

string url = "https://pythonlib.ru";
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(url, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);

// Генерация изображения (пиксели)
Bitmap qrCodeImage = qrCode.GetGraphic(20);

// Сохранение в файл
qrCodeImage.Save("qrcode.png", System.Drawing.Imaging.ImageFormat.Png);

Console.WriteLine("QR-код создан: qrcode.png");

В этом примере:

  • ECCLevel.Q — уровень коррекции ошибок (25% данных могут быть повреждены).
  • GetGraphic(20) — размер одного модуля (квадратика) в пикселях.
  • Результат — чёрно-белый PNG.

Настройка внешнего вида — цвет, логотип, SVG

QRCoder позволяет гибко настраивать внешний вид QR-кода. Рассмотрим пример с цветным фоном, тёмными модулями и встроенным логотипом.

using QRCoder;
using System.Drawing;

string data = "https://pythonlib.ru";
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(data, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);

// Настройка цвета
Color darkColor = Color.FromArgb(52, 73, 94);   // тёмно-синий
Color lightColor = Color.FromArgb(236, 240, 241); // светло-серый

// Генерация с логотипом (логотип должен быть в центре)
Bitmap logo = new Bitmap("logo.png");
Bitmap qrCodeImage = qrCode.GetGraphic(20, darkColor, lightColor, logo);

qrCodeImage.Save("qrcode_color.png", System.Drawing.Imaging.ImageFormat.Png);
Console.WriteLine("Цветной QR-код с логотипом сохранён.");

Обратите внимание: для корректной работы с логотипом рекомендуется использовать уровень коррекции ошибок ECCLevel.Q или ECCLevel.H, так как логотип перекрывает часть данных.

Экспорт в SVG (векторный формат)

Если вам нужен масштабируемый QR-код (например, для печати), используйте SVG-рендерер. Для этого установите дополнительный пакет QRCoder.Svg:

dotnet add package QRCoder.Svg

Пример генерации SVG:

using QRCoder;

string data = "https://pythonlib.ru";
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCode                    

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