Pełne ujawnienie: jesteśmy zespołem ds. relacji z deweloperami w Iron Software, firmie stojącej za IronQR, jedną z bibliotek w tym porównaniu. Mimo to wierzymy, że szczere oceny służą wszystkim lepiej niż marketingowy bełkot. Pokażemy naszą metodologię, przyznamy się do naszych uprzedzeń i pozwolimy kodowi mówić sam za siebie. Przetestowaliśmy każdą bibliotekę kodów QR w języku C# według identycznych kryteriów oceny: proste generowanie kodów QR, odczyt kodów QR z obrazów, głębokość dostosowywania, obsługa wielu platform i koszt licencji. Poniżej znajduje się wynik – porównanie 11 godnych uwagi bibliotek kodów QR w ekosystemie .NET, zaprojektowane, aby pomóc Ci wybrać odpowiednią dla Twojego projektu za pierwszym razem. Oto jak wygląda generowanie kodu QR w trzech liniach za pomocą w Visual Studio, jednej z bibliotek, które omówimy: IronQR using IronQr; using IronSoftware.Drawing; QrCode qr = QrWriter.Write("https://example.com"); AnyBitmap bitmap = qr.Save(); bitmap.SaveAs("myqr.png"); Przykładowy wynik kodu QR IronQR Ta prostota to podstawa. Prawdziwe pytanie brzmi, co się dzieje, gdy trzeba uszkodzony kod QR ze skanera magazynowego, osadzić markowe logo, targetować kontenery Linuksowe lub przetwarzać tysiące kodów w zadaniu wsadowym. Tam właśnie biblioteki się rozchodzą i tam to porównanie zyskuje na wartości. odczytać TL;DR: Tabela Porównawcza Mistrzów Zanim zagłębimy się w szczegóły, oto pełny obraz. Ta tabela przedstawia wymiary, które mają największe znaczenie przy wyborze biblioteki kodów QR dla projektu .NET. Biblioteka Generuj Odczytaj Logo/Stylizacja Mikro QR Wiele platform Licencja Pobrania NuGet IronQR ✅ ✅ Oparte na ML ✅ Pełne ✅ + RMQR ✅ Win/Mac/Linux/Mobile Komeresyjna (749 USD+) ~56 tys. QRCoder ✅ ❌ ✅ Umiarkowane ✅ ⚠️ Częściowe (System.Drawing) MIT (Darmowe) ~68 mln ZXing.Net ✅ ✅ ❌ Minimalne ❌ ⚠️ Poprzez powiązania Apache 2.0 (Darmowe) ~32 mln Net.Codecrete.QrCodeGenerator ✅ ❌ ❌ ❌ ✅ MIT (Darmowe) ~4,1 mln SkiaSharp.QrCode ✅ ❌ ✅ Niestandardowe kształty ❌ ✅ MIT (Darmowe) ~1,2 mln Aspose.BarCode ✅ ✅ ✅ ✅ ✅ Komeresyjna (999 USD+) ~5,4 mln Syncfusion Barcode ✅ ❌ ✅ Umiarkowane ❌ ✅ (Kontrolka UI) Komeresyjna (Darmowa dla społeczności) ~2 mln+ Spire.Barcode ✅ ✅ ✅ Osadzenie logo ❌ ⚠️ (System.Drawing) Komeresyjna (599 USD+) ~450 tys. IronBarcode ✅ ✅ ✅ ✅ Mikro QR ✅ Win/Mac/Linux Komeresyjna (749 USD+) ~1,2 mln Dynamsoft Barcode Reader ❌ ✅ Wysoka wydajność Nie dotyczy ✅ ✅ Komeresyjna (1249 USD+/rok) ~250 tys. BarcodeLib ✅ ❌ ❌ ❌ ⚠️ (System.Drawing) Apache 2.0 (Darmowe) ~4,5 mln Tabela 1: Główne porównanie 11 bibliotek kodów QR .NET w kluczowych kryteriach wyboru. Liczby pobrań są przybliżone na początku 2026 r. Reszta tego artykułu rozbiera każdy wiersz na czynniki pierwsze, z kodem, kompromisami i szczerymi ocenami. Jak Ocenialiśmy Te Biblioteki? Ocenialiśmy każdą bibliotekę pod kątem siedmiu kryteriów, ważonych przez to, jak często wpływają one na decyzje o wyborze w świecie rzeczywistym: — Czy potrafi tworzyć kody QR ze ciągów znaków, adresów URL i danych strukturalnych (vCard, dane uwierzytelniające Wi-Fi)? Generowanie kodów QR — Czy potrafi dekodować kody QR z obrazów, skanów lub plików PDF? Jak radzi sobie z uszkodzonymi lub obróconymi kodami? Odczyt kodów QR — Osadzanie logo, kontrola kolorów, stylizacja kształtu modułów, konfiguracja korekcji błędów Dostosowywanie — Standardowy QR, Mikro QR, RMQR (Prostokątny Mikro QR) Obsługa formatów QR — Czy działa płynnie na Windows, Linux, macOS i w kontenerach Docker bez hacków System.Drawing? Wiele platform — Open-source vs komercyjny, cena za dewelopera, zniżki na pakiety Licencjonowanie i koszt — Jakość dokumentacji API, dostępność samouczków, rozmiar społeczności, aktywne utrzymanie Dokumentacja i ekosystem Wszystkie przykłady kodu kierowane są na i używają instrukcji najwyższego poziomu. Tam, gdzie .NET 10 wprowadza istotne ulepszenia, zaznaczamy je. .NET 8 (LTS) Którą Bibliotekę Kodów QR Wybrać? Struktura Decyzyjna Pomiń 11 profili bibliotek poniżej, jeśli znasz już swoje ograniczenia. Oto szybka ścieżka: → lub . Oba mają licencję MIT. QRCoder ma więcej rendererów i pomocników ładunków; Net.Codecrete jest lżejszy i całkowicie unika System.Drawing. „Potrzebuję generować kody QR za darmo, bez żadnych zależności.” QRCoder Net.Codecrete.QrCodeGenerator → (odczyt oparty na ML, najlepsza dokładność na uszkodzonych kodach), (darmowy, przetestowany w boju, najszersza obsługa formatów) lub (pakiet korporacyjny, drogi). „Muszę zarówno generować, JAK I odczytywać kody QR.” IronQR ZXing.Net Aspose.BarCode → , lub . Wszystkie trzy unikają zależności System.Drawing, która psuje wdrożenia międzyplatformowe. „Wdrażam na Linuksie/Dockera i nie mogę używać System.Drawing.” IronQR SkiaSharp.QrCode Net.Codecrete.QrCodeGenerator → prowadzi w surowych benchmarkach generowania. W kwestii wydajności odczytu, jest przeznaczony do skanowania o wysokiej przepustowości. „Wydajność i wykorzystanie pamięci są krytyczne.” SkiaSharp.QrCode Dynamsoft Barcode Reader → Używaj tego, co masz. Dodanie biblioteki kodów QR innego dostawcy, gdy pakiet już ją zawiera, rzadko ma sens z punktu widzenia licencjonowania lub utrzymania. „Już używam pakietu Aspose/Syncfusion/Iron Software.” → ma dedykowane przewodniki integracji MAUI i Blazor. MVP Microsoftu Jeff Fritz przy użyciu IronQR z Blazor, przykład z życia wzięty tego właśnie wzorca. „Buduję aplikację mobilną Blazor/MAUI ze skanowaniem kodów QR.” IronQR zbudował aplikację wizytówkową opartą na kodach QR Porównanie 11 Bibliotek Kodów QR .NET 1. IronQR — Odczyt i Generowanie Kodów QR Oparte na ML z Obsługą Wielu Platform IronQR to dedykowana biblioteka kodów QR firmy Iron Software, oddzielna od ich szerszego produktu IronBarcode. Jej wyróżniającą cechą jest model uczenia maszynowego (oparty na ), który wykrywa i odczytuje kody QR z niedoskonałych obrazów, obróconych, częściowo zasłoniętych lub sfotografowanych pod dziwnymi kątami, często w zaledwie kilku liniach kodu. ONNX Jest również w stanie z łatwością tworzyć obiekty kodów QR, z obsługą stylizacji kodów QR za pomocą obrazów, dodawania niestandardowych kolorów i zapisywania obrazu kodu QR w różnych formatach wyjściowych. Generowanie: using IronQr; using IronSoftware.Drawing; // Generuj stylizowany kod QR z logo 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"); Wynik Wygenerowanego Kodu QR IronQR Odczyt: 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}"); Wynik Odczytu IronQR Model ML odróżnia IronQR od każdej innej biblioteki na tej liście. W naszych testach z powodzeniem dekodował kody QR ze zdjęć identyfikatorów konferencyjnych i kątowych zrzutów ekranu smartfonów, gdzie ZXing.Net i podstawowe czytniki przetwarzania obrazów niczego nie zwróciły. Kompromisem jest rozmiar pakietu, model ONNX dodaje wagi. Jeśli nie potrzebujesz odczytu, IronQR.Slim jest dostarczany bez modelu ML i jest znacznie lżejszy. Mocne strony: Odczyt oparty na ML obsługuje uszkodzone, obrócone i częściowo zasłonięte kody QR i priorytetuje dokładność Obsługuje formaty QR Code, Micro QR i RMQR (Rectangular Micro QR) Pełne API stylizacji: kolory, logo, zaokrąglone moduły, marginesy Wiele platform: Windows, macOS, Linux, iOS, Android, Docker, Azure, AWS Obsługa asynchronicznego odczytu (ReadAsync) dla obciążeń serwerowych Zapis do wielu formatów, takich jak obrazy PNG, JPG, wielostronicowe TIFF i inne Przyjazny dla użytkownika interfejs API ułatwia korzystanie Ograniczenia: Wymagana licencja komercyjna (749 USD+ na dewelopera za wdrożenie) Pełny pakiet jest cięższy niż alternatywy open-source ze względu na model ML jest niższa niż dojrzałych opcji open-source, nowszy produkt (uruchomiony ~2023) Liczba pobrań NuGet Projekty wyłącznie do generowania mogą nie potrzebować narzutu ML Projektów wymagających zarówno generowania, jak i odczytu, zwłaszcza gdy warunki skanowania są niedoskonałe (aplikacje mobilne, skanowanie magazynowe, scenariusze konferencyjne/eventowe). demonstruje IronQR obsługujący generowanie kodów QR w czasie rzeczywistym za pomocą Blazor i niestandardowej marki. Najlepsze dla: Studium przypadku Jeffa Fritza dotyczącego wizytówek QR 2. — Najpopularniejszy Generator Kodów QR Open-Source QRCoder Biblioteka QRCoder jest najczęściej pobieranym pakietem kodów QR na NuGet, z . Pierwotnie stworzona przez Rafaela Herrana w 2013 roku, a obecnie , jest czystą implementacją C++ skupioną wyłącznie na kodów QR (nie odczycie). ponad 68 milionami pobrań utrzymywana przez Shane'a 32 generowaniu using QRCoder; // Generuj kod QR i zapisz jako bajty 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); Obraz Wyjściowy QRCoder QRCoder zapewnia wiele rendererów: PngByteQRCode (wiele platform, brak zależności System.Drawing), QRCode (oparty na System.Drawing, tylko Windows), SvgQRCode, AsciiQRCode i inne. Zawiera również generatory ładunków dla danych strukturalnych, takich jak dane uwierzytelniające Wi-Fi, vCard i zakładki, co pozwala uniknąć ręcznego formatowania tych ciągów znaków. Mocne strony: Licencja MIT, całkowicie darmowa do użytku komercyjnego Ponad 68 milionów pobrań NuGet, masowa adopcja przez społeczność i udowodniona stabilność Wiele opcji rendererów, w tym PngByteQRCode, który unika System.Drawing Wbudowane generatory ładunków (Wi-Fi, vCard, geolokalizacja, wydarzenia kalendarza) Obsługa kodów Micro QR Brak zależności od celów .NET Standard Ograniczenia: , nie można odczytywać ani dekodować plików obrazów kodów QR Tylko generowanie Niektóre renderery (jak QRCode) zależą od System.Drawing.Common, który jest dostępny tylko w systemie Windows od wersji .NET 6 Brak wbudowanego osadzania logo (należałoby skomponować obraz samodzielnie) Brak zaawansowanej stylizacji (kształty modułów, gradienty) Projektów, które potrzebują tylko generowania kodów QR, zwłaszcza gdy budżet wynosi zero. Jeśli potrzebujesz generować kody QR Wi-Fi lub vCard i w ogóle nie potrzebujesz odczytywać kodów, QRCoder jest pragmatycznym domyślnym wyborem dla większości deweloperów .NET. Najlepsze dla: 3. — Szwajcarski Scyzoryk Bibliotek Kodów Kreskowych ZXing.Net („Zebra Crossing”) to oryginalnej biblioteki ZXing w Javie. Jest to biblioteka ogólnego przeznaczenia obsługująca ponad 15 formatów, w tym QR Code, Data Matrix, Aztec, PDF 417, UPC, EAN, Code 128 i inne. Obsługa kodów QR jest podzbiorem jej szerszych możliwości. ZXing.Net port na .NET using ZXing; using ZXing.Common; using ZXing.QrCode; // Generuj kod 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"); // Odczyt kodu QR wymaga pakietu powiązań (np. ZXing.Net.Bindings.SkiaSharp) Wynik ZXing.Net ZXing.Net wymaga specyficznych dla platformy pakietów powiązań do renderowania i odczytu. Podstawowy pakiet zapewnia logikę kodowania/dekodowania; dodajesz ZXing.Net.Bindings.Windows.Compatibility, ZXing.Net.Bindings.SkiaSharp lub ZXing.Net.Bindings.ImageSharp w zależności od docelowej platformy. To modułowe podejście jest elastyczne, ale zwiększa złożoność integracji. Mocne strony: Licencja Apache 2.0, darmowa do użytku komercyjnego Generowanie i odczyt w jednej bibliotece Obsługuje ponad 15 formatów kodów kreskowych poza kodami QR , przetestowana w boju, rozległa wiedza społeczności Ponad 32 miliony pobrań NuGet Dostępne powiązania dla SkiaSharp, ImageSharp, OpenCV i innych Ograniczenia: Funkcje specyficzne dla kodów QR są podstawowe, brak osadzania logo, brak zaawansowanej stylizacji Dokładność odczytu uszkodzonych/obróconych kodów QR jest umiarkowana w porównaniu do rozwiązań opartych na ML Pakiety powiązań dodają złożoność zarządzania zależnościami Projekt API pokazuje swój wiek, mniej płynny niż nowoczesne biblioteki .NET Tempo aktywnego utrzymania zwolniło (utrzymywane przez społeczność) Projektów wymagających obsługi kodów QR i tradycyjnych kodów kreskowych (handel detaliczny, logistyka) i szukających darmowej, sprawdzonej opcji. Jeśli Twoim priorytetem są funkcje specyficzne dla kodów QR, takie jak stylizacja lub odczyt oparty na ML, a nie szeroki zakres formatów kodów kreskowych, dedykowana biblioteka kodów QR będzie lepsza. Najlepsze dla: 4. Net.Codecrete.QrCodeGenerator — Lekki i Skupiony na Standardach Net.Codecrete.QrCodeGenerator to czysta, minimalistyczna biblioteka generowania kodów QR autorstwa Manuela Bleichenbachera. Jest to , skupione na poprawności i zgodności ze standardami ( ). przetłumaczenie na .NET generatora kodów QR projektu Nayuki w Javie 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); Przykładowy Wynik z Net.Codecrete.QrCodeGenerator Z , jest dobrze przyjęta jako ukierunkowana biblioteka. Jej wyróżniającą cechą jest brak zależności od System.Drawing — generuje natywnie SVG, dane ścieżki XAML, PNG i BMP. Czyni to ją doskonałym wyborem dla międzyplatformowych projektów .NET i usług ASP.NET Core działających w Dockerze. ~4,1 milionami pobrań NuGet Mocne strony: Licencja MIT, całkowicie darmowa Brak zależności System.Drawing, naprawdę wieloplatformowa Mały rozmiar, szybkie generowanie Wyjście SVG i XAML wbudowane (przydatne w scenariuszach WPF, WinUI i webowych) Poprawna implementacja wszystkich 40 wersji kodów QR i wszystkich 4 poziomów korekcji błędów Obszerne przykłady projektów (WinForms, WPF, ASP.NET Core, SkiaSharp, ImageSharp) Ograniczenia: , brak możliwości odczytu kodów QR Tylko generowanie Brak osadzania logo lub zaawansowanych funkcji stylizacji Ograniczone dostosowywanie w porównaniu do generatorów ładunków QRCoder Mniej treści społecznościowych i samouczków w porównaniu do QRCoder lub ZXing.Net Deweloperów potrzebujących małego, poprawnego, wieloplatformowego generatora kodów QR z wyjściem SVG i bez bagażu System.Drawing. Jeśli Twój cel wdrożenia to Linux lub Docker i potrzebujesz tylko generowania, ta biblioteka zasługuje na poważne rozważenie. Najlepsze dla: 5. SkiaSharp.QrCode — Wydajne Generowanie Wieloplatformowe SkiaSharp.QrCode autorstwa to zorientowana na wydajność biblioteka generowania kodów QR zbudowana na SkiaSharp. Została stworzona specjalnie w celu uniknięcia ograniczeń GDI+ w System.Drawing, jednocześnie zapewniając wydajność na poziomie natywnym dzięki akceleracji sprzętowej SkiaSharp. guitarrapc using SkiaSharp.QrCode.Image; // Jedna linia: generuj i zapisz QRCodeImageBuilder.SavePng("https://example.com", "qrcode.png"); // Lub z niestandardowymi ustawieniami var pngBytes = new QRCodeImageBuilder("https://example.com") .WithSize(512, 512) .WithErrorCorrection(ECCLevel.H) .ToByteArray(); Jedno-liniowy Wynik SkiaSharp.QrCode Wyniki benchmarków z repozytorium projektu pokazują, że SkiaSharp.QrCode przewyższa QRCoder i inne biblioteki kodów QR .NET pod względem szybkości i alokacji pamięci w zadaniach generowania. Osiąga renderowanie bez kopiowania bezpośrednio do płótna SkiaSharp, unikając pośrednich alokacji bufora. Mocne strony: Licencja MIT, darmowa do użytku komercyjnego Najlepsza w swojej klasie wydajność generowania (w benchmarkach) Minimalna alokacja pamięci, niskie ciśnienie GC w scenariuszach o wysokiej przepustowości Gotowa na NativeAOT (obsługa kompilacji .NET Native AOT) Niestandardowe kształty modułów (okręgi, zaokrąglone prostokąty) dla stylizowanych kodów QR