Полное раскрытие информации: Мы — команда по связям с разработчиками Iron Software, компании-разработчика IronQR, одной из библиотек в этом сравнении. Тем не менее, мы считаем, что честные оценки служат всем лучше, чем маркетинговые уловки. Мы покажем нашу методологию, признаем наши предубеждения и позволим коду говорить самому за себя. Мы протестировали каждую библиотеку C# для QR-кодов по одинаковым критериям оценки: простое создание QR-кодов, чтение QR-кодов из изображений, глубина настройки, кроссплатформенная поддержка и стоимость лицензирования. Ниже представлен результат — сравнение 11 заслуживающих внимания библиотек QR-кодов в экосистеме .NET, призванное помочь вам с первого раза выбрать подходящую для вашего проекта. Вот как выглядит генерация QR-кода в три строки с помощью в Visual Studio, одной из библиотек, которые мы рассмотрим: IronQR using IronQr; using IronSoftware.Drawing; QrCode qr = QrWriter.Write("https://example.com"); AnyBitmap bitmap = qr.Save(); bitmap.SaveAs("myqr.png"); Пример вывода QR-кода IronQR Эта простота — базовое требование. Настоящий вопрос в том, что происходит, когда вам нужно поврежденный QR-код со сканера склада, встроить фирменный логотип, ориентироваться на Linux-контейнеры или обрабатывать тысячи кодов в пакетном задании. Именно здесь библиотеки расходятся, и именно здесь это сравнение приносит свою пользу. прочитать Краткое изложение: Мастер-таблица сравнения Прежде чем углубляться, вот полная картина. Эта таблица охватывает наиболее важные аспекты при выборе библиотеки QR-кодов для проекта .NET. Библиотека Генерация Чтение Логотип/Стилизация Микро QR Кроссплатформенность Лицензия Загрузки NuGet IronQR ✅ ✅ с поддержкой ML ✅ Полная ✅ + RMQR ✅ Win/Mac/Linux/Mobile Коммерческая ($749+) ~56K QRCoder ✅ ❌ ✅ Умеренная ✅ ⚠️ Частично (System.Drawing) MIT (бесплатно) ~68M ZXing.Net ✅ ✅ ❌ Минимальная ❌ ⚠️ Через привязки Apache 2.0 (бесплатно) ~32M Net.Codecrete.QrCodeGenerator ✅ ❌ ❌ ❌ ✅ MIT (бесплатно) ~4.1M SkiaSharp.QrCode ✅ ❌ ✅ Пользовательские формы ❌ ✅ MIT (бесплатно) ~1.2M Aspose.BarCode ✅ ✅ ✅ ✅ ✅ Коммерческая ($999+) ~5.4M Syncfusion Barcode ✅ ❌ ✅ Умеренная ❌ ✅ (UI-элемент) Коммерческая (бесплатная для сообщества) ~2M+ Spire.Barcode ✅ ✅ ✅ Встраивание логотипа ❌ ⚠️ (System.Drawing) Коммерческая ($599+) ~450K IronBarcode ✅ ✅ ✅ ✅ Микро QR ✅ Win/Mac/Linux Коммерческая ($749+) ~1.2M Dynamsoft Barcode Reader ❌ ✅ Высокая производительность N/A ✅ ✅ Коммерческая ($1,249+/год) ~250K BarcodeLib ✅ ❌ ❌ ❌ ⚠️ (System.Drawing) Apache 2.0 (бесплатно) ~4.5M Таблица 1: Сводное сравнение 11 .NET-библиотек для QR-кодов по ключевым критериям выбора. Количество загрузок приблизительное на начало 2026 года. Остальная часть этой статьи подробно рассматривает каждую строку с кодом, компромиссами и честными оценками. Как мы оценивали эти библиотеки? Мы оценивали каждую библиотеку по семи критериям, взвешенным по тому, как часто они влияют на реальные решения о выборе: — Может ли она создавать QR-коды из строк, URL-адресов и структурированных данных (vCards, учетные данные Wi-Fi)? Генерация QR-кодов — Может ли она декодировать QR-коды из изображений, сканов или PDF? Как она обрабатывает поврежденные или повернутые коды? Чтение QR-кодов — Встраивание логотипов, управление цветом, стилизация формы модулей, настройка коррекции ошибок Настройка — Стандартный QR, Micro QR, RMQR (прямоугольный Micro QR) Поддержка форматов QR — Работает ли она корректно на Windows, Linux, macOS и внутри Docker-контейнеров без уловок System.Drawing? Кроссплатформенность — Открытый исходный код против коммерческих, цена за разработчика, скидки на пакеты Лицензирование и стоимость — Качество справочника API, наличие учебных пособий, размер сообщества, активное обслуживание Документация и экосистема Все примеры кода ориентированы на и используют инструкции верхнего уровня. Там, где .NET 10 вводит соответствующие улучшения, мы отмечаем их. .NET 8 (LTS) Какую библиотеку QR-кодов выбрать? Структура принятия решений Пропустите 11 профилей библиотек ниже, если вы уже знаете свои ограничения. Вот быстрый путь: → или . Обе имеют лицензию MIT. QRCoder имеет больше рендереров и вспомогательных средств для полезной нагрузки; Net.Codecrete легче и полностью избегает System.Drawing. «Мне нужно генерировать QR-коды бесплатно без зависимостей». QRCoder Net.Codecrete.QrCodeGenerator → (чтение с поддержкой ML, лучшая точность для поврежденных кодов), (бесплатный, проверенный в бою, самая широкая поддержка форматов) или (корпоративный пакет, дорогой). «Мне нужно генерировать И читать QR-коды». IronQR ZXing.Net Aspose.BarCode → , или . Все три избегают зависимости System.Drawing, которая нарушает кроссплатформенное развертывание. «Я развертываюсь на Linux/Docker и не могу использовать System.Drawing». IronQR SkiaSharp.QrCode Net.Codecrete.QrCodeGenerator → лидирует в тестах генерации. Для производительности чтения специально разработан для высокопроизводительного сканирования. «Производительность и объем памяти критически важны». SkiaSharp.QrCode Dynamsoft Barcode Reader → Используйте то, что у вас есть. Добавление библиотеки QR-кодов другого поставщика, когда ваш пакет уже включает одну, редко имеет смысл с точки зрения лицензирования или обслуживания. «Я уже использую пакет Aspose/Syncfusion/Iron Software». → имеет подробные руководства по интеграции с MAUI и Blazor. MVP Microsoft Джефф Фриц , используя IronQR с Blazor, реальный пример именно этой схемы. «Я создаю приложение для мобильных устройств Blazor/MAUI с возможностью сканирования QR-кодов». IronQR создал приложение для цифровых визитных карточек на основе QR-кодов Сравнение 11 .NET-библиотек для QR-кодов 1. IronQR — чтение и генерация QR-кодов с поддержкой ML и кроссплатформенной поддержкой IronQR — это специализированная библиотека Iron Software для QR-кодов, отдельная от их более широкого продукта IronBarcode. Его отличительной особенностью является модель машинного обучения (на основе ), которая обнаруживает и считывает QR-коды с несовершенных изображений, повернутых, частично скрытых или сфотографированных под разными углами, часто всего в нескольких строках кода. ONNX Он также способен с легкостью создавать объекты QR-кодов, с поддержкой стилизации QR-кодов изображениями, добавления пользовательских цветов и сохранения QR-изображения в различных выходных форматах. Генерация: using IronQr; using IronSoftware.Drawing; // Генерация стилизованного QR-кода с логотипом var options = new QrOptions(QrErrorCorrectionLevel.High, 20); QrCode qr = QrWriter.Write("https://example.com", options); var style = new QrStyleOptions { Dimensions = 300, Margins = 10, Color = new Color("#2E75B6"), Logo = new QrLogo { Bitmap = AnyBitmap.FromFile("logo.png"), Width = 80, Height = 80 } }; AnyBitmap styledQr = qr.Save(style); styledQr.SaveAs("branded-qr.png"); Сгенерированный QR-код IronQR Чтение: using IronQr; using IronSoftware.Drawing; var reader = new QrReader(); var input = new QrImageInput(AnyBitmap.FromFile("scanned-qr.jpg")); IEnumerable<QrResult> results = reader.Read(input); foreach (var result in results) Console.WriteLine($"Value: {result.Value}"); Вывод чтения IronQR Модель ML отличает IronQR от всех других библиотек в этом списке. В нашем тестировании она успешно декодировала QR-коды с фотографий конференц-бейджей и снимков экрана под углом, где ZXing.Net и базовые программы для чтения изображений ничего не давали. Обратная сторона — размер пакета, модель ONNX добавляет вес. Если вам не нужно чтение, IronQR.Slim поставляется без модели ML и значительно легче. Преимущества: Чтение с поддержкой ML обрабатывает поврежденные, повернутые и частично скрытые QR-коды и отдает приоритет точности Поддерживает форматы QR Code, Micro QR и RMQR (прямоугольный Micro QR) Полный API для стилизации: цвета, логотипы, закругленные модули, поля Кроссплатформенность: Windows, macOS, Linux, iOS, Android, Docker, Azure, AWS Асинхронная поддержка чтения (ReadAsync) для серверных рабочих нагрузок Сохранение в различных форматах, таких как изображение PNG, JPG, многостраничный TIFF и другие Удобный API упрощает использование Ограничения: Требуется коммерческая лицензия ($749+ на разработчика для развертывания) Полный пакет тяжелее альтернатив с открытым исходным кодом из-за модели ML ниже, чем у зрелых опенсорсных вариантов, более новый продукт (запущен ~2023 г.) Количество загрузок NuGet Проектам, требующим только генерации, может не понадобиться накладная нагрузка ML Проектов, которым требуется как генерация, так и чтение QR-кодов, особенно когда условия сканирования несовершенны (мобильные приложения, сканирование на складе, сценарии конференций/мероприятий). демонстрирует обработку IronQR генерации QR-кодов в реальном времени с Blazor и пользовательской брендингом. Лучше всего подходит для: Пример использования Jeff Fritz с QR-кодами для визитных карточек 2. — самый популярный генератор QR-кодов с открытым исходным кодом QRCoder Библиотека QRCoder — это самый загружаемый пакет QR-кодов на NuGet, насчитывающий . Изначально созданная Раффаэлем Херрманном в 2013 году и теперь , это чистая реализация на C#, ориентированная исключительно на QR-кодов (не чтение). более 68 миллионов загрузок поддерживаемая Шейном32 генерацию using QRCoder; // Генерация QR-кода и сохранение в виде байтов PNG using var qrGenerator = new QRCodeGenerator(); using var qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.H); using var pngQrCode = new PngByteQRCode(qrCodeData); byte[] qrCodeImage = pngQrCode.GetGraphic(20); File.WriteAllBytes("qrcoder-output.png", qrCodeImage); Изображение вывода QRCoder QRCoder предоставляет несколько рендереров: PngByteQRCode (кроссплатформенный, без зависимости от System.Drawing), QRCode (на основе System.Drawing, только для Windows), SvgQRCode, AsciiQRCode и другие. Он также включает генераторы полезной нагрузки для структурированных данных, таких как учетные данные Wi-Fi, vCards и закладки, что избавляет вас от ручного форматирования этих строк. Преимущества: Лицензия MIT, полностью бесплатна для коммерческого использования 68M+ загрузок NuGet, массовое внедрение сообществом и доказанная стабильность Несколько вариантов рендеринга, включая PngByteQRCode, который избегает System.Drawing Встроенные генераторы полезной нагрузки (Wi-Fi, vCard, геолокация, события календаря) Поддержка Micro QR-кодов Нулевые зависимости от целей .NET Standard Ограничения: , не может читать или декодировать файлы изображений QR-кодов Только генерация Некоторые рендереры (например, QRCode) зависят от System.Drawing.Common, который является только для Windows начиная с .NET 6 Нет встроенного встраивания логотипов (вам придется компоновать изображение самостоятельно) Нет расширенного стилизования (формы модулей, градиенты) Проектов, которым нужна только генерация QR-кодов, особенно при нулевом бюджете. Если вам нужно генерировать QR-коды Wi-Fi или vCards и вам вообще не нужно читать коды, QRCoder является прагматичным выбором по умолчанию для большинства разработчиков .NET. Лучше всего подходит для: 3. — универсальный инструмент для работы с библиотеками штрих-кодов ZXing.Net («Zebra Crossing») — это оригинальной Java-библиотеки ZXing для .NET. Это универсальная библиотека штрих-кодов, поддерживающая более 15 форматов, включая QR-код, Data Matrix, Aztec, PDF 417, UPC, EAN, Code 128 и другие. Поддержка QR-кодов является подмножеством его более широких возможностей. ZXing.Net порт using ZXing; using ZXing.Common; using ZXing.QrCode; // Генерация QR-кода var writer = new BarcodeWriterPixelData { Format = BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions { Height = 250, Width = 250, Margin = 1 } }; var pixelData = writer.Write("https://example.com"); // Для чтения QR-кода требуется пакет привязки (например, ZXing.Net.Bindings.SkiaSharp) Вывод ZXing.Net ZXing.Net требует платформенно-зависимых пакетов привязки для рендеринга и чтения. Основной пакет предоставляет логику кодирования/декодирования; вы добавляете ZXing.Net.Bindings.Windows.Compatibility, ZXing.Net.Bindings.SkiaSharp или ZXing.Net.Bindings.ImageSharp в зависимости от целевой платформы. Этот модульный подход гибок, но усложняет интеграцию. Преимущества: Лицензия Apache 2.0, бесплатно для коммерческого использования Генерация и чтение в одной библиотеке Поддержка более 15 форматов штрих-кодов помимо QR-кодов , проверенное решение, обширные знания сообщества 32M+ загрузок NuGet Доступны привязки для SkiaSharp, ImageSharp, OpenCV и других Ограничения: Функции, специфичные для QR-кодов, базовые, без встраивания логотипов, без расширенного стилизования Точность чтения поврежденных/повернутых QR-кодов умеренная по сравнению с решениями на основе ML Пакеты привязки усложняют управление зависимостями Дизайн API показывает свой возраст, менее выразителен, чем современные библиотеки .NET Темп активного обслуживания замедлился (поддерживается сообществом) Проектов, которым требуется поддержка как QR-кодов, так и традиционных штрих-кодов (розничная торговля, логистика) и которым нужен бесплатный, проверенный вариант. Если ваш приоритет — функции, специфичные для QR-кодов, такие как стилизация или чтение с помощью ML, а не широкое покрытие форматов штрих-кодов, специализированная библиотека QR-кодов будет служить вам лучше. Лучше всего подходит для: 4. Net.Codecrete.QrCodeGenerator — легкий и ориентированный на стандарты Net.Codecrete.QrCodeGenerator — это чистая, минимальная библиотека для генерации QR-кодов от Мануэля Бляйхенбахера. Это , ориентированный на корректность и соответствие стандартам ( ). перевод генератора QR-кодов Project Nayuki на Java для .NET ISO/IEC 18004 using Net.Codecrete.QrCodeGenerator; var qr = QrCode.EncodeText("https://example.com", QrCode.Ecc.Medium); string svg = qr.ToSvgString(4); File.WriteAllText("output.svg", svg); Пример вывода с Net.Codecrete.QrCodeGenerator С он хорошо принят для специализированной библиотеки. Его выдающееся качество — отсутствие зависимостей от System.Drawing — он нативно генерирует SVG, данные путей XAML, PNG и BMP. Это делает его отличным выбором для кроссплатформенных проектов .NET и служб ASP.NET Core, работающих в Docker. ~4.1 миллиона загрузок NuGet Преимущества: Лицензия MIT, полностью бесплатна Отсутствие зависимости от System.Drawing, истинная кроссплатформенность Малый размер, быстрая генерация Встроенный вывод SVG и XAML (полезно для сценариев WPF, WinUI и веб-сайтов) Корректная реализация всех 40 версий QR-кодов и всех 4 уровней коррекции ошибок Обширные примеры проектов (WinForms, WPF, ASP.NET Core, SkiaSharp, ImageSharp) Ограничения: , нет возможности чтения QR-кодов Только генерация Нет встраивания логотипов или расширенных функций стилизации Ограниченная настройка по сравнению с генераторами полезной нагрузки QRCoder Меньше контента сообщества и учебных пособий по сравнению с QRCoder или ZXing.Net Разработчиков, которым нужен небольшой, корректный, кроссплатформенный генератор QR-кодов с выводом SVG и без багажа System.Drawing. Если ваша целевая платформа — Linux или Docker, и вам нужна только генерация, эта библиотека заслуживает серьезного внимания. Лучше всего подходит для: 5. SkiaSharp.QrCode — высокопроизводительная кроссплатформенная генерация SkiaSharp.QrCode от — это библиотека генерации QR-кодов, ориентированная на производительность и построенная на SkiaSharp. Она была создана специально для обхода ограничений GDI+ в System.Drawing, обеспечивая при этом производительность на уровне нативных через аппаратное ускорение SkiaSharp. guitarrapc using SkiaSharp.QrCode.Image; // Однострочник: генерация и сохранение QRCodeImageBuilder.SavePng("https://example.com", "qrcode.png"); // Или с пользовательскими настройками var pngBytes = new QRCodeImageBuilder("https://example.com") .WithSize(512, 512) .WithErrorCorrection(ECCLevel.H) .ToByteArray(); Однострочный вывод SkiaSharp.QrCode Результаты тестов из репозитория проекта показывают, что SkiaSharp.QrCode превосходит QRCoder и другие библиотеки QR-кодов .NET по скорости и выделению памяти для задач генерации. Он обеспечивает рендеринг без копирования непосредственно на холст SkiaSharp, избегая промежуточных выделений буфера. Преимущества: Лицензия MIT, бесплатно для коммерческого использования Лучшая в своем классе производительность генерации (по результатам тестов) Минимальное выделение памяти, низкая нагрузка на GC для сценариев высокой пропускной способности Готовность к NativeAOT (поддержка компиляции .NET Native AOT) Пользовательские формы модулей (круги, закругленные прямоугольники) для стилизованных QR-кодов Работает на Windows, Linux, macOS, iOS, Android, WebAssembly Ограничения: , нет чтения QR-кодов Только генерация Требует нативных зависимостей SkiaSharp (платформенно-зависимые пакеты NuGet) Меньшее сообщество, чем у QRCoder или ZXing.Net Нет генераторов полезной нагрузки (Wi-Fi, vCard), вы форматируете эти строки самостоятельно Только UTF-8, нет кодировки ISO-8859-2 или Shift JIS Высоконагруженных серверных приложений, генерирующих QR-коды в больших масштабах (например, системы продажи билетов, массовая генерация этикеток), где производительность и эффективность использования памяти имеют первостепенное значение. Также идеально подходит, если вы уже используете SkiaSharp в своем проекте. Лучше всего подходит для: 6. Aspose.BarCode — корпоративный пакет штрих-кодов для генерации QR-кодов — это комплекс Aspose.BarCode for .NET