Jak odczytywać BARCODES z obrazów przy użyciu języka C
IronBarcode odczytuje kody kreskowe z obrazów w C# za pomocą jednej linii kodu, wykorzystując BarcodeReader.Read(), obsługując wiele formatów obrazów, w tym PNG, JPEG, GIF, BMP, TIFF i SVG, z opcjami dostosowywania dla lepszej wydajności i dokładności.
Jedną z kluczowych funkcji IronBarcode jest możliwość odczytu kodów kreskowych w wielu formatach obrazów bez konieczności dodatkowej konfiguracji. Obecnie IronBarcode obsługuje następujące formaty obrazów:
- Skalowalna grafika wektorowa (SVG)
- Joint Photographic Experts Group (JPEG)
- Portable Network Graphics (PNG)
- Graphics Interchange Format (GIF)
- Format plików graficznych z tagami (TIFF)
- Plik obrazu bitmapowego (BMP)
Jest to możliwe dzięki naszej bibliotece open source, IronDrawing. Pełną listę obsługiwanych formatów BARCODE, w tym zarówno typów 1D, jak i 2D, można znaleźć w naszej obszernej dokumentacji.
Szybki start: Odczytuj BarCodes z obrazu w kilka sekund
Za pomocą jednej prostego wywołania IronBarCode.BarcodeReader.Read(), można wyodrębnić dane z kodu kreskowego bezpośrednio z formatów plików obrazów, takich jak PNG, JPEG, GIF, BMP i TIFF. Zacznij od razu — bez skomplikowanej konfiguracji, tylko natychmiastowe wyniki.
-
Install IronBarcode with NuGet Package Manager
-
Skopiuj i uruchom ten fragment kodu.
var results = IronBarCode.BarcodeReader.Read("path/to/image.png"); -
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 BARCODE z obrazu
- Użyj metody
Readdo odczytania wartości BarCode z różnych formatów obrazów - Użyj klasy BarcodeReaderOptions, aby skonfigurować ustawienia odczytu
- Określ obszary BarCode na obrazie za pomocą właściwości CropArea
- Określ typy kodów kreskowych do odczytu, ustawiając właściwość ExpectBarCodeTypes
Jak odczytywać BarCodes bezpośrednio z obrazów?
Oto jak używać IronBarcode do odczytu kodów kreskowych. Aby uzyskać obszerny samouczek dotyczący odczytu kodów kreskowych w języku C# / .NET, w tym zaawansowanych technik przetwarzania plików PDF i operacji wsadowych, zapoznaj się z naszym szczegółowym przewodnikiem:
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-1.cs
using IronBarCode;
using System;
var myBarcode = BarcodeReader.Read(@"image_file_path.jpg"); //image file path
foreach (var item in myBarcode)
{
Console.WriteLine(item.ToString());
}
Imports IronBarCode
Imports System
Private myBarcode = BarcodeReader.Read("image_file_path.jpg") 'image file path
For Each item In myBarcode
Console.WriteLine(item.ToString())
Next item
Chcesz wiedzieć, jakie są wartości BarCode w przykładach? Wypróbuj to za pomocą fragmentu kodu!
Aby używać IronBarcode, pierwszą rzeczą, którą musisz zrobić, jest zainstalowanie biblioteki IronBarcode poprzez menedżera pakietów NuGet Microsoft Visual Studio w twoim projekcie, jak pokazano na poniższym zdjęciu. To pozwoli na dostęp do metody BarcodeReader.Read() IronBarcode, aby bezpośrednio odczytać obrazy kodu kreskowego.
IronBarcode oferuje prostotę, pozwalając użytkownikom używać tylko BarcodeReader.Read() do odczytu pliku obrazowego, który został już dołączony do projektu, podając jako argument nazwa pliku albo ścieżka do pliku. Najlepszą praktyką jest użycie dosłownego ciągu znaków, '@' podczas określania ścieżki pliku w metodzie, aby uniknąć dodatkowych znaków ucieczki '\' w ciągu ścieżki pliku.
Załącz metodę Values() na końcu wywołania metody BarcodeReader.Read(), aby uzyskać wartość kodu kreskowego jako obiekt System.String[].
Aby wyświetlić wynik w konsoli, można użyć pętli foreach, aby iterować przez wartości przechowywane w tablicy string[] i wewnątrz bloku pętli wywołać metodę Console.WriteLine() z zmienną iteracyjną jako parametrem.
IronBarcode jest zdolny do odczytu formatów kodów kreskowych 1-wymiarowych (Codabar, Code128, Code39, Code93, EAN13, EAN18, ITF, MSI, UPCA, UPCE) oraz 2-wymiarowych formatów kodów kreskowych (Aztec, DataMatrix, QRCode) w różnych formatach obrazów.
Jak Mogę Skonfigurować Opcje Odczytu Kodów Kreskowych dla Lepszej Wydajności?
Czy odczytywanie kodu kreskowego jest zbyt wolne? Czy kod kreskowy na zdjęciu jest zbyt mały, co uniemożliwia IronBarcode jego odczytanie? Chcesz odczytać tylko określone obszary obrazu? Chcesz odczytać tylko określone typy kodów kreskowych z obrazu zawierającego mieszankę kodów kreskowych? Chcesz poprawić ogólną wydajność odczytu?
BarcodeReaderOptions pozwala użytkownikom dostosować lub regulować działanie czytnika kodów kreskowych, aby rozwiązać wszystkie te problemy. Szczegółowe przykłady dotyczące ustawiania opcji czytnika kodów kreskowych znajdziesz w naszym obszernym przewodniku. Poniższe sekcje omawiają dostępne regulowane właściwości w BarcodeReaderOptions po kolei.
Jak Określić, Który Obszar Obrazu Czytać?
CropArea jest właściwością typu IronSoftware.Drawing.CropRectangle dostępną w BarcodeReaderOptions, która pozwala użytkownikom określić obszar obrazu, który IronBarcode powinien odczytać. Pomaga to poprawić wydajność odczytu, ponieważ czytnik kodów kreskowych nie skanuje całego obrazu w poszukiwaniu kodów kreskowych, a także zwiększa dokładność odczytu, ponieważ obszar do odczytu został określony. Dowiedz się więcej o tym, jak określić obszar kadrowania dla optymalnej wydajności.
Aby ustawić właściwość CropArea, wystarczy zainicjować nowy obiekt typu Rectangle i określić współrzędne prostokąta, szerokość i długość jako argumenty. Jednostka miary akceptowana to piksele (px).
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-3.cs
// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300);
var options = new BarcodeReaderOptions()
{
CropArea = cropArea
};
Imports IronSoftware.Drawing
' Example of setting CropArea
Dim cropArea As New Rectangle(x:=100, y:=100, width:=300, height:=300)
Dim options As New BarcodeReaderOptions() With {
.CropArea = cropArea
}
Które Typy Kodów Kreskowych Powinienem Określić dla Szybszego Odczytu?
Domyślnie, wszystkie obsługiwane kody kreskowe w IronBarcode będą skanowane w obrazie. Jednak jeśli użytkownik wie, jakie typy kodów kreskowych są dostępne lub chce, aby były odczytywane w obrazie, ustawienie tej właściwości na odczytywanie tylko określonych typów kodów kreskowych znacznie zwiększy wydajność odczytu i dokładność, ponieważ czytnik kodów kreskowych nie musi iterować przez kolekcje kodów kreskowych, aby zinterpretować i odczytać kod kreskowy.
Aby użyć tej właściwości, wystarczy ustawić ExpectBarcodeTypes na jedno z pól typu wyliczeniowego BarcodeEncoding. Poniżej znajdują się przykłady każdego typu kodu kreskowego obsługiwanego przez IronBarcode.
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-4.cs
// Example: Expect only QR codes and Code128
var options = new BarcodeReaderOptions()
{
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
' Example: Expect only QR codes and Code128
Dim options As New BarcodeReaderOptions() With {
.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}
Kiedy Powinienem Wyłączyć Odczyt Wielu Kodów Kreskowych?
IronBarcode domyślnie przeskanuje wszystkie dostępne kody kreskowe na obrazie, co obejmuje skanowanie całego pliku obrazu i dodanie odczytanych wartości kodów kreskowych do tablicy stringów. Jednakże, jeśli użytkownicy nie chcą odczytywać wielu kodów kreskowych na pliku obrazu, mogą ustawić tę właściwość na false, co sprawi, że czytnik kodów kreskowych przestanie skanować, gdy znajdzie wartość kodu kreskowego. Ponownie poprawi to wydajność i szybkość odczytu IronBarcode. Więcej informacji na temat odczytywania wielu kodów kreskowych znajdziesz w naszym dedykowanym przewodniku.
Jak Filtry Obrazów Poprawiają Rozpoznawanie Kodów Kreskowych?
Jedną z właściwości, które można dodać w BarcodeReaderOptions, jest kolekcja filtrów obrazów. Filtry obrazu są ważne do wstępnego przetwarzania surowego obrazu przekazywanego do IronBarcode. Aby zastosować filtry obrazów w BarcodeReaderOptions, użytkownicy muszą najpierw zainicjować i określić kolekcję ImageFilter do użycia. Aby uzyskać pełne wskazówki na temat technik korekty obrazu, w tym zastosowania filtrów, odwiedź nasz poradnik.
Jak Mogę Optymalizować Wątkowanie dla Lepszej Wydajności?
IronBarcode pozwala użytkownikom włączyć i dostosować ilość wykonywania równoległych wątków, co z kolei poprawi szybkość i efektywność procesu. Równoległe wątki oznaczają wykonywanie wielu wątków jednocześnie na różnych rdzeniach procesora. Domyślna ilość dla właściwości MaxParallelThread w IronBarcode wynosi 4. Użytkownicy mogą ją dostosować w zależności od możliwości i liczby zasobów ich maszyn.
Czy Powinienem Włączyć Wielowątkowe Przetwarzanie?
Ta właściwość umożliwia IronBarcode równoległe odczytywanie wielu obrazów. Domyślne ustawienie dla #Multithreaded to prawda, dlatego wiele wątków będzie zarządzane automatycznie, aby poprawić wydajność w zadaniach seryjnego odczytu kodów kreskowych.
Dlaczego Powinienem Usuwać Fałszywe Pozytywne Odczyty?
Ta właściwość usuwa wszelkie fałszywie pozytywne odczyty kodów kreskowych. Fałszywe pozytywne odczyty kodów kreskowych oznaczają po prostu fałszywy odczyt wartości kodu kreskowego, który jednak został zidentyfikowany jako poprawny. Może to się zdarzyć z powodu błędów w procesie sekwencjonowania lub błędów w etykietowaniu lub przygotowywaniu kodu kreskowego. Zatem ustawienie RemoveFalsePositive jako prawdziwe usunie fałszywe pozytywne odczyty kodów kreskowych, poprawiając dokładność odczytu kodów kreskowych. Jednakże, jeśli użytkownicy wybierają wydajność kosztem dokładności, ustawienie tej właściwości na false może pomóc. Wartość domyślna dla tej właściwości to true.
Jak MinScanLines Wpływa na Dokładność Wykrywania?
MinScanLines ustawia minimalną liczbę linii skanowania, która musi zgadzać się z wynikiem kodu kreskowego, aby uznać go za ważny. Domyślnie jest to 2. Zwiększenie tej wartości zmniejsza liczbę fałszywych pozytywów, ale może uniemożliwić wykrycie cienkich lub niskiej jakości kodów kreskowych. Obniżenie do 1 zwiększa czułość na trudne kody kreskowe, narażając się jednak na wprowadzenie zakłóceń.
Jakie Tryby Skanowania Są Dostępne dla Różnych Zastosowań?
Określ, jak IronBarcode skanuje i wykrywa kody kreskowe na obrazie.
Auto: Odczytuje kody kreskowe z automatycznym wstępnym przetwarzaniem obrazów i najoptymalniej skonfigurowanymi opcjami czytnika. Zalecane dla najlepszych wyników i wydajności.OnlyDetectionModel: Skanuje obraz w poszukiwaniu kodów kreskowych i zwraca ich pozycje jako tablicęIronSoftware.Drawing.PointF. Ten tryb nie odczytuje wykrytych kodów kreskowych; zwraca tylko pozycje każdego kodu kreskowego.MachineLearningScan: Skanuje obraz pod kątem kodów kreskowych z wykrywaniem uczenia maszynowego i odczytuje je.OnlyBasicScan: Odczytuje kody kreskowe bez wykrywania uczenia maszynowego, automatycznego wstępnego przetwarzania obrazów lub konfiguracji opcji czytnika. Ta opcja może być używana samodzielnie zIronBarCode.Slim.
Jak Ustawienia Prędkości Odczytu Wpływają na Dokładność?
Jak sama nazwa wskazuje, właściwość Speed umożliwia użytkownikom dalsze optymalizowanie wydajności czytnika IronBarcode. Podobnie jak RemoveFalsePositive właściwość, jej regulacja poprawia wydajność kosztem dokładności. Aby dokładniej przyjrzeć się opcjaom prędkości czytania, w tym testom wydajności, zapoznaj się z naszym szczegółowym przewodnikiem. Przyjmuje typ wyliczeniowy ReadingSpeed, który ma 4 poziomy pokazane poniżej:
Faster: Umożliwia najszybsze czytanie kodów kreskowych, ale zmniejsza dokładność. Proces pomija wstępne przetwarzanie obrazu, co często skutkuje pustymi wynikami kodów kreskowych. Używaj tego ustawienia tylko wtedy, gdy wejściowy obraz jest ostry i wyraźny.Balanced: To ustawienie jest zalecane dla właściwościSpeed. Ustawia równowagę między dokładnością a wydajnością odczytu, starając się zastosować lekkie przetwarzanie obrazu, aby wyjaśnić obszar kodu kreskowego i wyróżnić go dla czytnika kodów kreskowych. Większość czasu to ustawienie wystarcza, aby IronBarcode mógł odczytać obraz kodu kreskowego i wyprodukować dokładny wynik.Detailed: W przypadkach, gdy użycie ustawieniaReadingSpeed.Balancednie udaje się uzyskać wartości z odczytu kodu kreskowego, użytkownicy mogą użyć opcjiReadingSpeed.Detailed. IronBarcode przeprowadzi średnie przetwarzanie obrazu, aby dalsze i dokładniejsze wykrycie obszaru kodu kreskowego dla czytnika. To ustawienie jest bardzo przydatne do wykrywania małych lub mniej ostrych obrazów kodów kreskowych.ExtremeDetail: To ustawienie jest najmniej polecane ze względu na obciążenie procesora. Ciężkie przetwarzanie zostanie wykonane na wizerunku kodu kreskowego, aby czytnik mógł odczytać kody kreskowe. Użytkownicy są zalecani, aby przed użyciem tego ustawienia dokonać wstępnego oczyszczenia obrazu/stosowania filtrów na obrazie.
Kiedy Powinienem Używać Trybu Rozszerzonego Code39?
To ustawienie pozwala na odczytywanie i interpretowanie kodów kreskowych typu Code39 z trybem rozszerzonym, gdzie zostanie zastosowany pełny zbiór znaków ASCII. Ustawienie UseCode39ExtendedMode na prawda umożliwi dokładniejsze odczytanie kodów kreskowych Code39.
Jak Zaimplementować Zaawansowane Odczytywanie Kodu Kreskowego z Własnymi Opcjami?
Teraz, gdy poznaliśmy wszystkie opcje, które można dostosowywać przez użytkowników, czy to dla zwiększenia wydajności, czy dokładności, oto jak zastosować je w kodzie. Poniższy fragment kodu demonstruje wszechstronne użycie BarcodeReaderOptions:
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-images-5.cs
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Linq;
// Create custom reader options
var options = new BarcodeReaderOptions()
{
// Specify expected barcode types for better performance
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 | BarcodeEncoding.Code39,
// Define specific area to scan (x, y, width, height in pixels)
CropArea = new Rectangle(100, 100, 500, 400),
// Set reading speed to balance accuracy and performance
Speed = ReadingSpeed.Balanced,
// Enable multithreading for better performance
Multithreaded = true,
MaxParallelThreads = 4,
// Remove false positives for accuracy
RemoveFalsePositive = true,
// Minimum scan lines that must agree for a valid result (default 2)
MinScanLines = 1,
// Enable Code39 extended mode if needed
UseCode39ExtendedMode = true,
// Set scan mode
ScanMode = BarcodeScanMode.Auto,
// Add image filters for better recognition
ImageFilters = new ImageFilterCollection() {
new SharpenFilter(),
new InvertFilter(),
new ContrastFilter()
}
};
// Read barcodes with custom options
var results = BarcodeReader.Read(@"C:\path\to\your\barcode-image.png", options);
// Process results
if (results.Any())
{
foreach (var barcode in results)
{
Console.WriteLine($"Barcode Type: {barcode.BarcodeType}");
Console.WriteLine($"Value: {barcode.Value}");
Console.WriteLine($"Position: {string.Join(", ", barcode.Points.Select(p => $"({p.X}, {p.Y})"))}");
Console.WriteLine("---");
}
}
else
{
Console.WriteLine("No barcodes found in the image.");
}
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
Imports System.Linq
' Create custom reader options
Dim options As New BarcodeReaderOptions() With {
' Specify expected barcode types for better performance
.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128 Or BarcodeEncoding.Code39,
' Define specific area to scan (x, y, width, height in pixels)
.CropArea = New Rectangle(100, 100, 500, 400),
' Set reading speed to balance accuracy and performance
.Speed = ReadingSpeed.Balanced,
' Enable multithreading for better performance
.Multithreaded = True,
.MaxParallelThreads = 4,
' Remove false positives for accuracy
.RemoveFalsePositive = True,
' Minimum scan lines that must agree for a valid result (default 2)
.MinScanLines = 1,
' Enable Code39 extended mode if needed
.UseCode39ExtendedMode = True,
' Set scan mode
.ScanMode = BarcodeScanMode.Auto,
' Add image filters for better recognition
.ImageFilters = New ImageFilterCollection() From {
New SharpenFilter(),
New InvertFilter(),
New ContrastFilter()
}
}
' Read barcodes with custom options
Dim results = BarcodeReader.Read("C:\path\to\your\barcode-image.png", options)
' Process results
If results.Any() Then
For Each barcode In results
Console.WriteLine($"Barcode Type: {barcode.BarcodeType}")
Console.WriteLine($"Value: {barcode.Value}")
Console.WriteLine($"Position: {String.Join(", ", barcode.Points.Select(Function(p) $"({p.X}, {p.Y})"))}")
Console.WriteLine("---")
Next
Else
Console.WriteLine("No barcodes found in the image.")
End If
Z fragmentu kodu widzimy, że aby używać BarcodeReaderOptions, musimy najpierw ją zainicjować, a następnie określić i dostosować właściwości BarcodeReaderOptions zgodnie z powyższymi właściwościami. Zainicjowane BarcodeReaderOptions można następnie używać jako argument w metodzie BarcodeReader.Read() wraz z plikiem obrazowym. To zastosuje wszystkie ustawienia w BarcodeReaderOptions podczas odczytywania kodu kreskowego z obrazu.
Jeśli napotkasz problemy, w których kod kreskowy nie jest rozpoznawany, nasz przewodnik rozwiązywania problemów oferuje rozwiązania dla powszechnych problemów oraz wskazówki poprawiające dokładność skanowania kodów kreskowych.
Często Zadawane Pytania
Jakie formaty obrazów są obsługiwane do odczytu kodów kreskowych w C#?
IronBarcode obsługuje odczytywanie kodów kreskowych z wielu formatów obrazów, w tym SVG (Scalable Vector Graphics), JPEG, PNG, GIF, TIFF (Tagged Image File Format) i BMP (Bitmap Image File). Ta wszechstronna obsługa formatów jest możliwa dzięki IronDrawing, umożliwiając płynne wydobywanie kodów kreskowych z różnych typów obrazów.
Jak mogę odczytać kod kreskowy z pliku obrazu za pomocą tylko jednej linii kodu?
Dzięki IronBarcode można odczytać kody kreskowe z obrazów za pomocą jednej linii kodu: `var results = IronBarCode.BarcodeReader.Read("path/to/image.png");`. To proste wywołanie metody automatycznie wykrywa i wydobywa dane kodu kreskowego z plików PNG, JPEG, GIF, BMP i TIFF bez konieczności skomplikowanej konfiguracji.
Czy mogę określić, które rodzaje kodów kreskowych mają być wyszukiwane przy odczytywaniu obrazów?
Tak, IronBarcode pozwala określić rodzaje kodów kreskowych, używając właściwości ExpectBarcodeTypes w BarcodeReaderOptions. To ukierunkowane podejście poprawia wydajność odczytu, koncentrując się tylko na formatach kodów kreskowych, które spodziewasz się znaleźć w swoich obrazach.
Czy jest możliwe odczytywanie kodów kreskowych z określonego obszaru w obrębie obrazu?
Zdecydowanie! IronBarcode oferuje właściwość CropArea, która pozwala określić konkretne obszary w obrębie obrazu, gdzie znajdują się kody kreskowe. Ta funkcja jest szczególnie przydatna dla dużych obrazów lub gdy znasz przybliżoną lokalizację kodów kreskowych, znacznie poprawiając szybkość przetwarzania.
Jak skonfigurować zaawansowane ustawienia odczytu dla lepszej dokładności?
IronBarcode oferuje klasę BarcodeReaderOptions do konfiguracji zaawansowanych ustawień odczytu. Obejmuje to opcje dostosowywania czułości detekcji kodów kreskowych, wstępnej obróbki obrazów i innych parametrów, które mogą poprawić dokładność przy pracy z trudnymi obrazami lub specyficznymi typami kodów kreskowych.
Co sprawia, że odczytywanie kodów kreskowych z obrazów jest proste dla deweloperów C#?
IronBarcode upraszcza odczytywanie kodów kreskowych dzięki metodzie BarcodeReader.Read(), która działa out-of-the-box z wieloma formatami obrazów. Programiści muszą jedynie podać nazwę pliku lub ścieżkę do pliku jako parametr, co sprawia, że integracja funkcjonalności odczytu kodów kreskowych do każdej aplikacji C# jest niezwykle prosta.
Czy IronBarcode oferuje wsparcie dla dostosowywania wyglądu kodów kreskowych?
Tak, IronBarcode oferuje rozległe opcje dostosowywania wyglądu kodów kreskowych, w tym kolory, rozmiar i adnotacje tekstowe, pozwalając dostosować kody kreskowe do konkretnych wymagań projektowych.
Jak IronBarcode może pomóc w poprawie efektywności procesów biznesowych?
IronBarcode zwiększa efektywność procesów biznesowych, umożliwiając szybkie i dokładne generowanie i odczyt kodów kreskowych, redukując błędy ręcznego wprowadzania danych i poprawiając śledzenie zapasów i aktywów.
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.

