Полное раскрытие информации: Мы — команда по работе с разработчиками Iron Software, компании-разработчика IronQR, одной из библиотек в этом сравнении. Тем не менее, мы считаем, что честные оценки приносят всем больше пользы, чем маркетинговые уловки. Мы покажем нашу методологию, признаем наши предубеждения и позволим коду говорить самому за себя. Мы проверили каждую библиотеку QR-кодов на C# по одинаковым критериям оценки: простое создание 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-контейнеры или обрабатывать тысячи кодов в пакетном задании. Именно здесь библиотеки расходятся, и именно здесь это сравнение приносит свою пользу. прочитать TL;DR: Основная таблица сравнения Прежде чем углубляться, вот полная картина. Эта таблица отражает измерения, которые наиболее важны при выборе библиотеки QR-кодов для проекта .NET. Библиотека Генерация Чтение Логотип/Стилизация Микро QR Кроссплатформенность Лицензия Загрузки NuGet IronQR ✅ ✅ на базе ML ✅ Полная ✅ + RMQR ✅ Win/Mac/Linux/Mobile Коммерческая (от 749 долларов США) ~56 тыс. QRCoder ✅ ❌ ✅ Умеренная ✅ ⚠️ Частично (System.Drawing) MIT (бесплатно) ~68 млн ZXing.Net ✅ ✅ ❌ Минимальная ❌ ⚠️ Через привязки Apache 2.0 (бесплатно) ~32 млн Net.Codecrete.QrCodeGenerator ✅ ❌ ❌ ❌ ✅ MIT (бесплатно) ~4,1 млн SkiaSharp.QrCode ✅ ❌ ✅ Пользовательские формы ❌ ✅ MIT (бесплатно) ~1,2 млн Aspose.BarCode ✅ ✅ ✅ ✅ ✅ Коммерческая (от 999 долларов США) ~5,4 млн Syncfusion Barcode ✅ ❌ ✅ Умеренная ❌ ✅ (UI-элемент) Коммерческая (бесплатная для сообщества) ~2 млн+ Spire.Barcode ✅ ✅ ✅ Встраивание логотипа ❌ ⚠️ (System.Drawing) Коммерческая (от 599 долларов США) ~450 тыс. IronBarcode ✅ ✅ ✅ ✅ Микро QR ✅ Win/Mac/Linux Коммерческая (от 749 долларов США) ~1,2 млн Dynamsoft Barcode Reader ❌ ✅ Высокая производительность Нет данных ✅ ✅ Коммерческая (от 1 249 долларов США/год) ~250 тыс. BarcodeLib ✅ ❌ ❌ ❌ ⚠️ (System.Drawing) Apache 2.0 (бесплатно) ~4,5 млн Таблица 1: Основное сравнение 11 библиотек QR-кодов .NET по ключевым критериям выбора. Количество загрузок приблизительное по состоянию на начало 2026 года. Остальная часть этой статьи подробно рассматривает каждую строку с кодом, компромиссами и честными оценками. Как мы оценивали эти библиотеки? Мы оценивали каждую библиотеку по семи критериям, взвешенным по частоте, с которой они влияют на реальные решения о выборе: — Может ли она создавать QR-коды из строк, URL-адресов и структурированных данных (vCard, учетные данные Wi-Fi)? Генерация QR-кодов — Может ли она декодировать QR-коды из изображений, сканов или PDF-файлов? Как она обрабатывает поврежденные или повернутые коды? Чтение QR-кодов — Встраивание логотипов, управление цветом, стилизация форм модулей, конфигурация коррекции ошибок Настройка — Стандартный QR, Микро QR, RMQR (прямоугольный Микро 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 библиотек QR-кодов .NET 1. IronQR — Чтение и генерация QR-кодов с помощью ML и кроссплатформенная поддержка IronQR — это специализированная библиотека QR-кодов от Iron Software, отдельная от их более широкого продукта 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 (прямоугольный Микро QR) Полный API стилизации: цвета, логотипы, скругленные модули, поля Кроссплатформенность: Windows, macOS, Linux, iOS, Android, Docker, Azure, AWS Асинхронная поддержка чтения (ReadAsync) для серверных рабочих нагрузок Сохранение в различных форматах, таких как изображение PNG, JPG, многостраничный TIFF и другие Удобный API упрощает использование Ограничения: Требуется коммерческая лицензия (от 749 долларов США на разработчика для развертывания) Полный пакет тяжелее альтернатив с открытым исходным кодом из-за модели ML ниже, чем у зрелых решений с открытым исходным кодом, новый продукт (выпущен ~2023 г.) Количество загрузок NuGet Для проектов, предназначенных только для генерации, может не потребоваться дополнительный вес ML Проектов, которым требуется как генерация, так и чтение, особенно когда условия сканирования несовершенны (мобильные приложения, складское сканирование, сценарии конференций/мероприятий). демонстрирует IronQR, обрабатывающий генерацию QR-кодов в реальном времени с Blazor и пользовательским брендингом. Лучше всего подходит для: Кейс Джеффа Фрица с 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, vCard и закладки, что позволяет избежать ручного форматирования этих строк. Сильные стороны: Лицензия MIT, полностью бесплатна для коммерческого использования 68+ миллионов загрузок NuGet, огромное принятие сообществом и проверенная стабильность Несколько вариантов рендеринга, включая PngByteQRCode, который избегает System.Drawing Встроенные генераторы полезной нагрузки (Wi-Fi, vCard, геолокация, события календаря) Поддержка микро QR-кодов Нулевые зависимости от целевых .NET Standard Ограничения: , не может читать или декодировать файлы изображений QR-кодов Только генерация Некоторые рендереры (например, QRCode) зависят от System.Drawing.Common, который доступен только для Windows начиная с .NET 6 Нет встроенного встраивания логотипов (вам придется создавать изображение самостоятельно) Нет продвинутой стилизации (формы модулей, градиенты) Проектов, которым нужна только генерация QR-кодов, особенно когда бюджет нулевой. Если вам нужно генерировать QR-коды Wi-Fi или vCard и вообще не нужно читать коды, QRCoder является прагматичным выбором по умолчанию для большинства разработчиков .NET. Лучше всего подходит для: 3. — Швейцарский армейский нож среди библиотек штрих-кодов ZXing.Net («Zebra Crossing») — это оригинальной Java-библиотеки ZXing. Это универсальная библиотека штрих-кодов, поддерживающая более 15 форматов, включая QR-код, Data Matrix, Aztec, PDF 417, UPC, EAN, Code 128 и другие. Поддержка QR-кодов является подмножеством ее более широких возможностей. ZXing.Net порт для .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-кодов , проверено в бою, обширные знания сообщества 32+ миллиона загрузок NuGet Доступны привязки для SkiaSharp, ImageSharp, OpenCV и других Ограничения: Функции, специфичные для QR-кодов, базовые, нет встраивания логотипов, нет продвинутой стилизации Точность чтения поврежденных/повернутых QR-кодов умеренная по сравнению с решениями на базе ML Пакеты привязки усложняют управление зависимостями Дизайн API выглядит устаревшим, менее плавный, чем у современных библиотек .NET Темп активного обслуживания замедлился (поддерживается сообществом) Проектов, которым требуется поддержка как QR-кодов, так и традиционных штрих-кодов (розничная торговля, логистика) и нужен бесплатный, проверенный вариант. Если ваш приоритет — функции, специфичные для QR-кодов, такие как стилизация или чтение на базе ML, а не широкий охват форматов штрих-кодов, специализированная библиотека QR-кодов будет служить вам лучше. Лучше всего подходит для: 4. Net.Codecrete.QrCodeGenerator — Легкий и ориентированный на стандарты Net.Codecrete.QrCodeGenerator — это чистая, минимальная библиотека генерации QR-кодов от Мануэля Блайхенбахера. Это , сфокусированный на корректности и соответствии стандартам ( ). перевод Java-генератора QR-кодов Project Nayuki на .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, бесплатно для коммерческого использования Лучшая в своем классе производительность генерации (по результатам бенчмарков) Минимальное выделение памяти, низкое давление на сборщик мусора для сценариев с высокой пропускной способностью Готовность к 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-кодов