Генератор 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