Przejdź do treści stopki
KORZYSTANIE Z IRONQR

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

Podczas tworzenia aplikacji internetowych lub Enterprise w środowisku .NET Core często wymagańa 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ć? Rozpocznij bezpłatny okres próbny już dziś i przekonaj się, jak szybko możesz dodać funkcjonalność QR do swojego projektu.

NuGet Zainstaluj za pomocą NuGet

PM >  Install-Package IronQR

Sprawdź IronQR na NuGet dla szybkiej instalacji. Z ponad 10 milionami pobrań, przekształca rozwój PDF z C#. Możesz również pobrać DLL.

Jak zainstalować bibliotekę kodów QR?

Instalacja IronQR za pośrednictwem NuGet zajmuje kilka sekund. Otwórz program Visual Studio, przejdź do menu 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.

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 wykorzystuje zaawansowany model uczenia maszynowego, który ocenia jakość obrazu i automatycznie wybiera odpowiedni tryb segmentacji, zapewniając dokładne wyniki nawet wtedy, gdy obraz wejściowy 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}");
}
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}");
}
Imports IronQr
Imports IronSoftware.Drawing

' Load image containing QR code
Dim inputBmp = AnyBitmap.FromFile("qr-sample.png")
' Create QrImageInput from the bitmap
Dim imageInput As New QrImageInput(inputBmp)
' Initialize QR Reader with ML model
Dim reader As New QrReader()
' Read and decode all QR codes in the image
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Output decoded text strings
For Each qrCode In results
    Console.WriteLine($"QR Code Value: {qrCode.Value}")
    Console.WriteLine($"URL: {qrCode.Url}")
Next
$vbLabelText   $csharpLabel

Wprowadź kod QR

Generator kodów QR .NET Core: Odczytuj i generuj kody QR za pomocą zaledwie kilku linii kodu: Obraz 1 – Kod QR wejściowy

Wynik

Generator kodów QR .NET Core: Odczytuj i generuj kody QR za pomocą zaledwie 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 zdekodowany tekst, adres URL, jeśli został zakodowany, oraz położenie symbolu QR na obrazie. Biblioteka akceptuje tablice bajtów, ścieżki plików i obiekty AnyBitmap, co zapewnia elastyczność w przypadku każdej architektury projektu — niezależnie od tego, czy odczytujesz dane z dysku, bazy danych, czy z obrazu 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}");
    }
}
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}");
    }
}
Imports IronQr
Imports IronSoftware.Drawing

Dim inputBmp = AnyBitmap.FromFile("document-with-qr.png")
Dim imageInput As New QrImageInput(inputBmp)
Dim reader As New QrReader()
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)

For Each qrCode In results
    ' Access decoded value
    Console.WriteLine($"Data: {qrCode.Value}")
    ' Get corner coordinate positions
    For Each point As PointF In qrCode.Points
        Console.WriteLine($"Position: {point.X}, {point.Y}")
    Next
Next
$vbLabelText   $csharpLabel

Wprowadź kod QR

Generator kodów QR .NET Core: Odczytuj i generuj kody QR za pomocą zaledwie kilku linii kodu: Obraz 3 – Kod QR wejściowy

Zaawansowane wyniki odczytu kodów QR

Generator kodów QR .NET Core: Odczytuj i generuj kody QR za pomocą zaledwie kilku linii kodu: Obraz 4 – Wyniki zaawansowanego wyciągania danych z kodów QR

Kolekcja QrResult.Points zawiera cztery współrzędne narożników wykrytego symbolu QR w przestrzeni pikselowej. 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 logo, uszkodzone moduły lub dane wejściowe o niskiej rozdzielczości za pomocą tego samego potoku ML. Biblioteka IronQR nie wymaga oddzielnych etapów przetwarzania wstępnego — wykrywanie i dekodowanie odbywa się w ramach jednego 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.

Poziom Zdolność odzyskiwania Najlepsze 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");
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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Wynik

Generator kodów QR .NET Core: Odczytuj i generuj kody QR za pomocą zaledwie kilku linii kodu: Obraz 5 – Wygenerowany kod QR o wysokim poziomie korekcji błędów

Konstruktor QrOptions przyjmuje poziom korekcji błędów oraz 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");
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");
Imports IronQr
Imports IronSoftware.Drawing

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

Wynik w postaci kodu QR

Generator kodów QR .NET Core: Odczytuj i generuj kody QR za pomocą zaledwie kilku linii kodu: Obraz 6 – Kod QR na wyjściu

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 przeznaczone na rynki międzynarodowe mogą przekazywać dowolny ciąg znaków Unicode bezpośrednio do QrWriter.Write() bez konieczności 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.");
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.");
Imports IronQr
Imports IronSoftware.Drawing

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

Utworzony kod QR

Generator kodów QR .NET Core: Odczytuj i generuj kody QR za pomocą zaledwie kilku linii kodu: Obraz 7 – Kod QR utworzony na podstawie adresu URL

Metoda QrWriter.Write() akceptuje zarówno zwykły ciąg znaków, jak i obiekt ładunku o strukturze. 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 wymagańe 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");
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");
Imports IronQr
Imports IronSoftware.Drawing

' Define custom colors for the QR code
Dim darkColor As Color = Color.FromArgb(30, 30, 120) ' Deep navy foreground
Dim lightColor As Color = Color.White

Dim options As New QrOptions(QrErrorCorrectionLevel.High, maxVersion:=20) With {
    .BackgroundColor = lightColor,
    .Color = darkColor,
    ' Embed a logo image into the QR center
    .Logo = AnyBitmap.FromFile("logo.png")
}

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

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);
    }
}
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);
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc

<ApiController>
<Route("api/qr")>
Public Class QrScanController
    Inherits ControllerBase

    <HttpPost("scan")>
    Public Function Scan(imageFile As IFormFile) As IActionResult
        Using stream = imageFile.OpenReadStream()
            Dim bitmap = AnyBitmap.FromStream(stream)
            Dim imageInput = New QrImageInput(bitmap)
            Dim reader = New QrReader()
            Dim results = reader.Read(imageInput)

            Dim decoded = results.Select(Function(r) New With {Key .Value = r.Value, Key .Url = r.Url}).ToList()
            Return Ok(decoded)
        End Using
    End Function
End Class
$vbLabelText   $csharpLabel

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

W scenariuszach o dużej przepustowości należy utworzyć instancję QrReader raz na cały okres działania aplikacji jako singleton, ponieważ koszt ładowania modelu ML jest ponoszony przy pierwszym utworzeniu. Kolejne wywołania Read() na tej samej instancji są bezpieczne dla wątków i współdzielą załadowany model.

Jak generować kody QR w aplikacji .NET MAUI?

Samouczek dotyczący kodów QR w .NET MAUI pokazuje pełne generowanie międzyplatformowe na systemach iOS, Android, 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
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
Imports IronQr
Imports IronSoftware.Drawing

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

' Bind imageBytes to an <Image Source> in your MAUI page
$vbLabelText   $csharpLabel

Na urządzeniach mobilnych ExportBytes() zwraca tablicę bajtów PNG, którą można przekazać bezpośrednio do StreamImageSource lub zapisać w 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:

Często Zadawane Pytania

Jakie wersje .NET obsluguje IronQR?

IronQR obsluguje .NET Core 6, 7, 8, 9 i 10, a takze .NET Framework 4.6.2 i wyzsze. Jest rowniez zgodny z .NET Standard 2.0+, co czyni go kompatybilnym z projektami Xamarin, .NET MAUI, Blazor i ASP.NET Core.

Jak odczytac kod QR z pliku obrazu w C#?

Zaladuj obraz uzywajac `AnyBitmap.FromFile()`, przekaż go do `QrImageInput`, a nastepnie wywolaj `QrReader.Read()`. Metoda zwraca `IEnumerable`, gdzie kazdy wynik zawiera zdekodowana wartosc, URL i wspolrzedne rogowej.

Jakie sa cztery poziomy korekcji bledow kodu QR?

Cztery poziomy to niski (L, ~7% odzyskiwania), sredni (M, ~15%), kwartylny (Q, ~25%) i wysoki (H, ~30%). Wyższe poziomy dodają moduły redundancji, zmniejszając netto pojemność danych, ale poprawiając niezawodność skanowania uszkodzonych lub częściowo zasłoniętych kodów.

Czy IronQR moze odczytywac kody QR, ktore zawieraja logo lub sa czesciowo uszkodzone?

Tak. Model wykrywania zasilany ML w IronQR radzi sobie z czesciowo uszkodzonymi kodami, osadzonymi logo, rozmyciem w ruchu i niskorozdzielczymi wejsciami bez potrzeby recznego przetwarzania wstepnego.

Jak osadzic logo w kodzie QR z IronQR?

Ustaw wlasciwosc `Logo` obiektu `QrOptions` na `AnyBitmap` twojego obrazu logo i ustaw poziom korekcji bledow na wysoki. IronQR automatycznie egzekwuje to ograniczenie, poniewaz centralne logo zajmuje około 30% powierzchni kodu.

Czy IronQR obsluguje japonskie i inne znaki Unicode?

Tak. Przejdź dowolny ciąg Unicode do `QrWriter.Write()`, a biblioteka automatycznie wybierze tryb Kanji dla znaków japońskich lub tryb bajtów z markerami ECI dla innej treści Unicode.

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

Uzyj `AnyBitmap.FromStream()` do odczytu przesylanych obrazow i `QrWriter.Write()` do generowania kodow. Zwracaj wynik jako `FileContentResult` z MIME type `image/png`. Inicjuj `QrReader` jako singleton, aby zredukowac koszty ladowania modelu ML.

Czy IronQR jest wieloplatformowy?

Tak. IronQR używa tylnego renderingu SkiaSharp na platformach innych niż Windows, zapewniając jednolite generowanie i odczytywanie QR na macOS, Linux, iOS i Androidzie poprzez .NET MAUI.

Jordi Bardia
Inżynier oprogramowania
Jordi jest najbardziej biegły w Pythonie, C# i C++. Kiedy nie wykorzystuje swoich umiejętności w Iron Software, programuje gry. Dzieląc odpowiedzialność za testowanie produktów, rozwój produktów i badania, Jordi wnosi ogromną wartość do ciągłej poprawy produktów. Różnorodne doświadczenia ...
Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie