Jak odczytać wiele kodów kreskowych jednocześnie w C
IronBarcode umozliwia jednoczesne odczytywanie wielu kodow kreskowych z obrazow i PDF-ow poprzez ustawienie ExpectMultipleBarcodes = true, co usprawnia przetwarzanie danych w aplikacjach do logistyki, handlu detalicznego i zarzadzania inwentarzem. Niezależnie od tego, czy budujesz systemy magazynowe, aplikacje punktów sprzedaży detalicznej, czy rozwiązania do przetwarzania dokumentów, zaawansowane możliwości odczytu IronBarcode zapewniają niezawodność i wydajność, jakiej potrzebujesz.
Szybki start: Łatwe odczytywanie wszystkich kodów kreskowych z obrazu
Ten przykład pokazuje, jak szybko można użyć IronBarcode do zeskanowania obrazu w celu wykrycia każdego kodu kreskowego, który zawiera. Wystarczy ustawic ExpectMultipleBarcodes = true obok typow kodow kreskowych, ktore chcesz—bez zbednej tresci, bez problemow.
-
Install IronBarcode with NuGet Package Manager
-
Skopiuj i uruchom ten fragment kodu.
var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { ExpectMultipleBarcodes = true, ExpectBarcodeTypes = IronBarCode.BarcodeEncoding.AllOneDimensional }); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronBarcode w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę C# do odczytu wielu kodów kreskowych
- Użyj metody
Readdo wyodrębniania wartości kodów kreskowych z różnych formatów obrazów - Skorzystaj z właściwości
ExpectMultipleBarcodes, aby skonfigurować odczyt pojedynczych lub wielu kodów kreskowych - Ustaw właściwość
ExpectMultipleBarcodesna false, aby zwiększyć wydajność - Wydrukuj wartości kodów kreskowych
Jak odczytać wiele kodów kreskowych z obrazu?
Domyślnie IronBarcode ciągle skanuje dokument, aby odczytać wiele kodów kreskowych. Zdarzały się jednak sytuacje, gdy zwracana była tylko jedna wartość kodu kreskowego, nawet jeśli obecne były więcej kodów. Aby rozwiązać ten problem, dostosuj ustawienia, aby umożliwić odczyt wielu kodów kreskowych, jak pokazano poniżej. Wlasciwosc ExpectMultipleBarcodes istnieje w obu klasach BarcodeReaderOptions i PdfBarcodeReaderOptions, co pozwala na jej wykorzystanie do odczytywania kodow kreskowych zarówno z obrazow, jak i dokumentow PDF.
:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-read-multiple-barcodes.cs
using IronBarCode;
using System;
// Set the option to read multiple barcodes
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional,
};
// Read barcode
var results = BarcodeReader.Read("testbc1.png", options);
foreach (var result in results)
{
Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System
' Set the option to read multiple barcodes
Private options As New BarcodeReaderOptions() With {
.ExpectMultipleBarcodes = True,
.ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional
}
' Read barcode
Private results = BarcodeReader.Read("testbc1.png", options)
For Each result In results
Console.WriteLine(result.ToString())
Next result
Ustawienie ExpectMultipleBarcodes na true umozliwia IronBarcode skanowanie calego dokumentu w poszukiwaniu wielu kodow kreskowych i przechowywanie ich w zmiennej BarcodeResults. Korzystajac z petli foreach, mozna latwo uzyskac dostep i wydrukowac wszystkie wartosci kodow kreskowych na konsole.
Zaawansowane scenariusze odczytu wielu kodów kreskowych
Pracując z wieloma kodami kreskowymi, możesz napotkać sytuacje wymagające dodatkowej konfiguracji. Oto szczegółowy przykład demonstrujący, jak odczytać wiele kodów kreskowych o różnych formatach z złożonego dokumentu:
:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-3.cs
using IronBarCode;
using System;
using System.Linq;
// Configure advanced options for mixed barcode types
BarcodeReaderOptions advancedOptions = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = true,
// Read both 1D and 2D barcodes
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode | BarcodeEncoding.DataMatrix,
// Apply image correction filters for better accuracy
ImageFilters = new ImageFilterCollection() {
new SharpenFilter(),
new ContrastFilter()
},
// Set speed vs accuracy balance
Speed = ReadingSpeed.Balanced
};
// Read barcodes from the image
var imageResults = BarcodeReader.Read("mixed-barcodes.jpg", advancedOptions);
// Process results with error handling
foreach (var result in imageResults)
{
Console.WriteLine($"Barcode Type: {result.BarcodeType}");
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Page: {result.PageNumber}");
Console.WriteLine("---");
}
Imports IronBarCode
Imports System
Imports System.Linq
' Configure advanced options for mixed barcode types
Dim advancedOptions As New BarcodeReaderOptions() With {
.ExpectMultipleBarcodes = True,
' Read both 1D and 2D barcodes
.ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional Or BarcodeEncoding.QRCode Or BarcodeEncoding.DataMatrix,
' Apply image correction filters for better accuracy
.ImageFilters = New ImageFilterCollection() From {
New SharpenFilter(),
New ContrastFilter()
},
' Set speed vs accuracy balance
.Speed = ReadingSpeed.Balanced
}
' Read barcodes from the image
Dim imageResults = BarcodeReader.Read("mixed-barcodes.jpg", advancedOptions)
' Process results with error handling
For Each result In imageResults
Console.WriteLine($"Barcode Type: {result.BarcodeType}")
Console.WriteLine($"Value: {result.Value}")
Console.WriteLine($"Page: {result.PageNumber}")
Console.WriteLine("---")
Next
Ten zaawansowany przykład przedstawia kilka ważnych funkcji:
- Obsługa mieszanych formatów kodów kreskowych: Łączenie różnych typów kodowania kodów kreskowych
- Filtry korekcji obrazów: Użycie filtrów obrazów w celu poprawy dokładności odczytu
- Optymalizacja prędkości odczytu: Równoważenie prędkości i dokładności dzięki opcjom prędkości odczytu
- Wyniki pewności: Uzyskiwanie dostępu do progu pewności dla każdego wykrytego kodu kreskowego
Jak mogę odczytać pojedynczy kod kreskowy dla lepszej wydajności?
IronBarcode odczytuje zarówno pojedyncze, jak i wielokrotne kody kreskowe na obrazach lub PDF-ach. Domyślnie silnik skanuje cały dokument, nawet jeśli istnieje tylko jeden kod kreskowy. Aby zwiekszyc wydajnosc przy odczytywaniu pojedynczego kodu kreskowego, ustaw ExpectMultipleBarcodes na false. To zatrzymuje silnik przed skanowaniem całego dokumentu po wykryciu pierwszego kodu kreskowego, co skutkuje szybszym pozyskaniem kodu. Poniższy kod demonstruje to podejście.
:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-read-single-barcode.cs
using IronBarCode;
using System;
// Set the option to read single barcode
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = false,
ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional,
};
// Read barcode
var results = BarcodeReader.Read("testbc1.png", options);
foreach (var result in results)
{
Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System
' Set the option to read single barcode
Private options As New BarcodeReaderOptions() With {
.ExpectMultipleBarcodes = False,
.ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional
}
' Read barcode
Private results = BarcodeReader.Read("testbc1.png", options)
For Each result In results
Console.WriteLine(result.ToString())
Next result
W tym przykladzie uzyto tego samego obrazu z wieloma kodami kreskowymi jak wczesniej, ale ustawiono ExpectMultipleBarcodes na false. W rezultacie zwracana jest tylko wartość pierwszego BARCODE'a, a proces skanowania zatrzymuje się po pobraniu pierwszego BARCODE'a.
Optymalizacja odczytu pojedynczego BarCoda za pomocą obszarów przycięcia
Aby jeszcze bardziej zwiekszyc wydajnosc przy odczytywaniu pojedynczych kodow kreskowych, polacz ustawienie ExpectMultipleBarcodes = false ze specyfikacjami obszaru przycinania. Ta technika jest szczególnie przydatna, gdy znasz przybliżoną lokalizację BarCoda:
:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-5.cs
using IronBarCode;
using IronSoftware.Drawing;
// Define a crop region where the barcode is likely located
var cropRegion = new Rectangle(100, 100, 300, 200);
// Configure options for optimal single barcode reading
BarcodeReaderOptions optimizedOptions = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = false,
ExpectBarcodeTypes = BarcodeEncoding.Code128,
CropArea = cropRegion,
Speed = ReadingSpeed.Faster
};
// Read with optimized settings
var result = BarcodeReader.Read("product-label.png", optimizedOptions).FirstOrDefault();
if (result != null)
{
Console.WriteLine($"Barcode found: {result.Value}");
}
Imports IronBarCode
Imports IronSoftware.Drawing
' Define a crop region where the barcode is likely located
Dim cropRegion As New Rectangle(100, 100, 300, 200)
' Configure options for optimal single barcode reading
Dim optimizedOptions As New BarcodeReaderOptions() With {
.ExpectMultipleBarcodes = False,
.ExpectBarcodeTypes = BarcodeEncoding.Code128,
.CropArea = cropRegion,
.Speed = ReadingSpeed.Faster
}
' Read with optimized settings
Dim result = BarcodeReader.Read("product-label.png", optimizedOptions).FirstOrDefault()
If result IsNot Nothing Then
Console.WriteLine($"Barcode found: {result.Value}")
End If
O ile szybsze jest odczytywanie pojedynczego BarCoda?
Ustawienie ExpectMultipleBarcodes = false znaczaco poprawia efektywnosc odczytywania pojedynczych kodow kreskowych. Wzrost wydajności jest szczególnie zauważalny podczas pracy z obrazami o wysokiej rozdzielczości lub podczas wdrażania asynchronicznego odczytu BarCode w aplikacjach o dużej przepustowości.
Korzystajac z dostarczonego fragmentu kodu, oto szacunkowa roznica wydajnosci miedzy ustawieniem ExpectMultipleBarcodes = true a false na tej samej maszynie:
| ExpectMultipleBarcodes = true | ExpectMultipleBarcodes = false |
|---|---|
| 00,91 sekundy | 00,10 sekundy |
Oznacza to około 9-krotną poprawę wydajności podczas odczytu pojedynczych BARCODE-ów. Rzeczywisty wzrost wydajności zależy od:
- Rozdzielczość i złożoność obrazów
- Liczba BarCodes obecnych na obrazie
- Wybrane formaty BarCode
- Zastosowane filtry obrazu
- Specyfikacje sprzętowe
Najlepsze praktyki dotyczące odczytu wielu BarCodes
Wdrażając funkcję odczytu wielu BarCodes w aplikacjach produkcyjnych, należy wziąć pod uwagę następujące najlepsze praktyki:
-
Okresl oczekiwane typy kodow kreskowych: Zamiast uzywac
BarcodeEncoding.All, podaj tylko oczekiwane formaty. Znacznie poprawia to wydajność. -
Używaj odpowiednich formatów obrazów: Aby uzyskać najlepsze wyniki, używaj obrazów o wysokim kontraście. Dowiedz się więcej o tworzeniu optymalnych obrazów BarCode.
-
Obsługa uszkodzonych BARCODE-ów: W rzeczywistości BARCODE-y mogą być uszkodzone lub źle wydrukowane. Należy zastosować techniki korekcji obrazu w celu poprawy wskaźników skuteczności czytania.
-
Przetwarzanie strumieniowe: W przypadku dużych partii danych warto rozważyć odczyt ze strumieni, aby zoptymalizować wykorzystanie pamięci.
- Obsługa błędów: Zawsze należy wdrożyć odpowiednią obsługę błędów w sytuacjach, gdy nie można odczytać kodów kreskowych:
:path=/static-assets/barcode/content-code-examples/how-to/read-multiple-barcodes-6.cs
try
{
var results = BarcodeReader.Read("barcodes.png", new BarcodeReaderOptions
{
ExpectMultipleBarcodes = true
});
if (!results.Any())
{
Console.WriteLine("No barcodes found in the image");
}
else
{
Console.WriteLine($"Found {results.Count()} barcodes");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error reading barcodes: {ex.Message}");
// Log error for debugging
}
Imports System
Try
Dim results = BarcodeReader.Read("barcodes.png", New BarcodeReaderOptions With {
.ExpectMultipleBarcodes = True
})
If Not results.Any() Then
Console.WriteLine("No barcodes found in the image")
Else
Console.WriteLine($"Found {results.Count()} barcodes")
End If
Catch ex As Exception
Console.WriteLine($"Error reading barcodes: {ex.Message}")
' Log error for debugging
End Try
Postępując zgodnie z tymi praktykami i wykorzystując wszechstronne funkcje IronBarcode, można tworzyć solidne aplikacje, które skutecznie radzą sobie z wieloma scenariuszami odczytu kodów kreskowych w różnych branżach i zastosowaniach.
Często Zadawane Pytania
Jak mogę odczytać wiele kodów kreskowych z jednego obrazu w C#?
Z IronBarcode możesz odczytać wiele kodów kreskowych z jednego obrazu, ustawiając ExpectMultipleBarcodes = true w BarcodeReaderOptions. To pozwala IronBarcode zeskanować cały dokument i zwrócić wszystkie znalezione kody kreskowe w kolekcji BarcodeResults, przez którą można iterować.
Jaki jest najszybszy sposób skanowania wszystkich kodów kreskowych na obrazie?
Najszybszym podejściem jest użycie metody Read IronBarcode z ExpectMultipleBarcodes = true: var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { ExpectMultipleBarcodes = true }). Ten minimalny kod wyodrębnia wszystkie wartości kodów kreskowych bez skomplikowanej konfiguracji.
Czy mogę odczytać wiele kodów kreskowych z dokumentów PDF oraz z obrazów?
Tak, IronBarcode wspiera odczyt wielu kodów kreskowych zarówno z obrazów, jak i dokumentów PDF. Właściwość ExpectMultipleBarcodes jest dostępna zarówno w klasach BarcodeReaderOptions, jak i PdfBarcodeReaderOptions, pozwalając na konfigurację odczytu wielu kodów kreskowych dla dowolnego typu dokumentu.
Co się stanie, jeśli nie ustawię ExpectMultipleBarcodes na true?
Domyślnie IronBarcode ciągle skanuje dokumenty pod kątem wielu kodów kreskowych. Jednak w niektórych przypadkach tylko jedna wartość kodu kreskowego może być zwrócona, nawet gdy istnieją wiele kodów kreskowych. Ustawienie ExpectMultipleBarcodes = true wyraźnie zapewnia, że IronBarcode skanuje i zwraca wszystkie kody kreskowe w dokumencie.
Jak uzyskać dostęp do poszczególnych wartości kodów kreskowych po odczytaniu wielu kodów kreskowych?
Po odczytaniu wielu kodów kreskowych za pomocą IronBarcode, wyniki są przechowywane w zmiennej BarcodeResults. Możesz łatwo uzyskać dostęp do poszczególnych wartości kodów kreskowych, używając pętli foreach do przeiterowania przez kolekcję i przetworzenia każdej wartości, tekstu i właściwości formatu kodu kreskowego.
Czy odczyt wielu kodów kreskowych jest odpowiedni dla aplikacji sprzedaży detalicznej i logistycznych?
Tak, możliwość odczytu wielu kodów kreskowych przez IronBarcode jest idealna dla systemów punktów sprzedaży detalicznej, zarządzania magazynem, śledzenia logistyki i aplikacji zarządzania zapasami. Uproszcza przetwarzanie danych przez efektywne skanowanie wszystkich kodów kreskowych na etykietach wysyłkowych, katalogach produktów lub arkuszach zapasów jednocześnie.
Czy mogę określić, jakich typów kodów kreskowych szukać podczas odczytywania wielu kodów kreskowych?
Tak, IronBarcode pozwala określić oczekiwane typy kodów kreskowych za pomocą właściwości ExpectBarcodeTypes. Możesz ustawić ją na skanowanie określonych formatów, takich jak AllOneDimensional, QRCode, lub dowolną kombinację obsługiwanych typów kodów kreskowych, aby zoptymalizować wydajność skanowania.
Czy ustawienie ExpectMultipleBarcodes wpływa na wydajność skanowania?
Ustawienie ExpectMultipleBarcodes = false może zwiększyć wydajność, gdy wiesz, że w dokumencie istnieje tylko jeden kod kreskowy. IronBarcode zakończy skanowanie po znalezieniu pierwszego kodu kreskowego, co sprawia, że jest szybsze dla scenariuszy z jednym kodem kreskowym, zachowując jednocześnie elastyczność dla odczytu kilku kodów kreskowych, gdy jest to potrzebne.
Jakie umiejętności programistyczne są potrzebne do zaimplementowania IronBarcode w projekcie?
Podstawowa znajomość programowania w C# jest wystarczająca do zaimplementowania IronBarcode w projekcie, ponieważ oferuje on nieskomplikowane metody i kompleksową dokumentację do prowadzenia deweloperów.
Czy IronBarcode jest odpowiedni zarówno dla małych projektów, jak i dużych aplikacji korporacyjnych?
IronBarcode jest zaprojektowany do bycia skalowalnym i wszechstronnym, dzięki czemu jest odpowiedni zarówno dla małych projektów, jak i dużych aplikacji korporacyjnych, które wymagają solidnych rozwiązań kodów kreskowych.

