IRONSOFTWAREHOME
KORZYSTANIE Z IRONQR

Kody QR .NET Core: Odczytywanie i generowanie kodów QR w C#

Curtis Chau
Curtis Chau
Updated: 21 kwietnia 2026

Podczas tworzenia aplikacji internetowych lub Enterprise w środowisku .NET Core często wymagana jest obsługa kodów QR — do śledzenia zapasów, przepływów płatności lub uwierzytelniania dwuskładnikowego. Zamiast poświęcać czas na tworzenie algorytmów kodowania niskiego poziomu, możesz skorzystać z dedykowanej biblioteki, która obsługuje cały proces. IronQR zapewnia kompletne rozwiązanie w zakresie kodów QR dla platformy .NET, obejmujące wszystko, od podstawowego generowania kodów po odczyt oparty na uczeniu maszynowym i zaawansowaną korekcję błędów.

Chcesz sam spróbować? Bezpłatna próba już dziś i przekonaj się, jak szybko możesz dodać funkcjonalność QR do swojego projektu.

NuGetZainstaluj za pomocą NuGet

PM > Install-Package IronQR

Install IronQR by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.

Jak zainstalować bibliotekę kodów QR?

Instalacja IronQR za pośrednictwem NuGet zajmuje kilka sekund. Otwórz Visual Studio, przejdź do Narzędzia > Menedżer pakietów NuGet > Zarządzaj pakietami NuGet dla rozwiązania, wyszukaj IronQR i kliknij Zainstaluj. Pakiet ma minimalne zależności i jest od razu gotowy do działania na systemach Windows, macOS i Linux.

PM > Install-Package IronQR

IronQR jest przeznaczony dla platform .NET Core 6, 7, 8, 9 i 10, a także .NET Framework 4.6.2 i nowszych. W przypadku projektów wielopłatformowych integracja SkiaSharp obsługuje przetwarzanie obrazów w środowiskach innych niż Windows. Biblioteka współpracuje z aplikacjami internetowymi .NET Core, aplikacjami konsolowymi i rozwiązaniami desktopowymi bez dodatkowej konfiguracji środowiska uruchomieniowego. Po zainstalowaniu wszystkie niezbędne metody rozszerzeń i typy są natychmiast dostępne.

Jak odczytać podstawowy kod QR z obrazu?

Odczytanie danych z kodu QR z plików graficznych wymaga zaledwie kilku wierszy kodu. Klasa QrReader używa zaawansowanego modelu uczenia maszynowego, który ocenia jakość obrazu i automatycznie wybiera odpowiedni tryb segmentacji, zapewniając dokładne wyniki nawet w przypadku, gdy wejściowy obraz nie jest idealny.

using IronQr;
using IronSoftware.Drawing;

// Load image containing QR code
var inputBmp = AnyBitmap.FromFile("qr-sample.png");
// Create QrImageInput from the bitmap
QrImageInput imageInput = new QrImageInput(inputBmp);
// Initialize QR Reader with ML model
QrReader reader = new QrReader();
// Read and decode all QR codes in the image
IEnumerable<QrResult> results = reader.Read(imageInput);
// Output decoded text strings
foreach (var qrCode in results)
{
    Console.WriteLine($"QR Code Value: {qrCode.Value}");
    Console.WriteLine($"URL: {qrCode.Url}");
}

Wprowadź kod QR

QR Code Generator .NET Core: Odczytuj i generuj kody QR przy użyciu kilku linii kodu: Obraz 1 - Wejściowy kod QR

Wynik

QR Code Generator .NET Core: Odczytuj i generuj kody QR przy użyciu kilku linii kodu: Obraz 2 - Przykładowy wynik skanowania kodu QR

Metoda QrReader.Read() przetwarza QrImageInput i zwraca IEnumerable<QrResult>, gdzie każdy wynik zawiera odkodowany tekst, adres URL, jeśli był zakodowany, oraz pozycję przestrzenną symbolu QR w obrazie. Biblioteka akceptuje tablice bajtów, ścieżki plików i obiekty AnyBitmap, dając elastyczność dla dowolnej architektury projektu — niezależnie od tego, czy odczytujesz z dysku, bazy danych czy strumienia z kamery na żywo.

Model uczenia maszynowego stanowiący podstawę czytnika odróżnia IronQR od bibliotek opartych wyłącznie na algorytmach. Radzi sobie z rzeczywistymi niedoskonałościami, takimi jak rozmycie ruchowe, częściowe zasłonięcie i nierównomierne oświetlenie, bez konieczności ręcznego przetwarzania wstępnego lub dostosowywania progów.

Jak wyodrębnić zaawansowane dane z kodów QR?

Oprócz podstawowego dekodowania wartości, IronQR udostępnia współrzędne, segmenty surowych danych oraz informacje na poziomie modułów z każdego zeskanowanego symbolu. Ma to kluczowe znaczenie w procesach przetwarzania dokumentów, gdzie trzeba dokładnie wiedzieć, gdzie na stronie pojawił się kod QR, lub w aplikacjach, które muszą obsługiwać wiele kodów na jednym obrazie.

using IronQr;
using IronSoftware.Drawing;

var inputBmp = AnyBitmap.FromFile("document-with-qr.png");
QrImageInput imageInput = new QrImageInput(inputBmp);
QrReader reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(imageInput);
foreach (var qrCode in results)
{
    // Access decoded value
    Console.WriteLine($"Data: {qrCode.Value}");
    // Get corner coordinate positions
    foreach (PointF point in qrCode.Points)
    {
        Console.WriteLine($"Position: {point.X}, {point.Y}");
    }
}

Wprowadź kod QR

QR Code Generator .NET Core: Odczytuj i generuj kody QR przy użyciu kilku linii kodu: Obraz 3 - Wejściowy kod QR

Zaawansowane wyniki odczytu kodów QR

QR Code Generator .NET Core: Odczytuj i generuj kody QR przy użyciu kilku linii kodu: Obraz 4 - Wyniki zaawansowanego wyodrębniania danych z kodu QR

Kolekcja QrResult.Points zawiera współrzędne czterech narożników wykrytego symbolu QR w przestrzeni pikseli. Twoja aplikacja może wykorzystać je do nakładania ramek na obrazy dokumentów, przycinania obszaru QR w celu dalszego przetwarzania lub przekazywania danych lokalizacyjnych do systemu niższego szczebla, który mapuje współrzędne fizyczne na logiczne pozycje w dokumencie.

IronQR przetwarza kody zawierające niestandardowe osadzone logotypy, uszkodzone moduły lub dane wejściowe o niskiej rozdzielczości przez tę samą linię ML. Biblioteka nie wymaga osobnych kroków wstępnego przetwarzania — wykrywanie i dekodowanie odbywają się podczas pojedynczego wywołania Read().

Jak poziomy korekcji błędów wpływają na jakość kodu QR?

Korekcja błędów to mechanizm, który pozwala skanerowi QR odzyskać oryginalne dane, nawet jeśli część kodu jest zasłonięta, źle wydrukowana lub fizycznie uszkodzona. Standard kodów QR definiuje cztery poziomy — niski (L), średni (M), kwartylowy (Q) i wysoki (H) — z których każdy stanowi kompromis między pojemnością pamięci a odpornością na uszkodzenia.

PoziomZdolność odzyskiwaniaNajlepsze zastosowanie
L~7%Czyste wyświetłącze cyfrowe, maksymalna gęstość danych
M~15%Ogólne aplikacje do drukowania
Q~25%Etykiety przemysłowe, przewidywane umiarkowane zużycie
H~30%Logo osadzone, powierzchnie zewnętrzne lub narażone na intensywne zużycie

Podczas generowania kodów QR określenie wyższego poziomu korekcji błędów gwarantuje, że wynik będzie działał w rzeczywistych warunkach skanowania:

using IronQr;
using IronSoftware.Drawing;

// Configure QR options with high error correction
var qrOptions = new QrOptions(QrErrorCorrectionLevel.High, 20);
// Generate a QR code with specified error correction
QrCode myQr = QrWriter.Write("https://ironsoftware.com", qrOptions);
// Save as PNG image
AnyBitmap qrImage = myQr.Save();
qrImage.SaveAs("high-error-correction-qr.png");

Wynik

QR Code Generator .NET Core: Odczytuj i generuj kody QR przy użyciu kilku linii kodu: Obraz 5 - Wygenerowany kod QR z wysokim poziomem korekcji błędów

Konstruktor QrOptions akceptuje poziom korekcji błędów i maksymalny numer wersji. Kody wersji 40 przechowują do 7089 znaków numerycznych, podczas gdy kody wersji 1 zawierają tylko 41 znaków. Ustawienie niższej maksymalnej wersji ogranicza rozmiar wyjściowy, co jest przydatne, gdy potrzebne są spójne wymiary fizyczne w całej partii. Im wyższy poziom korekcji błędów, tym więcej modułów jest zarezerwowanych na nadmiarowość, co zmniejsza pojemność netto danych w danej wersji.

Funkcja odporności na błędy w IronQR działa równolegle z tą właściwością — podczas odczytu kodów wygenerowanych przy wyższych poziomach korekcji biblioteka IronQR odzyskuje dane z kodów, które w przypadku zastosowania wyłącznie algorytmicznego dekodera zakończyłyby się całkowitą porażką.

Jak generować kody QR z znakami międzynarodowymi?

IronQR obsługuje pełen zakres trybów kodowania QR: numeryczny, alfanumeryczny, bajtowy i Kanji. W przypadku tekstu japońskiego i innych treści Unicode biblioteka automatycznie wybiera kodowanie najbardziej oszczędzające miejsce:

using IronQr;
using IronSoftware.Drawing;

// Generate QR that encodes Japanese Unicode text
QrCode japaneseQr = QrWriter.Write("こんにちは世界");
// The library selects Kanji mode automatically
AnyBitmap qrImage = japaneseQr.Save();
qrImage.SaveAs("japanese-qr.png");

Wynik w postaci kodu QR

QR Code Generator .NET Core: Odczytuj i generuj kody QR przy użyciu kilku linii kodu: Obraz 6 - Wyjściowy kod QR

Kodowanie kanji wykorzystuje dwa bajty na moduł zamiast ośmiu bitów, więc kod QR w języku japońskim w tej samej wersji przechowuje znacznie więcej znaków niż jego odpowiednik w trybie bajtowym UTF-8. W przypadku treści mieszanych — takich jak adres URL, po którym następuje tekst w języku japońskim — IronQR dzieli dane wejściowe na segmenty i koduje każdy segment w optymalnym trybie. Nie ma potrzeby ręcznego określania granic segmentów ani wywoływania funkcji pomocniczych do kodowania; proces kodowania zajmuje się tym za Ciebie.

Ten automatyczny wybór obejmuje również znaczniki Extended Channel Interpretation (ECI), które sygnalizują skanerom, że używane są niestandardowe zestawy znaków. Aplikacje skierowane na rynki międzynarodowe mogą przekazać dowolny łańcuch Unicode bezpośrednio do QrWriter.Write() bez oddzielnej konfiguracji.

Jak korzystać z generatorów ładunku dla ustrukturyzowanych danych QR?

QR zawierający zwykły adres URL sprawdza się w przypadku prostego udostępniania linków, ale wiele aplikacji wymaga kodowania danych strukturalnych — danych logowania do sieci Wi-Fi, wizytówek w formacie vCard lub danych dotyczących wydarzeń. Ręczne formatowanie tych treści jest podatne na błędy; Brakujący średnik lub nieprawidłowa kolejność pól spowoduje, że skanery błędnie zinterpretują dane.

IronQR udostępnia pomocniki ładunku, które poprawnie tworzą te ustrukturyzowane ciągi znaków:

using IronQr;
using IronSoftware.Drawing;

// Generate QR code with URL payload
var urlQrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
// Save QR as PNG image file
AnyBitmap qrImage = urlQrCode.Save();
qrImage.SaveAs("url-qr-code.png");
Console.WriteLine("QR code generated successfully.");

Utworzony kod QR

QR Code Generator .NET Core: Odczytuj i generuj kody QR przy użyciu kilku linii kodu: Obraz 7 - Kod QR utworzony z URL

Metoda QrWriter.Write() akceptuje albo zwykły łańcuch znaków, albo obiekt strukturalnej zawartości. W przypadku sieci WiFi ładunek koduje identyfikator SSID, hasło i typ zabezpieczeń w formacie rozpoznawanym przez skanery systemów Android i iOS. W przypadku informacji kontaktowych wynik jest zgodny ze standardem MeCard stosowanym przez większość mobilnych czytników kodów QR. Strona funkcji generowania dokumentuje wszystkie obsługiwane typy ładunków oraz ich wymagane pola.

Biblioteka generuje obrazy o konfigurowalnych wymiarach w pikselach. W przypadku zastosowań produkcyjnych generowanie kodów o wymiarach co najmniej 200x200 pikseli zapewnia niezawodne skanowanie z typowej odległości smartfona. Większe rozmiary sprawdzają się w zastosowaniach zewnętrznych lub drukowanych, gdzie odległość skanowania przekracza jeden metr.

Jak dostosować wygląd kodu QR?

IronQR zapewnia kontrolę nad wyglądem generowanych kodów bez utraty ich skanowalności. Możesz zmienić kolory pierwszego planu i tła, zastosować niestandardowe elementy brandingowe lub umieścić logo w strefie cichej pośrodku.

using IronQr;
using IronSoftware.Drawing;

// Define custom colors for the QR code
var darkColor = Color.FromArgb(30, 30, 120);   // Deep navy foreground
var lightColor = Color.White;

var options = new QrOptions(QrErrorCorrectionLevel.High, maxVersion: 20)
{
    BackgroundColor = lightColor,
    Color = darkColor,
    // Embed a logo image into the QR center
    Logo = AnyBitmap.FromFile("logo.png")
};

QrCode styledQr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap output = styledQr.Save();
output.SaveAs("branded-qr.png");

Umieszczenie logo zmniejsza efektywny obszar danych, dlatego biblioteka wymaga poziomu korekcji błędów H, gdy dostarczane jest logo. Zastrzeżona strefa ciszy w centrum stanowi około 30% powierzchni kodu, co mieści się w zakresie zdolności regeneracyjnej poziomu H. Biblioteka automatycznie egzekwuje to ograniczenie — jeśli ustawisz niższy poziom korekcji błędów obok logo, IronQR zgłosi wyjątek z opisowym komunikatem, zamiast generować kod, który skanuje w sposób niewiarygodny.

W przypadku aplikacji ASP.NET Core samouczek dotyczący generatora kodów QR .NET Core pokazuje, jak udostępniać wygenerowane kody QR jako odpowiedzi obrazkowe z akcji kontrolera. Strumień wyjściowy zapisuje dane bezpośrednio do odpowiedzi bez pośredniego operowania na plikach, co pozwala utrzymać niskie opóźnienia w przypadku punktów końcowych o dużym natężeniu ruchu.

Jak odczytywać kody QR w aplikacji ASP.NET Core?

Skanowanie kodów QR po stronie serwera — na podstawie przesłanych obrazów, procesów przetwarzania dokumentów lub zautomatyzowanych systemów kontroli — to typowy przypadek użycia interfejsu API do odczytu. Przewodnik po skanerze kodów QR ASP.NET obejmuje pełną konfigurację kontrolera i usługi, ale podstawowy schemat odczytu jest taki sam jak w przypadku aplikacji konsolowej:

using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/qr")]
public class QrScanController : ControllerBase
{
    [HttpPost("scan")]
    public IActionResult Scan(IFormFile imageFile)
    {
        using var stream = imageFile.OpenReadStream();
        var bitmap = AnyBitmap.FromStream(stream);
        var imageInput = new QrImageInput(bitmap);
        var reader = new QrReader();
        var results = reader.Read(imageInput);

        var decoded = results.Select(r => new { r.Value, r.Url }).ToList();
        return Ok(decoded);
    }
}

Metoda AnyBitmap.FromStream() akceptuje dowolny strumień do odczytu, więc ta sama ścieżka kodu działa dla plików przesłanych przez formularz, obrazów pobranych z magazynu blobów lub klatek wyodrębnionych z rurociągu wideo. Kontroler nie zapisuje żadnych tymczasowych plików na dysku, co ma znaczenie w przypadku wdrożeń kontenerowych, gdzie system plików może być tylko do odczytu.

W scenariuszach o wysokiej przepustowości, utwórz wystąpienie QrReader raz na czas życia aplikacji jako singleton, ponieważ koszt ładowania modelu ML jest płacony przy pierwszym konstrukcie. Późniejsze wywołania Read() na tym samym przykładzie są bezpieczne wątkowo i współdzielą załadowany model.

Jak generować kody QR w aplikacji .NET MAUI?

Podręcznik .NET MAUI do kodów QR demonstruje pełne generowanie wieloplatformowe na iOS, Androidzie, macOS i Windows. IronQR korzysta z backendu renderującego SkiaSharp podczas działania na platformach innych niż Windows, zapewniając spójny wynik na wszystkich platformach docelowych MAUI.

using IronQr;
using IronSoftware.Drawing;

// Generate QR and convert to a byte array for display in MAUI
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap bitmap = qr.Save();
byte[] imageBytes = bitmap.ExportBytes();

// Bind imageBytes to an <Image Source> in your MAUI page

Na urządzeniach mobilnych ExportBytes() zwraca tablicę bajtów PNG, którą można bezpośrednio wprowadzić do StreamImageSource lub zapisać do ImageButton. Szkielet MAUI nie wymaga ścieżek kodu specyficznych dla platformy — ta sama logika generowania działa identycznie na wszystkich czterech platformach docelowych MAUI.

W przypadku projektów VB.NET interfejs API jest identyczny; różni się jedynie składnia. Biblioteka jest dostarczana w postaci pojedynczego pakietu NuGet, bez konieczności stosowania oddzielnego zestawu VB.NET.

Jakie są Twoje kolejne kroki?

IronQR obejmuje cały cykl życia kodów QR w środowisku .NET — od podstawowego generowania i kodowania ustrukturyzowanych danych po odczyt uszkodzonych lub oznaczonych marką kodów przy użyciu uczenia maszynowego. Biblioteka obsługuje kodowanie kanji, konfigurację korekcji błędów oraz wielopłatformowe wyświetlanie obrazów, dzięki czemu możesz skupić się na logice specyficznej dla Twojej aplikacji.

Aby wykorzystać zdobytą wiedzę w praktyce:

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta