C#
Генерация QR-кода C#: простой путь через NuGet-пакет
Генерация QR-кода в C# обычно делается через готовую библиотеку из NuGet. Сам язык C# не содержит встроенного генератора QR-кодов, поэтому практичный путь такой: создать проект, установить пакет, передать строку или ссылку, получить изображение и сохранить его в файл. Для учебного примера удобно использовать пакет QRCoder
Создайте проект
dotnet new console -n QrDemo
cd QrDemo
Установите пакет:
dotnet add package QRCoder
Если команда прошла успешно, пакет добавится в .csproj, и код сможет использовать классы библиотеки
Базовая идея
QR-код кодирует текст. Это может быть ссылка, номер заказа, email, короткая команда, строка подключения к Wi-Fi. Но не стоит пихать в QR все подряд: чем длиннее строка, тем плотнее код и тем хуже он читается
Простой сценарий:
- Подготовить текст.
- Создать данные QR.
- Сгенерировать изображение.
- Сохранить PNG.
Пример кода
В разных версиях библиотек API может немного отличаться, поэтому ориентируйтесь на документацию выбранного пакета. Типовой пример выглядит так:
using QRCoder;
string text = "https://aglamov.biz";
using QRCodeGenerator generator = new();
using QRCodeData data = generator.CreateQrCode(text, QRCodeGenerator.ECCLevel.Q);
using PngByteQRCode qrCode = new(data);
byte[] bytes = qrCode.GetGraphic(20);
File.WriteAllBytes("qr.png", bytes);
Console.WriteLine("QR-код сохранен в qr.png");
После запуска в папке проекта появится файл qr.png
Как запустить
dotnet run
Если файл не появился, проверьте ошибки в терминале и убедитесь, что пакет установлен. Также проверьте, что программа имеет право записывать файл в текущую папку
Что проверять перед генерацией
Перед созданием QR-кода проверьте строку:
if (string.IsNullOrWhiteSpace(text))
{
Console.WriteLine("Нельзя создать QR-код из пустой строки");
return;
}
Если генерируете QR для ссылки, отдельно проверьте, что ссылка начинается с https:// или http://
if (!text.StartsWith("https://") && !text.StartsWith("http://"))
{
Console.WriteLine("Для ссылки укажите полный адрес");
return;
}
Еще одна рабочая проверка — имя файла. Не сохраняйте все QR-коды в один и тот же qr.png, если программа будет использоваться больше одного раза. Для учебного проекта можно добавить дату или короткий идентификатор заказа. Для сайта или CRM лучше хранить QR-код рядом с сущностью, для которой он создан: заказом, билетом, клиентской ссылкой или складской меткой
Где использовать
QR-код может пригодиться для билета, заказа, страницы оплаты, визитки, инструкции, ссылки на файл, внутренней складской метки. Но если QR ведет на важное действие, например оплату, нельзя полагаться только на картинку. Нужна серверная проверка, срок действия и защита от подмены
Если QR-код показывается пользователю в интерфейсе, заранее проверьте размер изображения. Слишком маленький код плохо сканируется, а слишком большой ломает верстку формы или страницы. В консольном примере это не критично, но в WinForms, WPF или ASP.NET Core обычно стоит ограничить размер блока и протестировать код обычным телефоном
Частые ошибки
Первая ошибка — искать встроенный QRCode в стандартной библиотеке C#. Вторая — генерировать слишком длинный текст. Третья — сохранять файл в неожиданную папку. Четвертая — не проверять строку перед генерацией. Пятая — использовать QR как «секрет», хотя любой человек может его отсканировать
Мини-задача: сделайте программу, которая спрашивает ссылку в консоли, проверяет, что строка не пустая, и сохраняет QR-код в файл link-qr.png
Что почитать дальше по C#
- JSON и файлы в C#
- C# с нуля: первый проект через dotnet new
- Ошибки C#: cannot convert, null reference и missing using
- Рубрика C#
Что почитать дальше по C#
Если нужен общий маршрут по теме, откройте рубрику C#. Для соседних задач пригодятся эти разборы:
- C# с нуля: первый проект через dotnet new
- Как установить .NET SDK для C#
- Классы и свойства в C#: первый пример
- Типы, переменные и строки в C#