Przejdź do treści stopki
KORZYSTANIE Z IRONBARCODE
Jak odczytać skaner BarCode w aplikacji C# dla systemu Windows

Jak używać skanerów kodów kreskowych w aplikacjach Windows C#

W tym samouczku pokażemy, jak skanować kody QR i kody kreskowe w aplikacjach konsolowych C# oraz aplikacjach .NET Windows Forms, na przykładzie biblioteki IronBarcode.

Korzystając z biblioteki IronBarcode, można skanować i odczytywać wiele kodów kreskowych jednocześnie, a także z powodzeniem skanować niedoskonałe obrazy. Najpierw wyjaśnijmy, czym jest skaner BarCode.

Czym jest skaner BarCode?

BarCode to kwadratowy lub prostokątny obraz składający się z serii równoległych czarnych linii i białych przestrzeni o różnej szerokości. Skaner kodów kreskowych lub czytnik kodów kreskowych to urządzenie, które może odczytywać wydrukowane kody kreskowe, dekodować dane zawarte w kodzie kreskowym i wysyłać je do komputera.

Poniższe kroki przedstawiają, jak stworzyć skaner kodów kreskowych przy pomocy biblioteki IronBarcode.

Jak odczytywać BarCodes w języku C

  • Utwórz projekt aplikacji .NET Windows Forms w programie Microsoft Visual Studio
  • Zainstaluj bibliotekę BarCode
  • Odczytuj dowolny kod kreskowy lub kod QR
  • Odczyt wielu BarCodes lub kodów QR podczas jednego skanowania
  • Umożliw IronBarcode odczytywanie danych z niedoskonałych skanów i zdjęć

1. Utwórz aplikację Windows Forms w programie Microsoft Visual Studio

Otwórz Visual Studio > kliknij Utwórz nowy projekt > wybierz szablon aplikacji Windows Forms > naciśnij Dalej > nadaj nazwę projektowi > naciśnij Dalej > wybierz docelową platformę .NET Framework > kliknij przycisk Utwórz.

Po utworzeniu projektu zaprojektuj formularz w następujący sposób, korzystając z zestawu narzędzi Visual Studio: kontrolki PictureBox, Label, TextBox i Button.

Jak korzystać ze skanerów BarCode w aplikacji C# dla systemu Windows, rysunek 1: Skaner BarCode Skaner BarCode

2. Zainstaluj bibliotekę BarCode .NET w języku C

Bibliotekę BarCode Library można zainstalować, korzystając z jednej z trzech poniższych metod:

1. Konsola menedżera pakietów

Wpisz następujące polecenie w konsoli menedżera pakietów. Pobierze i zainstaluje pakiet za Ciebie.

Install-Package BarCode

2. Rozwiązanie NuGet Packages Manager

Bibliotekę BarCode Library można również zainstalować za pomocą rozwiązania NuGet Package. Wystarczy wykonać następujące kroki:

Kliknij Narzędzia > Menedżer pakietów NuGet > Zarządzaj pakietami NuGet dla rozwiązania.

Spowoduje to otwarcie menedżera pakietów NuGet. Kliknij przycisk Przeglądaj i wyszukaj BarCode, a następnie zainstaluj bibliotekę klas.

3. Pobierz z linku

Alternatywnie można pobrać plik IronBarCode.Dll i dodać go do projektu jako odwołanie.

Po pobraniu dodaj następujące odniesienia do swojego projektu czytnika BarCode.

using IronBarCode;
using IronBarCode;
Imports IronBarCode
$vbLabelText   $csharpLabel

3. Odczytuj dowolny BarCode lub kod QR

Odczytanie kodu kreskowego lub kodu QR w środowisku .NET jest niezwykle łatwe dzięki bibliotece IronBarcode z czytnikiem kodów kreskowych .NET.

Skaner BarCode

W swoim projekcie wyszukaj obraz, który chcesz odczytać. Otworzy się w PictureBox; Teraz kliknij "zeskanuj kod". Tekst pojawi się w polu tekstowym.

Oto kod przycisku "przeglądaj" służącego do otwierania obrazu:

// Open file dialog   
OpenFileDialog open = new OpenFileDialog();
// Image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp";
if (open.ShowDialog() == DialogResult.OK) {  
    // Display image in PictureBox
    pictureBox1.Image = new Bitmap(open.FileName); 
    // Store image file path in class data member. Initialize it as string ImageFileName;
    ImageFileName = open.FileName; 
}
// Open file dialog   
OpenFileDialog open = new OpenFileDialog();
// Image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp";
if (open.ShowDialog() == DialogResult.OK) {  
    // Display image in PictureBox
    pictureBox1.Image = new Bitmap(open.FileName); 
    // Store image file path in class data member. Initialize it as string ImageFileName;
    ImageFileName = open.FileName; 
}
' Open file dialog   
Dim open As New OpenFileDialog()
' Image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp"
If open.ShowDialog() = DialogResult.OK Then
	' Display image in PictureBox
	pictureBox1.Image = New Bitmap(open.FileName)
	' Store image file path in class data member. Initialize it as string ImageFileName;
	ImageFileName = open.FileName
End If
$vbLabelText   $csharpLabel

Kod przycisku "scan code":

// Read the barcode from the image file path
BarcodeResult Result = BarcodeReader.Read(ImageFileName);
// Display the decoded text in TextBox
textBox1.Text = Result.Text;
// Read the barcode from the image file path
BarcodeResult Result = BarcodeReader.Read(ImageFileName);
// Display the decoded text in TextBox
textBox1.Text = Result.Text;
' Read the barcode from the image file path
Dim Result As BarcodeResult = BarcodeReader.Read(ImageFileName)
' Display the decoded text in TextBox
textBox1.Text = Result.Text
$vbLabelText   $csharpLabel

Skaner BarCode wyświetla dane BarCode w polu tekstowym w następujący sposób:

Jak korzystać ze skanerów BARCODE w aplikacji C# dla systemu Windows, rysunek 2: Obraz BARCODE do zeskanowania za pomocą języka C# BarCode Image to be Scanned with C#

Skaner kodów QR

W tej sekcji biblioteka IronBarcode skutecznie radzi sobie z rzeczywistymi sytuacjami związanymi z przekrzywionymi kodami QR. Chociaż kod QR o skośnym kącie może być obsługiwany i odczytywany metodą Read, jego odczytanie może jednak zająć więcej czasu. Biblioteka IronBarcode zapewnia spersonalizowany sposób wykorzystania BarcodeReaderOptions jako dodatkowego parametru do obsługi takich danych wejściowych w postaci obrazu. Kod wygląda następująco:

// Define a collection of image filters to apply
var filtersToApply = new ImageFilterCollection() {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter()
};

// Configure barcode reader options with specified filters
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions() {
    ImageFilters = filtersToApply,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
};

// Read the barcode/QR code with custom options and display result
BarcodeResult Result = BarcodeReader.Read(ImageFileName, myOptionsExample);
textBox1.Text = Result.Text;
// Define a collection of image filters to apply
var filtersToApply = new ImageFilterCollection() {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter()
};

// Configure barcode reader options with specified filters
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions() {
    ImageFilters = filtersToApply,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
};

// Read the barcode/QR code with custom options and display result
BarcodeResult Result = BarcodeReader.Read(ImageFileName, myOptionsExample);
textBox1.Text = Result.Text;
' Define a collection of image filters to apply
Dim filtersToApply = New ImageFilterCollection() From {
	New SharpenFilter(),
	New InvertFilter(),
	New ContrastFilter(),
	New BrightnessFilter(),
	New AdaptiveThresholdFilter(),
	New BinaryThresholdFilter()
}

' Configure barcode reader options with specified filters
Dim myOptionsExample As New BarcodeReaderOptions() With {
	.ImageFilters = filtersToApply,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}

' Read the barcode/QR code with custom options and display result
Dim Result As BarcodeResult = BarcodeReader.Read(ImageFileName, myOptionsExample)
textBox1.Text = Result.Text
$vbLabelText   $csharpLabel

Po otwarciu przekrzywionego obrazu kodu QR wynik będzie wyglądał następująco:

Jak korzystać ze skanerów BarCode w aplikacji C# dla systemu Windows, rysunek 4: Przekrzywiony obraz kodu QR Przekrzywiony obraz kodu QR

Odczytywanie wielu BarCodes podczas jednego skanowania

Dokumenty PDF

Obrazy BarCode można skanować z pliku PDF, a każdy wynik można wyświetlić w odpowiedni sposób zgodnie z potrzebami. Poniższy przykładowy kod umożliwia odczytanie wielu BarCodes z pliku PDF.

// Scan for multiple barcodes within a PDF document
BarcodeResult[] PDFResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results found
foreach (var PageResult in PDFResults) { 
    string Value = PageResult.Value;
    int PageNum = PageResult.PageNumber;
    System.Drawing.Bitmap Img = PageResult.BarcodeImage;
    BarcodeEncoding BarcodeType = PageResult.BarcodeType;
    byte[] Binary = PageResult.BinaryValue;
    Console.WriteLine(PageResult.Value + " on page " + PageNum);
}
// Scan for multiple barcodes within a PDF document
BarcodeResult[] PDFResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results found
foreach (var PageResult in PDFResults) { 
    string Value = PageResult.Value;
    int PageNum = PageResult.PageNumber;
    System.Drawing.Bitmap Img = PageResult.BarcodeImage;
    BarcodeEncoding BarcodeType = PageResult.BarcodeType;
    byte[] Binary = PageResult.BinaryValue;
    Console.WriteLine(PageResult.Value + " on page " + PageNum);
}
' Scan for multiple barcodes within a PDF document
Dim PDFResults() As BarcodeResult = BarcodeReader.ReadPdf("MultipleBarcodes.pdf")

' Work with the results found
For Each PageResult In PDFResults
	Dim Value As String = PageResult.Value
	Dim PageNum As Integer = PageResult.PageNumber
	Dim Img As System.Drawing.Bitmap = PageResult.BarcodeImage
	Dim BarcodeType As BarcodeEncoding = PageResult.BarcodeType
	Dim Binary() As Byte = PageResult.BinaryValue
	Console.WriteLine(PageResult.Value & " on page " & PageNum)
Next PageResult
$vbLabelText   $csharpLabel

BarCode i kody QR obecne w plikach PDF:

Jak korzystać ze skanerów BarCode w aplikacji C# dla systemu Windows, rysunek 3: C# — wyniki odczytu BarCode z pliku PDF C# - Odczytywanie BarCode'ów z pliku PDF

Odczytywanie BarCodes z niedoskonałych obrazów

W rzeczywistych przypadkach użycia BARCODE często występują z niedoskonałościami na obrazach, skanach, miniaturach lub fotografiach i mogą zawierać szumy cyfrowe lub być przekrzywione. W tej sekcji pokazano, jak odczytywać dane z BarCodes z miniatur.

Miniatury

Biblioteka IronBarcode korzysta z generatora kodów kreskowych C#, który jest w stanie odczytać nawet uszkodzoną miniaturę kodu kreskowego.

Jak korzystać ze skanerów BarCode w aplikacji C# dla systemu Windows, rysunek 5: Automatyczna korekcja rozmiaru miniatur BarCode. Plik do odczytania za pomocą IronBarcode w języku C# Automatyczna korekcja rozmiaru miniatur BarCode. Plik odczytywany za pomocą IronBarcode w języku C#

Automatycznie wykrywa obrazy BarCode, które są zbyt małe, aby w rozsądny sposób przedstawiać rzeczywisty BarCode, a następnie powiększa i usuwa wszystkie cyfrowe zakłócenia związane z tworzeniem miniatur, dzięki czemu stają się one ponownie czytelne.

// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.Read("ThumbnailOfBarcode.gif");
// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.Read("ThumbnailOfBarcode.gif");
' Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
Dim SmallResult As BarcodeResult = BarcodeReader.Read("ThumbnailOfBarcode.gif")
$vbLabelText   $csharpLabel

Podsumowanie

IronBarcode to wszechstronna biblioteka oprogramowania .NET i generator kodów QR w języku C#, służąca do skanowania i odczytywania szerokiej gamy formatów obrazów kodów kreskowych. Działa ona niezależnie od tego, czy kody kreskowe są idealnymi zrzutami ekranu, czy też w rzeczywistości są to zdjęcia, skany lub inne niedoskonałe obrazy z rzeczywistego świata. Ponadto IronBarcode oferuje szeroki zakres opcji dostosowywania w celu poprawy szybkości odczytu kodów kreskowych, takich jak obszary przycinania lub wielowątkowość, oraz dokładności modelu ML. Więcej informacji na temat IronBarcode można znaleźć na oficjalnej stronie dokumentacji.

Obecnie, kupując kompletny pakiet Iron Suite, można otrzymać pięć bibliotek w cenie zaledwie dwóch.

Często Zadawane Pytania

Czym jest skaner BarCode w kontekście aplikacji C#?

Skaner kodów kreskowych to urządzenie, które odczytuje wydrukowane kody kreskowe, dekoduje informacje i wysyła je do komputera. W aplikacjach C# tę funkcjonalność można zaimplementować przy użyciu bibliotek takich jak IronBarcode.

Jak mogę stworzyć aplikację Windows Forms do skanowania kodów kreskowych przy użyciu języka C#?

Aby utworzyć aplikację Windows Forms do skanowania kodów kreskowych w języku C#, otwórz program Visual Studio, utwórz nowy projekt przy użyciu szablonu „Windows Forms Application Template”, skonfiguruj docelową platformę .NET Framework i użyj elementów sterujących, takich jak PictureBox, Label, TextBox i Button, aby zaprojektować formularz.

Jaka jest zalecana metoda instalacji biblioteki BarCode w projekcie C#?

Bibliotekę kodów kreskowych, taką jak IronBarcode, można zainstalować w projekcie C# za pomocą konsoli Package Manager Console, wpisując polecenie Install-Package IronBarCode, poprzez menedżera pakietów NuGet lub pobierając plik DLL i dodając go jako odwołanie.

Czy za pomocą biblioteki C# można odczytać wiele BarCodes podczas jednego skanowania?

Tak, korzystając z IronBarcode, można odczytać wiele kodów kreskowych podczas jednego skanowania za pomocą metody BarcodeReader.ReadPdf, nawet z dokumentów PDF.

W jaki sposób biblioteka odczytuje BarCodes z obrazów o niskiej jakości?

IronBarcode potrafi odczytywać kody kreskowe z obrazów o niskiej jakości, stosując filtry obrazu i techniki skalowania w celu redukcji szumów cyfrowych, co zapewnia dokładność odczytu.

Jakie formaty kodów kreskowych są obsługiwane przez biblioteki C#, takie jak IronBarcode?

IronBarcode obsługuje szeroki zakres formatów kodów kreskowych, w tym kody QR i Code128. Potrafi odczytywać te formaty nawet wtedy, gdy obrazy są niedoskonałe lub zostały zarejestrowane aparatem fotograficznym.

Jakie kroki należy wykonać, aby zaimplementować odczyt BarCode w aplikacji .NET?

Aby wdrożyć odczyt kodów kreskowych, załaduj obraz do PictureBox, uruchom akcję „scan code” i użyj IronBarcode do przetworzenia i wyświetlenia zdekodowanego tekstu w TextBox.

Czy IronBarcode skutecznie radzi sobie z przekrzywionymi lub pochylonymi kodami QR?

Tak, IronBarcode może skutecznie obsługiwać przekrzywione kody QR, wykorzystując BarcodeReaderOptions do zastosowania niezbędnych filtrów obrazu i korekt w celu dokładnego odczytu.

Jakie funkcje dostosowywania oferuje IronBarcode do odczytu kodów kreskowych?

IronBarcode oferuje funkcje takie jak obszary przycinania, wielowątkowość i regulacja parametrów, które zwiększają szybkość i dokładność odczytu kodów kreskowych.

Gdzie mogę znaleźć bardziej szczegółowe informacje na temat korzystania z bibliotek BarCode w języku C#?

Aby uzyskać bardziej szczegółowe informacje na temat korzystania z bibliotek kodów kreskowych w języku C#, można odwiedzić oficjalną stronę dokumentacji na stronie internetowej Iron Software.

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