Jak odczytać typ kodu QR w języku C
Określ format każdego zeskanowanego kodu QR w czasie uruchomienia. Przeczytaj QrResult.QrType, aby wykryć symbologię i zbudować logikę przetwarzania z uwzględnieniem typu dla różnych źródeł wejściowych.
Gdy aplikacja akceptuje kody QR z wielu źródeł, format nie zawsze jest przewidywalny. Platforma logistyczna może otrzymywać standardowe kody QR z etykiet wysyłkowych oraz kompaktowe kody Micro QR z metek produktów. System przetwarzania dokumentów może skanować kody osadzone w plikach PDF oraz te wydrukowane na nośnikach fizycznych. Czytanie QrResult.QrType daje aplikacji możliwość zidentyfikowania wykrytego formatu, co umożliwia walidację wejścia, kierowanie danych do odpowiedniego obsługującego lub rejestrowanie nieobsługiwanych formatów do przeglądania.
W niniejszym przewodniku pokazano, jak pobrać format kodu QR z wyników skanowania przy użyciu biblioteki IronQR. Programiści, którzy jeszcze nie skanowali kodu QR, powinni najpierw zapoznać się z przewodnikiem Odczytywanie kodów QR z obrazu.
Szybki start: Odczytaj kod QR Typ
Załaduj obraz, zeskanuj go za pomocą QrReader i uzyskaj dostęp do wykrytego formatu.
-
Install IronQR with NuGet Package Manager
PM > Install-Package IronQR -
Skopiuj i uruchom ten fragment kodu.
var input = new QrImageInput("qr-code.png"); var results = new QrReader().Read(input); Console.WriteLine(results.First().QrType); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronQR w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę IronQR C#, aby odczytywać typy kodów QR
- Załaduj obraz i owiń go w
QrImageInput - Utwórz instancję
QrReaderi wywołajmetodę Readz danymi wejściowymi - Uzyskaj dostęp do wykrytego formatu poprzez
QrResult.QrType - Użyj
przełącznikawQrEncoding,aby kierować przetwarzanie według formatu
Jak odczytać typ kodu QR?
Aby odczytać typ kodu QR, załaduj obraz do QrImageInput, przekaż go do QrReader.Read() i uzyskaj dostęp do QrType na zwróconym QrResult. Właściwość zwraca wartość enum QrEncoding identyfikującą wykrytą symbologię.
Dane wejściowe
Poniższy kod QR zawiera adres https://ironsoftware.com i zostanie zeskanowany w celu określenia jego typu.
:path=/static-assets/qr/content-code-examples/how-to/read-qr-code-type.cs
using IronQr;
using System.Drawing;
using System.Linq;
// Import an image containing a QR code
var inputImage = Image.FromFile("sample.jpg");
// Load the asset into a QrImageInput object
QrImageInput imageInput = new QrImageInput(inputImage);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the input and get all embedded QR codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// Display the type of the first QR code found
Console.WriteLine($"The QR type is {results.First().QrType}");
Imports IronQr
Imports System.Drawing
Imports System.Linq
' Import an image containing a QR code
Dim inputImage As Image = Image.FromFile("sample.jpg")
' Load the asset into a QrImageInput object
Dim imageInput As New QrImageInput(inputImage)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the input and get all embedded QR codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Display the type of the first QR code found
Console.WriteLine($"The QR type is {results.First().QrType}")
QrType zwraca wartość enum QrEncoding, taką jak QrEncoding.QRCode, QrEncoding.MicroQRCode lub QrEncoding.RMQRCode. To sprawia, że jest bezpieczny do użycia bezpośrednio w instrukcji switch bez parsowania ani porównywania ciągów.
Wynik
Jak przekierować przetwarzanie według formatu kodu QR?
Gdy aplikacja odbiera kody QR z wielu źródeł, nie każde dane wejściowe będą miały ten sam format. Użyj switch na QrResult.QrType, aby przekierować każdy wykryty kod do właściwego obsługującego w oparciu o jego wartość QrEncoding. Dzięki temu logika specyficzna dla danego formatu pozostaje odizolowana, a dodawanie nowych gałęzi formatów jest proste.
Korzystając z tego samego kodu QR, co powyżej:
:path=/static-assets/qr/content-code-examples/how-to/read-qr-code-type-all.cs
using IronQr;
using IronQr.Enum;
using System.Drawing;
// Import an image containing QR codes
var inputImage = Image.FromFile("sample.jpg");
// Load the asset into a QrImageInput object
QrImageInput imageInput = new QrImageInput(inputImage);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read all embedded QR codes from the image
IEnumerable<QrResult> results = reader.Read(imageInput);
// Route processing based on the detected QR code format
foreach (QrResult result in results)
{
switch (result.QrType)
{
case QrEncoding.QRCode:
Console.WriteLine($"Standard QR Code: {result.Value}");
break;
case QrEncoding.MicroQRCode:
Console.WriteLine($"Micro QR Code: {result.Value}");
break;
case QrEncoding.RMQRCode:
Console.WriteLine($"RMQR Code: {result.Value}");
break;
default:
Console.WriteLine($"Other format ({result.QrType}): {result.Value}");
break;
}
}
Imports IronQr
Imports IronQr.Enum
Imports System.Drawing
' Import an image containing QR codes
Dim inputImage As Image = Image.FromFile("sample.jpg")
' Load the asset into a QrImageInput object
Dim imageInput As New QrImageInput(inputImage)
' Create a QR Reader object
Dim reader As New QrReader()
' Read all embedded QR codes from the image
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Route processing based on the detected QR code format
For Each result As QrResult In results
Select Case result.QrType
Case QrEncoding.QRCode
Console.WriteLine($"Standard QR Code: {result.Value}")
Case QrEncoding.MicroQRCode
Console.WriteLine($"Micro QR Code: {result.Value}")
Case QrEncoding.RMQRCode
Console.WriteLine($"RMQR Code: {result.Value}")
Case Else
Console.WriteLine($"Other format ({result.QrType}): {result.Value}")
End Select
Next
Każdy case celuje w określoną wartość QrEncoding. Gałąź default wychwytuje każdy format nieobsługiwany jawnie, więc pętla nigdy nie przerywa działania bez komunikatu o błędzie dla niespodziewanego wejścia. Dodaj więcej przypadków, ponieważ aplikacja musi obsługiwać dodatkowe formaty.
Wynik
Co zwraca QrResult.QrType?
QrType jest właściwością enum QrEncoding na każdym QrResult, która identyfikuje symbologię wykrytą przez skaner. Jest ona automatycznie uzupełniana podczas QrReader.Read() i nie wymaga dodatkowej konfiguracji. Dodaj using IronQr.Enum;, aby użyć wartości QrEncoding bezpośrednio w switch.
| Wartość | Opis |
|---|---|
QrEncoding.QRCode |
Standardowy kod QR, najpopularniejszy format stosowany we wszystkich branżach |
QrEncoding.MicroQRCode |
Wersja kompaktowa przeznaczona do małych powierzchni o ograniczonym obszarze druku |
QrEncoding.RMQRCode |
Prostokątny mikro kod QR zoptymalizowany pod kątem wąskich, wydłużonych kształtów etykiet (rMQR) |
QrType jest tylko do odczytu i odzwierciedla to, co skaner wykrył w obrazie. Jego wartość nie zależy od tego, w jaki sposób został wygenerowany kod QR.
Jakie są typowe zastosowania QrType?
- Logistyka i wysyłka: Wykrywanie, czy etykieta zawiera standardowy kod QR, czy kompaktowy kod Micro QR, i kierowanie każdego z nich do odpowiedniego procesu przetwarzania.
- Przetwarzanie dokumentów: Sprawdź, czy zeskanowany dokument ma oczekiwany format, zanim wyodrębnisz jego zawartość do dopasowania rekordów.
- Kioski obsługujące wiele formatów: Akceptują różne formaty kodów QR w jednym punkcie i przekazują każdy z nich do odpowiedniego modułu przetwarzającego bez konieczności ręcznej interwencji.
- Audyt i zgodność: Rejestruj typ symboliki wraz z odkodowanymi wartościami, aby stworzyć weryfikowalny zapis formatów wejściowych w różnych partiach.
- Kontrola jakości: Sprawdź, czy wygenerowane kody QR skanują się jako zamierzony typ, potwierdzając, że wynik jest zgodny ze specyfikacją.
Więcej informacji na temat odczytywania danych z kodów QR po wykryciu ich typu można znaleźć w przewodniku Odczytywanie wartości kodów QR oraz w pełnym zestawie funkcji IronQR.

