Generator i Czytnik Kodów QR .NET Core | IronQR
Stworzenie generatora kodów QR w .NET Core jest proste, jeśli wybierzesz odpowiednią bibliotekę. Oceniając wymagania dotyczące generatora kodów QR, programiści poszukują równowagi między łatwością obsługi a opcjonalnymi zaawansowanymi funkcjami. Niezależnie od tego, czy tworzą aplikacje internetowe ASP.NET Core, czy narzędzia konsolowe, programiści potrzebują niezawodnej biblioteki, która obsługuje wszystko, od podstawowego tworzenia kodów QR po zaawansowane dostosowywanie.
IronQR zapewnia potężne rozwiązanie dla .NET Core, które obsługuje kodowanie ciągów tekstowych, adresów URL oraz japońskiego tekstu Unicode. Chociaż niektórzy mogą początkowo szukać biblioteki open source dla platformy .NET, takiej jak biblioteka QRCoder (znana z liberalnej licencji MIT), biblioteka IronQR stanowi alternatywę klasy korporacyjnej z możliwościami uczenia maszynowego i dedykowanym wsparciem technicznym.
Ten samouczek pokazuje, jak generować kody QR, konfigurować poziomy korekcji błędów i odczytywać istniejące kody przy użyciu wykrywania opartego na uczeniu maszynowym — wszystko to w ramach projektów .NET Core.
Zacznij korzystać z IronQR już dziś, korzystając z bezpłatnej wersji próbnej.
Jak zainstalować bibliotekę kodów QR w .NET Core?
Aby rozpocząć, otwórz Visual Studio i kliknij przycisk tworzenia, aby rozpocząć nowy projekt. Po nadaniu nazwy projektowi instalacja biblioteki za pomocą menedżera pakietów NuGet zajmuje zaledwie kilka sekund. Chociaż niektórzy programiści mogą szukać pakietu QRCoder NuGet, framework IronQR można zainstalować, uruchamiając następujące polecenie w konsoli menedżera pakietów:
Install-Package IronQR
Alternatywnie można skorzystać z interfejsu użytkownika menedżera pakietów NuGet, wyszukując "IronQR" i klikając przycisk instalacji. Biblioteka zapewnia implementację .NET zgodną z .NET Core 3.x, .NET 5, 6, 7, 8, 9 i 10, co czyni ją idealną do nowoczesnego tworzenia stron internetowych i projektów wielopłatformowych.
Po zainstalowaniu dodaj wymagane using dyrektywy na początku pliku. IronQR integruje się z IronSoftware.Drawing dla obsługi obrazów niezależnej od platformy, eliminując potrzebę na zależności specyficzne dla platform, takie jak System.Drawing.Common, które zostały wycofane z użycia dla wieloplatformowego w .NET 6 i późniejszych.
Można zweryfikować, czy instalacja się powiodła, sprawdzając odwołania do pakietów w pliku .csproj projektu lub potwierdzając, że pakiet NuGet pojawia się w konsoli menedżera pakietów. Po zainstalowaniu dokumentacja API IronQR staje się natychmiast dostępna.
Jak wygenerować kod QR?
Klasa QrWriter, często używana wraz z wygodnymi metodami rozszerzeń, sprawia, że generowanie kodów QR jest proste. Oto kod źródłowy kompletnego przykładu wykorzystującego instrukcje najwyższego poziomu do wygenerowania kodu QR za pomocą zaledwie kilku wierszy kodu:
using IronQr;
using IronSoftware.Drawing;
// Generate a QR code from input text
QrCode qrcode = QrWriter.Write("https://ironsoftware.com");
// Save as PNG image
AnyBitmap qrImage = qrcode.Save();
qrImage.SaveAs("website-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Generate a QR code from input text
QrCode qrcode = QrWriter.Write("https://ironsoftware.com");
// Save as PNG image
AnyBitmap qrImage = qrcode.Save();
qrImage.SaveAs("website-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Generate a QR code from input text
Dim qrcode As QrCode = QrWriter.Write("https://ironsoftware.com")
' Save as PNG image
Dim qrImage As AnyBitmap = qrcode.Save()
qrImage.SaveAs("website-qr.png")
Wynik

Metoda QrWriter.Write() przetwarza dane w QrCodeData, który zawiera surowe moduły (czarne i białe kwadraty) symbolu QR. IronQR wykorzystuje wewnętrzne generatory ładunku, aby zapewnić efektywne kodowanie tekstu wejściowego dla danych liczbowych, ciągów znaków alfanumerycznych lub tablic bajtów.
Klasa AnyBitmap z IronSoftware.Drawing zapewnia zapisywanie obrazów między platformami, dzięki czemu ten sam kod działa na Windows, macOS i Linux bez modyfikacji. W zależności od potrzeb można zapisać wynik w formacie PNG, JPEG lub innym obsługiwanym formacie.
Aby zapoznać się z działającą demonstracją, zobacz stronę z przykładem generowania kodu QR, która pokazuje dodatkowe opcje konfiguracyjne obok podstawowego procesu generowania.
Czym są poziomy korekty błędów i dlaczego mają znaczenie?
Korekcja błędów określa, ile uszkodzeń może wytrzymać symbol QR, pozostając jednocześnie skanowalnym. Jest to jedna z opcjonalnych funkcji zaawansowanych, która pozwala na budowanie marki i zapewnia trwałość. Norma dotycząca kodów QR (ISO/IEC 18004) definiuje cztery poziomy korekcji błędów, z których każdy wiąże się z kompromisem między pojemnością danych a odpornością.
| Poziom | Odzyskiwanie danych | Najlepsze dla |
|---|---|---|
| L (Niski) | ~7% | Czyste wyświetłącze cyfrowe |
| M (Średni) | ~15% | Zastosowanie ogólne |
| Q (Kwartalny) | ~25% | Materiały drukowane |
| H (Wysoki) | ~30% | Trudne środowiska, nakładki z logo |
Skonfiguruj korektę błędów za pomocą QrOptions:
using IronQr;
using IronSoftware.Drawing;
// Configure with high error correction level
var options = new QrOptions(QrErrorCorrectionPoziom.High, 20);
// Generate QR code with options
QrCode qrcode = QrWriter.Write("Product-12345", options);
AnyBitmap qrImage = qrcode.Save();
qrImage.SaveAs("product-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Configure with high error correction level
var options = new QrOptions(QrErrorCorrectionPoziom.High, 20);
// Generate QR code with options
QrCode qrcode = QrWriter.Write("Product-12345", options);
AnyBitmap qrImage = qrcode.Save();
qrImage.SaveAs("product-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Configure with high error correction level
Dim options As New QrOptions(QrErrorCorrectionPoziom.High, 20)
' Generate QR code with options
Dim qrcode As QrCode = QrWriter.Write("Product-12345", options)
Dim qrImage As AnyBitmap = qrcode.Save()
qrImage.SaveAs("product-qr.png")
Wynik QR

Drugi parametr określa maksymalny dozwolony numer wersji, kontrolując rozmiar kodu QR i pojemność danych. W przypadku dodawania obrazu logo lub w sytuacjach fizycznego zużycia niezbędna jest dokładniejsza korekta błędów.
Jeśli planujesz nałożyć logo na kod QR, zawsze używaj poziomu H. Dodatkowa redundancja rekompensuje moduły ukryte przez logo, dzięki czemu kod pozostaje czytelny. Dokumentacja IronQR dotycząca korekcji błędów wyjaśnia, jak wybór wersji współdziała z pojemnością danych i poziomem korekcji.
Jak dostosować wygląd kodu QR za pomocą logo i kolorów?
Funkcja QrStyleOptions firmy IronQR umożliwia generowanie kodów QR zgodnych z wizerunkiem marki, z niestandardowymi kolorami, wymiarami i osadzonymi logo. Jest to szczególnie przydatne w przypadku materiałów marketingowych, opakowań produktów i biletów na wydarzenia, gdzie spójność wizualna ma znaczenie.
using IronQr;
using IronSoftware.Drawing;
var styleOptions = new QrStyleOptions
{
Dimensions = 300,
Margins = 10,
Color = Color.DarkBlue,
Logo = new QrLogo { Bitmap = AnyBitmap.FromFile("company-logo.png") }
};
QrCode qrcode = QrWriter.Write("https://yourcompany.com");
AnyBitmap qrImage = qrcode.Save(styleOptions);
qrImage.SaveAs("branded-qr.png");
using IronQr;
using IronSoftware.Drawing;
var styleOptions = new QrStyleOptions
{
Dimensions = 300,
Margins = 10,
Color = Color.DarkBlue,
Logo = new QrLogo { Bitmap = AnyBitmap.FromFile("company-logo.png") }
};
QrCode qrcode = QrWriter.Write("https://yourcompany.com");
AnyBitmap qrImage = qrcode.Save(styleOptions);
qrImage.SaveAs("branded-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
Dim styleOptions As New QrStyleOptions With {
.Dimensions = 300,
.Margins = 10,
.Color = Color.DarkBlue,
.Logo = New QrLogo With {.Bitmap = AnyBitmap.FromFile("company-logo.png")}
}
Dim qrcode As QrCode = QrWriter.Write("https://yourcompany.com")
Dim qrImage As AnyBitmap = qrcode.Save(styleOptions)
qrImage.SaveAs("branded-qr.png")
Stylizowany kod QR

Właściwość Dimensions ustawia rozmiar wyjściowy obrazu w pikselach. Właściwość Margins kontroluje strefę ciszy -- pustą obwódkę wokół kodu QR, którą skanery potrzebują do poprawnego rozpoznania granicy symbolu. Podręcznik dostosowywania obrazu kodu QR obejmuje dodatkowe właściwości stylizacji, w tym kolor tła i opcje kształtu modułu.
W przypadku umieszczania logo, jego powierzchnia nie może przekraczać 30% całkowitej powierzchni kodu QR. Przekroczenie tego progu może pogorszyć czytelność nawet przy korekcie na poziomie H. Dobrą praktyką jest przetestowanie tłumaczenia w wielu aplikacjach do skanowania kodów QR po dostosowaniu.
Jak generować kody QR w ASP.NET Core?
Integracja generowania kodów QR z ASP.NET Core odbywa się zgodnie z wzorcem Model-View-Controller. Oto implementacja klasy HomeController, która zwraca obraz kodu QR bezpośrednio z metody akcji:
using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace Examples
{
public class HomeController : Controller
{
public IActionResult GenerateQR(string content)
{
QrCode myQr = QrWriter.Write(content);
AnyBitmap qrImage = myQr.Save();
byte[] imageBytes = qrImage.ExportBytes();
return File(imageBytes, "image/png");
}
}
}
using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace Examples
{
public class HomeController : Controller
{
public IActionResult GenerateQR(string content)
{
QrCode myQr = QrWriter.Write(content);
AnyBitmap qrImage = myQr.Save();
byte[] imageBytes = qrImage.ExportBytes();
return File(imageBytes, "image/png");
}
}
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc
Namespace Examples
Public Class HomeController
Inherits Controller
Public Function GenerateQR(content As String) As IActionResult
Dim myQr As QrCode = QrWriter.Write(content)
Dim qrImage As AnyBitmap = myQr.Save()
Dim imageBytes As Byte() = qrImage.ExportBytes()
Return File(imageBytes, "image/png")
End Function
End Class
End Namespace
Ten punkt końcowy przyjmuje dane kodu QR jako parametr i zwraca bezpośrednio wygenerowany obraz PNG. Podejście to sprawdza się zarówno w przypadku projektów ASP.NET Core Web API, jak i widoków Razor.
Dla aplikacji produkcyjnych ASP.NET Core rozważ buforowanie często generowanych kodów QR za pomocą IMemoryCache lub IDistributedCache, aby zmniejszyć obciążenie procesora. Kody QR dla statycznych adresów URL, identyfikatorów produktów lub linków do wydarzeń nie zmieniają się między żądaniami i idealnie nadają się do buforowania.
Można również zintegrować IronQR z punktem końcowym Minimal API. Podręcznik integracji ASP.NET Core dostarcza pełen przykład obejmujący wzorce wstrzykiwania zależności i sposób serwowania obrazów kodów QR z komponentu Blazor.
Rejestrowanie klucza licencyjnego IronQR w Program.cs za pomocą wzorca instrukcji najwyższego poziomu utrzymuje czystą konfigurację startową:
using IronQr;
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY";
using IronQr;
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronQr
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY"
Ustaw klucz licencyjny przed wywołaniem jakichkolwiek metod IronQR. W trakcie tworzenia oprogramowania można skorzystać z bezpłatnego klucza próbnego, który można uzyskać na stronie licencyjnej IronQR.
Jak zakodować tekst japoński w formacie Unicode?
IronQR obsługuje kodowanie japońskiego tekstu Unicode w trybie Kanji, który efektywnie koduje japońskie znaki Unicode za pomocą mniejszej liczby segmentów danych niż standardowe kodowanie. Zmniejsza to wersję (rozmiar) kodu QR dla tej samej treści, tworząc mniej złożony symbol, który skanuje się szybciej.
using IronQr;
using IronSoftware.Drawing;
// Generate QR that encodes Japanese Unicode text
QrCode japaneseQr = QrWriter.Write("こんにちは世界");
AnyBitmap qrImage = japaneseQr.Save();
qrImage.SaveAs("japanese-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Generate QR that encodes Japanese Unicode text
QrCode japaneseQr = QrWriter.Write("こんにちは世界");
AnyBitmap qrImage = japaneseQr.Save();
qrImage.SaveAs("japanese-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Generate QR that encodes Japanese Unicode text
Dim japaneseQr As QrCode = QrWriter.Write("こんにちは世界")
Dim qrImage As AnyBitmap = japaneseQr.Save()
qrImage.SaveAs("japanese-qr.png")
Wynik

Biblioteka automatycznie wybiera tryb Kanji po wykryciu znaków japońskich, optymalizując pojemność danych kodu QR bez konieczności ręcznej konfiguracji segmentów danych. Ma to znaczenie w przypadku aplikacji skierowanych do użytkowników posługujących się językiem japońskim, takich jak platformy e-commerce, menu restauracji lub kioski z informacjami turystycznymi.
Tryb Kanji koduje znaki z zestawu znaków Shift JIS. Jeśli aplikacja przetwarza zarówno tekst japoński, jak i łaciński w tym samym ciągu znaków, IronQR wewnętrznie obsługuje przełączanie trybu, wybierając najbardziej wydajne kodowanie dla każdego segmentu. Jeśli chodzi o najlepsze praktyki w zakresie internacjonalizacji w .NET, dokumentacja Microsoft dotycząca globalizacji zawiera przydatne informacje na temat kodowania znaków.
Jak odczytywać kody QR za pomocą uczenia maszynowego?
IronQR wyróżnia się dzięki czytnikowi kodów QR opartemu na uczeniu maszynowym. Model ML osiąga wysoką dokładność nawet podczas odczytywania kodów QR pod różnymi kątami lub z częściowo zasłoniętych obrazów — jest to znacząca przewaga nad tradycyjnymi algorytmami wykrywania opartymi na progach, stosowanymi w wielu alternatywnych rozwiązaniach open source.
using IronQr;
using IronSoftware.Drawing;
// Load image containing QR code
AnyBitmap inputBmp = AnyBitmap.FromFile("scanned-document.png");
QrImageInput imageInput = new QrImageInput(inputBmp);
// Read with ML-powered detection
QrReader reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(imageInput);
foreach (var result in results)
{
Console.WriteLine($"Found: {result.Value}");
}
using IronQr;
using IronSoftware.Drawing;
// Load image containing QR code
AnyBitmap inputBmp = AnyBitmap.FromFile("scanned-document.png");
QrImageInput imageInput = new QrImageInput(inputBmp);
// Read with ML-powered detection
QrReader reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(imageInput);
foreach (var result in results)
{
Console.WriteLine($"Found: {result.Value}");
}
Imports IronQr
Imports IronSoftware.Drawing
' Load image containing QR code
Dim inputBmp As AnyBitmap = AnyBitmap.FromFile("scanned-document.png")
Dim imageInput As New QrImageInput(inputBmp)
' Read with ML-powered detection
Dim reader As New QrReader()
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
For Each result In results
Console.WriteLine($"Found: {result.Value}")
Next
Wynik odczytu kodu QR
![]()
Obiekt QrResult zawiera wartość zdekodowaną wraz z metadanymi o położeniu, które można wykorzystać do wyróżnienia wykrytego obszaru kodu QR w nakładkach interfejsu użytkownika lub w ramach przetwarzania dokumentów. Ta funkcja sprawia, że IronQR idealnie nadaje się do systemów przetwarzania dokumentów i zarządzania zapasami.
Model ML działa całkowicie na urządzeniu, bez konieczności wywoływania interfejsów API w chmurze, dzięki czemu nadaje się do środowisk odizolowanych i aplikacji działających w trybie offline. Tradycyjne detektory oparte na CV, takie jak ZXing.NET, sprawdzają się dobrze w przypadku czystych, widocznych kodów, ale często mają trudności z rzeczywistymi warunkami, takimi jak odblaski, obrót lub uszkodzenia. Podejście ML firmy IronQR niezawodnie radzi sobie z tymi scenariuszami.
W przypadku przetwarzania dokumentów w partiach można przekazać czytnikowi wiele obrazów po kolei i zebrać wszystkie wyniki. Dokumentacja dotycząca odczytu kodów QR obejmuje odczyt ze stron PDF i strumieni z kamery, a także ze statycznych plików graficznych.
Jak działa obsługa wielu platform?
W przeciwieństwie do rozwiązań zależnych od System.Drawing.Common (wycofanego z użycia dla wieloplatformowego w .NET 6+), IronQR korzysta z IronSoftware.Drawing dla prawdziwie wieloplatformowych projektów. Twój kod działa spójnie na systemach Windows, macOS, Linux, iOS i Android. W przypadku projektów wielopłatformowych alternatywy dla SkiaSharp nie są konieczne — IronQR wewnętrznie obsługuje abstrakcję platformy.
Dokumentacja dotycząca wielopłatformowości .NET wyjaśnia szerszy kontekst kompatybilności platformy w przypadku .NET 10. IronQR jest zgodny z tymi zasadami, całkowicie unikając interfejsów API specyficznych dla danej platformy.
IronQR obsługuje następujące środowiska docelowe:
- .NET 10, 9, 8, 7, 6 — wszystkie nowoczesne wersje .NET
- .NET Core 3.x — dla aplikacji, które nie zostały jeszcze przeniesione na nowoczesną platformę .NET
- Xamarin i MAUI — do tworzenia aplikacji mobilnych
- Azure Functions i AWS Lambda — do zadań bezserwerowych
Podczas działania w kontenerach Docker nie są potrzebne żadne dodatkowe pakiety systemowe poza standardowym obrazem środowiska uruchomieniowego .NET Standard. To upraszcza twoje Dockerfile w porównaniu do bibliotek wymagających natywnych zależności GDI+. Przewodnik wdrożeniowy IronQR obejmuje konfigurację dla środowisk kontenerowych i chmurowych.
Jak wypada IronQR na tle innych bibliotek QR dla platformy .NET?
Istnieje kilka bibliotek QR dla platformy .NET, z których każda ma inne zalety i wady. Zrozumienie różnic pomoże Ci wybrać odpowiednie narzędzie do Twojego projektu.
QRCoder to biblioteka open source na licencji MIT. Sprawdza się dobrze w przypadku prostego generowania kodów QR, ale nie obejmuje funkcji odczytu kodów QR ani wykrywania opartego na uczeniu maszynowym. Opcje wyjściowe są bardziej ograniczone w porównaniu z obsługą stylizowanego wyjścia w IronQR.
ZXing.NET to port biblioteki Java ZXing napisany w języku C#. Obsługuje zarówno odczyt, jak i zapis, ale opiera się na tradycyjnych technikach wizji komputerowej, które mają trudności z uszkodzonymi lub obróconymi kodami. Obsługa obrazów na różnych platformach wymaga dodatkowej konfiguracji.
IronQR zapewnia generowanie i odczyt w jednym pakiecie, a Licencja Enterprise obejmuje dedykowane wsparcie techniczne. Czytnik oparty na ML, stylizowany wyjście oraz integracja z IronSoftware.Drawing czynią go bardziej kompletnym rozwiązaniem dla aplikacji produkcyjnych.
Szczegółowe porównanie funkcji można znaleźć w artykule IronQR vs QRCoder oraz IronQR vs ZXing.
Jakie są Twoje kolejne kroki?
IronQR zapewnia kompletne rozwiązanie do generowania i odczytu kodów QR w środowisku .NET Core. Automatyczne obsługiwanie generowania skomplikowanych ładunków oraz montażu surowych modułów i danych QrCodeData upraszcza cykl rozwoju. Niezależnie od tego, czy potrzebujesz prostej alternatywy dla biblioteki open source, czy systemu z opcjonalnymi zaawansowanymi funkcjami, architektura wielopłatformowa IronQR zapewnia niezawodne działanie.
Aby kontynuować tworzenie z wykorzystaniem IronQR, zapoznaj się z poniższymi zasobami:
- Pakiet IronQR NuGet — zainstaluj najnowszą stabilną wersję
- Dokumentacja API IronQR — pełna dokumentacja klas i metod
- Przykłady kodów QR — gotowy do skopiowania i wklejenia kod dla typowych scenariuszy
- Samouczki IronQR — przewodniki krok po kroku dotyczące konkretnych przypadków użycia
- Opcje licencyjne — wybierz plan odpowiedni dla swojego projektu
Bezpłatna próba, aby odkryć pełen potencjał IronQR bez żadnych zobowiązań z góry.
Często Zadawane Pytania
Jak mogę generować kody QR w .NET Core używając IronQR?
Możesz generować kody QR w .NET Core, korzystając z IronQR, które oferuje łatwą w użyciu bibliotekę pozwalającą na tworzenie podstawowych kodów QR jak i zaawansowane funkcje dostosowywania.
Jakie opcje dostosowywania są dostępne z IronQR dla generowania kodów QR?
IronQR zapewnia różne opcje dostosowywania, w tym konfigurowanie poziomów korekcji błędów i dodawanie logotypów do twoich kodów QR, aby spełniały one twoje specyficzne wymagania.
Czy IronQR może obsługiwać generowanie kodów QR w aplikacjach webowych ASP.NET Core?
Tak, IronQR jest w pełni kompatybilny z aplikacjami webowymi ASP.NET Core, co pozwala programistom na integrację generowania kodów QR do ich projektów.
Czy możliwe jest odczytywanie kodów QR za pomocą IronQR w .NET Core?
Absolutnie, IronQR jest zaprojektowany do odczytywania kodów QR z wysoką dokładnością, wykorzystując technologię uczenia maszynowego do zapewnienia precyzyjnego wykrywania i ekstrakcji danych.
Co sprawia, że IronQR jest odpowiedni dla programistów poszukujących generatora kodów QR?
IronQR oferuje równowagę między łatwością użycia a zaawansowanymi funkcjami, czyniąc go idealnym wyborem dla programistów potrzebujących wszechstronnej i niezawodnej biblioteki kodów QR.
Czy w IronQR są dostępne jakieś zaawansowane funkcje przetwarzania kodów QR?
Tak, IronQR zawiera zaawansowane funkcje takie jak konfigurowanie korekcji błędów, dodawanie elementów marki i obsługa różnych formatów kodów QR.
Jak IronQR zapewnia dokładność odczytu kodów QR?
IronQR wykorzystuje algorytmy wspierane przez uczenie maszynowe do zwiększenia dokładności odczytu kodów QR, zapewniając niezawodne przechwytywanie danych nawet w trudnych warunkach.



