C# Barcode Scanner: Read Barcodes & QR Codes in .NET Applications
Potrzebujesz szybko skanować kody barcode lub kody QR w swojej aplikacji .NET? IronBarcode sprawia, że odczytywanie kodów kreskowych jest proste i niezawodne, niezależnie od tego, czy przetwarzasz idealne obrazy cyfrowe, czy trudne zdjęcia z prawdziwego świata. Ten przewodnik pokazuje dokładnie, jak zaimplementować skanowanie BarCode w języku C#, podając praktyczne przykłady, z których można skorzystać od razu.
Szybki start: Natychmiastowe odczytanie BarCODE z pliku
Ten krótki przykład pokazuje, jak łatwo jest rozpocząć pracę z IronBarcode. Wystarczy jedna linijka kodu, aby odczytać BARCODES z pliku graficznego — nie jest wymagana żadna skomplikowana konfiguracja.
-
Install IronBarcode with NuGet Package Manager
PM > Install-Package BarCode -
Skopiuj i uruchom ten fragment kodu.
var results = IronBarCode.BarcodeReader.Read("path/to/barcode.png"); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronBarcode w swoim projekcie już dziś z darmową wersją próbną
Minimalny przebieg pracy (5 kroków)
- Zainstaluj IronBarcode z NuGet lub poprzez pobranie pliku DLL
- Użyj metody
BarcodeReader.Readmetody do skanowania dowolnego BARCODE-a lub kodu QR - Odczytuj wiele kodów kreskowych lub kodów QR w jednym skanie, pliku PDF lub wieloobrazkowym pliku TIFF
- Włącz IronBarcode, aby dekodować niedoskonałe skany i zdjęcia za pomocą zaawansowanych filtrów
- Pobierz projekt samouczka i od razu zacznij skanować
Jak zainstalować IronBarcode w moim projekcie .NET?
IronBarcode można łatwo zainstalować za pomocą menedżera pakietów NuGet lub pobierając plik DLL bezpośrednio. Zalecanym podejściem jest instalacja za pomocą NuGet, ponieważ automatycznie zarządza ona zależnościami i aktualizacjami.
Install-Package BarCode
Po instalacji dodaj using IronBarCode; do plików C#, aby uzyskać dostęp do funkcji skanowania BARCODE. Szczegółowe instrukcje instalacji w różnych środowiskach programistycznych można znaleźć w naszym przewodniku instalacyjnym.
Jak odczytać mój pierwszy BarCode za pomocą języka C#?
Odczytanie kodów kreskowych za pomocą IronBarcode wymaga zaledwie jednej linii kodu. Biblioteka automatycznie wykrywa formaty BARCODE i wyodrębnia wszystkie zakodowane dane.
*Standardowy BarCode Code128, który IronBarcode może odczytać natychmiast*using IronBarCode;
using System;
// Read barcodes from the image file - supports PNG, JPG, BMP, GIF, and more
BarcodeResults results = BarcodeReader.Read("GetStarted.png");
// Check if any barcodes were detected
if (results != null && results.Co/unt > 0)
{
// Process each barcode found in the image
foreach (BarcodeResult result in results)
{
// Extract the text value from the barcode
Console.WriteLine("Barcode detected! Value: " + result.Text);
// Additional properties available:
// result.BarcodeType - The format (Code128, QR, etc.)
// result.BinaryValue - Raw binary data if applicable
// result.Co/nfidence - Detection confidence score
}
}
else
{
Console.WriteLine("No barcodes detected in the image.");
}
using IronBarCode;
using System;
// Read barcodes from the image file - supports PNG, JPG, BMP, GIF, and more
BarcodeResults results = BarcodeReader.Read("GetStarted.png");
// Check if any barcodes were detected
if (results != null && results.Co/unt > 0)
{
// Process each barcode found in the image
foreach (BarcodeResult result in results)
{
// Extract the text value from the barcode
Console.WriteLine("Barcode detected! Value: " + result.Text);
// Additional properties available:
// result.BarcodeType - The format (Code128, QR, etc.)
// result.BinaryValue - Raw binary data if applicable
// result.Co/nfidence - Detection confidence score
}
}
else
{
Console.WriteLine("No barcodes detected in the image.");
}
Imports IronBarCode
Imports System
' Read barcodes from the image file - supports PNG, JPG, BMP, GIF, and more
Dim results As BarcodeResults = BarcodeReader.Read("GetStarted.png")
' Check if any barcodes were detected
If results IsNot Nothing AndAlso results.Count > 0 Then
' Process each barcode found in the image
For Each result As BarcodeResult In results
' Extract the text value from the barcode
Console.WriteLine("Barcode detected! Value: " & result.Text)
' Additional properties available:
' result.BarcodeType - The format (Code128, QR, etc.)
' result.BinaryValue - Raw binary data if applicable
' result.Confidence - Detection confidence score
Next
Else
Console.WriteLine("No barcodes detected in the image.")
End If
Metoda BarcodeReader.Read zwraca kolekcję BarcodeResults zawierającą wszystkie wykryte kody kreskowe. Każdy BarcodeResult zapewnia dostęp do wartości tekstowej BARCODE, typu formatu, współrzędnych pozycji oraz danych binarnych. To podejście działa bezproblemowo z popularnymi formatami BARCODE-ów, w tym Code128, Code39, BARCODE-ami QR i BARCODE-ami Data Matrix.
Jakie opcje pomagają odczytać trudne lub uszkodzone BARCODES?
W praktyce skanowanie BARCODE-ów często wiąże się z niedoskonałościami obrazu — przekrzywionymi kątami, słabym oświetleniem lub częściowym uszkodzeniem. Zaawansowane opcje IronBarcode skutecznie radzą sobie z tymi wyzwaniami.
using IronBarCode;
// Configure advanced reading options for difficult barcodes
BarcodeReaderOptions options = new BarcodeReaderOptions
{
// Speed settings: Faster, Balanced, Detailed, ExtremeDetail
// ExtremeDetail performs deep analysis for challenging images
Speed = ReadingSpeed.ExtremeDetail,
// Specify expected formats to improve performance
// Use bitwise OR (|) to combine multiple formats
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Co/de128,
// Maximum number of barcodes to find (0 = unlimited)
MaxParallelThreads = 4,
// Crop region for faster processing of specific areas
CropArea = null // Or specify a Rectangle
};
// Apply options when reading
BarcodeResults results = BarcodeReader.Read("TryHarderQR.png", options);
// Process detected barcodes
foreach (var barcode in results)
{
Console.WriteLine($"Format: {barcode.BarcodeType}, Value: {barcode.Text}");
}
using IronBarCode;
// Configure advanced reading options for difficult barcodes
BarcodeReaderOptions options = new BarcodeReaderOptions
{
// Speed settings: Faster, Balanced, Detailed, ExtremeDetail
// ExtremeDetail performs deep analysis for challenging images
Speed = ReadingSpeed.ExtremeDetail,
// Specify expected formats to improve performance
// Use bitwise OR (|) to combine multiple formats
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Co/de128,
// Maximum number of barcodes to find (0 = unlimited)
MaxParallelThreads = 4,
// Crop region for faster processing of specific areas
CropArea = null // Or specify a Rectangle
};
// Apply options when reading
BarcodeResults results = BarcodeReader.Read("TryHarderQR.png", options);
// Process detected barcodes
foreach (var barcode in results)
{
Console.WriteLine($"Format: {barcode.BarcodeType}, Value: {barcode.Text}");
}
Imports IronBarCode
' Configure advanced reading options for difficult barcodes
Dim options As New BarcodeReaderOptions With {
' Speed settings: Faster, Balanced, Detailed, ExtremeDetail
' ExtremeDetail performs deep analysis for challenging images
.Speed = ReadingSpeed.ExtremeDetail,
' Specify expected formats to improve performance
' Use bitwise OR (|) to combine multiple formats
.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
' Maximum number of barcodes to find (0 = unlimited)
.MaxParallelThreads = 4,
' Crop region for faster processing of specific areas
.CropArea = Nothing ' Or specify a Rectangle
}
' Apply options when reading
Dim results As BarcodeResults = BarcodeReader.Read("TryHarderQR.png", options)
' Process detected barcodes
For Each barcode In results
Console.WriteLine($"Format: {barcode.BarcodeType}, Value: {barcode.Text}")
Next barcode
*Obrócony kod QR, który IronBarcode z powodzeniem odczytuje przy użyciu opcji zaawansowanych*Właściwość ExpectBarcodeTypes znacznie poprawia wydajność poprzez ograniczenie wyszukiwania do określonych formatów. Aby uzyskać maksymalną dokładność w przypadku problematycznych obrazów, należy połączyć filtry obrazu z automatycznym obracaniem:
using IronBarCode;
BarcodeReaderOptions options = new BarcodeReaderOptions
{
// Apply image processing filters to enhance readability
ImageFilters = new ImageFilterCollection
{
new AdaptiveThresholdFilter(9, 0.01f), // Handles varying lighting
new ContrastFilter(2.0f), // Increases contrast
new SharpenFilter() // Reduces blur
},
// Automatically rotate to find barcodes at any angle
AutoRotate = true,
// Use multiple CPU cores for faster processing
Multithreaded = true
};
BarcodeResults results = BarcodeReader.Read("TryHarderQR.png", options);
foreach (var result in results)
{
Console.WriteLine($"Detected {result.BarcodeType}: {result.Text}");
Console.WriteLine($"Confidence: {result.Co/nfidence}%");
Console.WriteLine($"Position: X={result.X}, Y={result.Y}");
}
using IronBarCode;
BarcodeReaderOptions options = new BarcodeReaderOptions
{
// Apply image processing filters to enhance readability
ImageFilters = new ImageFilterCollection
{
new AdaptiveThresholdFilter(9, 0.01f), // Handles varying lighting
new ContrastFilter(2.0f), // Increases contrast
new SharpenFilter() // Reduces blur
},
// Automatically rotate to find barcodes at any angle
AutoRotate = true,
// Use multiple CPU cores for faster processing
Multithreaded = true
};
BarcodeResults results = BarcodeReader.Read("TryHarderQR.png", options);
foreach (var result in results)
{
Console.WriteLine($"Detected {result.BarcodeType}: {result.Text}");
Console.WriteLine($"Confidence: {result.Co/nfidence}%");
Console.WriteLine($"Position: X={result.X}, Y={result.Y}");
}
Imports IronBarCode
Dim options As New BarcodeReaderOptions With {
.ImageFilters = New ImageFilterCollection From {
New AdaptiveThresholdFilter(9, 0.01F), ' Handles varying lighting
New ContrastFilter(2.0F), ' Increases contrast
New SharpenFilter() ' Reduces blur
},
.AutoRotate = True, ' Automatically rotate to find barcodes at any angle
.Multithreaded = True ' Use multiple CPU cores for faster processing
}
Dim results As BarcodeResults = BarcodeReader.Read("TryHarderQR.png", options)
For Each result In results
Console.WriteLine($"Detected {result.BarcodeType}: {result.Text}")
Console.WriteLine($"Confidence: {result.Confidence}%")
Console.WriteLine($"Position: X={result.X}, Y={result.Y}")
Next
Te zaawansowane funkcje sprawiają, że IronBarcode idealnie nadaje się do skanowania kodów kreskowych ze zdjęć, kamer bezpieczeństwa lub zrzutów ekranu z urządzeń mobilnych, gdzie jakość obrazu znacznie się różni.
Jak zeskanować wiele kodów kreskowych z dokumentów PDF?
Skanowanie kodów kreskowych w formacie PDF jest niezbędne do przetwarzania faktur, etykiet wysyłkowych i dokumentów magazynowych. IronBarcode skutecznie odczytuje wszystkie kody kreskowe na każdej stronie.
Odczytywanie barcode'ów z plików PDF
using System;
using IronBarCode;
try
{
// Scan all pages of a PDF for barcodes
BarcodeResults results = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");
if (results != null && results.Co/unt > 0)
{
foreach (var barcode in results)
{
// Access barcode data and metadata
string value = barcode.Text;
int pageNumber = barcode.PageNumber;
BarcodeEncoding format = barcode.BarcodeType;
byte[] binaryData = barcode.BinaryValue;
// Extract barcode image if needed
System.Drawing.Bitmap barcodeImage = barcode.BarcodeImage;
Console.WriteLine($"Found {format} on page {pageNumber}: {value}");
}
}
else
{
Console.WriteLine("No barcodes found in the PDF.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error reading PDF: {ex.Message}");
}
using System;
using IronBarCode;
try
{
// Scan all pages of a PDF for barcodes
BarcodeResults results = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");
if (results != null && results.Co/unt > 0)
{
foreach (var barcode in results)
{
// Access barcode data and metadata
string value = barcode.Text;
int pageNumber = barcode.PageNumber;
BarcodeEncoding format = barcode.BarcodeType;
byte[] binaryData = barcode.BinaryValue;
// Extract barcode image if needed
System.Drawing.Bitmap barcodeImage = barcode.BarcodeImage;
Console.WriteLine($"Found {format} on page {pageNumber}: {value}");
}
}
else
{
Console.WriteLine("No barcodes found in the PDF.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error reading PDF: {ex.Message}");
}
Imports System
Imports IronBarCode
Try
' Scan all pages of a PDF for barcodes
Dim results As BarcodeResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf")
If results IsNot Nothing AndAlso results.Count > 0 Then
For Each barcode In results
' Access barcode data and metadata
Dim value As String = barcode.Text
Dim pageNumber As Integer = barcode.PageNumber
Dim format As BarcodeEncoding = barcode.BarcodeType
Dim binaryData As Byte() = barcode.BinaryValue
' Extract barcode image if needed
Dim barcodeImage As System.Drawing.Bitmap = barcode.BarcodeImage
Console.WriteLine($"Found {format} on page {pageNumber}: {value}")
Next
Else
Console.WriteLine("No barcodes found in the PDF.")
End If
Catch ex As Exception
Console.WriteLine($"Error reading PDF: {ex.Message}")
End Try
Wynik wyświetlany w konsoli pokazujący wiele BarCodes znalezionych na różnych stronach pliku PDF
W przypadku określonych zakresów stron lub zaawansowanego przetwarzania plików PDF należy użyć BarcodeReaderOptions:
// Read only specific pages to improve performance
BarcodeReaderOptions pdfOptions = new BarcodeReaderOptions
{
// Scan pages 1-5 only
PageNumbers = new[] { 1, 2, 3, 4, 5 },
// PDF-specific settings
PdfDpi = 300, // Higher DPI for better accuracy
ReadBehindVectorGraphics = true
};
BarcodeResults results = BarcodeReader.ReadPdf("document.pdf", pdfOptions);
// Read only specific pages to improve performance
BarcodeReaderOptions pdfOptions = new BarcodeReaderOptions
{
// Scan pages 1-5 only
PageNumbers = new[] { 1, 2, 3, 4, 5 },
// PDF-specific settings
PdfDpi = 300, // Higher DPI for better accuracy
ReadBehindVectorGraphics = true
};
BarcodeResults results = BarcodeReader.ReadPdf("document.pdf", pdfOptions);
' Read only specific pages to improve performance
Dim pdfOptions As New BarcodeReaderOptions With {
.PageNumbers = { 1, 2, 3, 4, 5 },
.PdfDpi = 300,
.ReadBehindVectorGraphics = True
}
Dim results As BarcodeResults = BarcodeReader.ReadPdf("document.pdf", pdfOptions)
Jak mogę przetwarzać obrazy TIFF z wieloma ramkami?
Pliki TIFF wieloklatkowe, powszechnie stosowane w systemach skanowania dokumentów i faksów, są obsługiwane w takim samym zakresie jak pliki PDF.
Plik TIFF z wieloma klatkami zawierający BarCODE na różnych klatkach
using IronBarCode;
// TIFF files are processed similarly to regular images
// Each frame is scanned automatically
BarcodeResults multiFrameResults = BarcodeReader.Read("Multiframe.tiff");
foreach (var result in multiFrameResults)
{
// Access frame-specific information
int frameNumber = result.PageNumber; // Frame number in TIFF
string barcodeValue = result.Text;
Console.WriteLine($"Frame {frameNumber}: {barcodeValue}");
// Save individual barcode images if needed
result.BarcodeImage?.Save($"barcode_frame_{frameNumber}.png");
}
using IronBarCode;
// TIFF files are processed similarly to regular images
// Each frame is scanned automatically
BarcodeResults multiFrameResults = BarcodeReader.Read("Multiframe.tiff");
foreach (var result in multiFrameResults)
{
// Access frame-specific information
int frameNumber = result.PageNumber; // Frame number in TIFF
string barcodeValue = result.Text;
Console.WriteLine($"Frame {frameNumber}: {barcodeValue}");
// Save individual barcode images if needed
result.BarcodeImage?.Save($"barcode_frame_{frameNumber}.png");
}
Imports IronBarCode
' TIFF files are processed similarly to regular images
' Each frame is scanned automatically
Private multiFrameResults As BarcodeResults = BarcodeReader.Read("Multiframe.tiff")
For Each result In multiFrameResults
' Access frame-specific information
Dim frameNumber As Integer = result.PageNumber ' Frame number in TIFF
Dim barcodeValue As String = result.Text
Console.WriteLine($"Frame {frameNumber}: {barcodeValue}")
' Save individual barcode images if needed
If result.BarcodeImage IsNot Nothing Then
result.BarcodeImage.Save($"barcode_frame_{frameNumber}.png")
End If
Next result
To samo BarcodeReaderOptions dotyczy przetwarzania plików TIFF, w tym filtrów obrazu i ustawień obrotu. Szczegółowe scenariusze obsługi plików TIFF można znaleźć w naszych samouczkach dotyczących przetwarzania obrazów.
Czy mogę przyspieszyć przetwarzanie dzięki wielowątkowości?
Przetwarzanie wielu dokumentów znacznie zyskuje na przetwarzaniu równoległym. IronBarcode automatycznie wykorzystuje dostępne rdzenie procesora w celu uzyskania optymalnej wydajności.
using IronBarCode;
// List of documents to process - mix of formats supported
var documentBatch = new[]
{
"invoice1.pdf",
"shipping_label.png",
"inventory_sheet.tiff",
"product_catalog.pdf"
};
// Configure for batch processing
BarcodeReaderOptions batchOptions = new BarcodeReaderOptions
{
// Enable parallel processing across documents
Multithreaded = true,
// Limit threads if needed (0 = use all cores)
MaxParallelThreads = Environment.ProcessorCount,
// Apply consistent settings to all documents
Speed = ReadingSpeed.Balanced,
ExpectBarcodeTypes = BarcodeEncoding.All
};
// Process all documents in parallel
BarcodeResults batchResults = BarcodeReader.Read(documentBatch, batchOptions);
// Group results by source document
var resultsByDocument = batchResults.GroupBy(r => r.Filename);
foreach (var docGroup in resultsByDocument)
{
Console.WriteLine($"\nDocument: {docGroup.Key}");
foreach (var barcode in docGroup)
{
Console.WriteLine($" - {barcode.BarcodeType}: {barcode.Text}");
}
}
using IronBarCode;
// List of documents to process - mix of formats supported
var documentBatch = new[]
{
"invoice1.pdf",
"shipping_label.png",
"inventory_sheet.tiff",
"product_catalog.pdf"
};
// Configure for batch processing
BarcodeReaderOptions batchOptions = new BarcodeReaderOptions
{
// Enable parallel processing across documents
Multithreaded = true,
// Limit threads if needed (0 = use all cores)
MaxParallelThreads = Environment.ProcessorCount,
// Apply consistent settings to all documents
Speed = ReadingSpeed.Balanced,
ExpectBarcodeTypes = BarcodeEncoding.All
};
// Process all documents in parallel
BarcodeResults batchResults = BarcodeReader.Read(documentBatch, batchOptions);
// Group results by source document
var resultsByDocument = batchResults.GroupBy(r => r.Filename);
foreach (var docGroup in resultsByDocument)
{
Console.WriteLine($"\nDocument: {docGroup.Key}");
foreach (var barcode in docGroup)
{
Console.WriteLine($" - {barcode.BarcodeType}: {barcode.Text}");
}
}
Imports Microsoft.VisualBasic
Imports IronBarCode
' List of documents to process - mix of formats supported
Private documentBatch = { "invoice1.pdf", "shipping_label.png", "inventory_sheet.tiff", "product_catalog.pdf" }
' Configure for batch processing
Private batchOptions As New BarcodeReaderOptions With {
.Multithreaded = True,
.MaxParallelThreads = Environment.ProcessorCount,
.Speed = ReadingSpeed.Balanced,
.ExpectBarcodeTypes = BarcodeEncoding.All
}
' Process all documents in parallel
Private batchResults As BarcodeResults = BarcodeReader.Read(documentBatch, batchOptions)
' Group results by source document
Private resultsByDocument = batchResults.GroupBy(Function(r) r.Filename)
For Each docGroup In resultsByDocument
Console.WriteLine($vbLf & "Document: {docGroup.Key}")
For Each barcode In docGroup
Console.WriteLine($" - {barcode.BarcodeType}: {barcode.Text}")
Next barcode
Next docGroup
To równoległe podejście przetwarza dokumenty jednocześnie, skracając całkowity czas skanowania nawet o 75% w systemach wielordzeniowych. Jeśli chcesz przetwarzać kody kreskowe na skalę Enterprise, zapoznaj się z naszym przewodnikiem po optymalizacji wydajności.
Podsumowanie
IronBarcode przekształca złożone skanowanie kodów kreskowych w prosty kod C#. Niezależnie od tego, czy tworzysz systemy magazynowe, programy do przetwarzania dokumentów czy aplikacje mobilne, biblioteka obsługuje wszystko — od nieskazitelnych cyfrowych BarCodes po trudne do uchwycenia elementy w rzeczywistym świecie.
Kluczowe funkcje:
- Odczytywanie jednoliniowych BARCODE-ów z obrazów
- Zaawansowane opcje dla uszkodzonych lub obróconych BARCODE-ów
- Kompleksowe skanowanie dokumentów w formatach PDF i TIFF
- Wysokowydajne przetwarzanie wsadowe z wykorzystaniem wielowątkowości
- Obsługa wszystkich głównych formatów BARCODE
Więcej informacji
Rozszerz swoje możliwości przetwarzania kodów kreskowych dzięki tym zasobom:
- Samouczek tworzenia kodów kreskowych — Tworzenie niestandardowych kodów kreskowych
- Przewodnik po kodach QR](/csharp/barcode/tutorials/csharp-qr-code-generator/) - Specjalistyczne funkcje kodów QR
BarcodeReaderOpis klasy — pełna dokumentacja API- Przewodnik po rozwiązywaniu problemów — typowe problemy i rozwiązania
Pobieranie kodu źródłowego
Wykonaj te przykłady samodzielnie:
Chcesz wdrożyć skanowanie BarCode w swojej aplikacji? Rozpocznij bezpłatny okres próbny i już dziś dodaj profesjonalne odczytywanie BarCode do swojego projektu .NET.
Często Zadawane Pytania
Jak zainstalować bibliotekę do czytania kodów kreskowych w projekcie .NET?
Możesz zainstalować bibliotekę IronBarcode za pośrednictwem Menedżera pakietów NuGet używając polecenia dotnet add package BarCode lub za pomocą interfejsu NuGet w Visual Studio. Alternatywnie, pobierz DLL do ręcznej instalacji.
Jaka jest metoda na przeczytanie kodu kreskowego z obrazu przy użyciu C#?
Użyj metody BarcodeReader.Read z IronBarcode w jednej linii kodu: var results = BarcodeReader.Read('image.png'); Ta metoda wykrywa i czyta wszystkie formaty kodów kreskowych obecne na obrazie.
Czy możliwe jest wykrycie wielu kodów kreskowych na jednym obrazie lub dokumencie?
Tak, IronBarcode może automatycznie wykrywać i czytać wiele kodów kreskowych na obrazie, w pliku PDF lub wieloklatkowym TIFF, zwracając każdą wartość kodu kreskowego, typ i pozycję w kolekcji BarcodeResults.
Jak czytam kody kreskowe z pliku PDF przy użyciu C#?
Użyj metody IronBarcode BarcodeReader.ReadPdf, aby skanować wszystkie strony dokumentu PDF: var results = BarcodeReader.ReadPdf('document.pdf'); Każdy wynik zawiera numer strony, na której został znaleziony kod kreskowy.
Co powinienem zrobić, jeśli obrazy kodów kreskowych są rozmyte lub obrócone?
Skonfiguruj BarcodeReaderOptions, aby obsługiwać trudne obrazy, ustawiając AutoRotate = true i stosując filtry obrazu, takie jak SharpenFilter lub AdaptiveThresholdFilter. Użyj Speed = ExtremeDetail dla lepszej dokładności.
Jakie formaty kodów kreskowych są obsługiwane w aplikacjach .NET?
IronBarcode obsługuje wszystkie główne formaty kodów kreskowych, takie jak QR Code, Code 128, Code 39, EAN-13, UPC-A, Data Matrix, PDF417 i inne. Użyj BarcodeEncoding.All, aby skanować w poszukiwaniu dowolnego obsługiwanego formatu.
Jak mogę poprawić wydajność skanowania kodów kreskowych w aplikacji C#?
Zwiększ wydajność, określając oczekiwane typy kodów kreskowych za pomocą ExpectBarcodeTypes, aktywizując przetwarzanie wielowątkowe i wybierając odpowiednie ustawienia Speed. Do zadań zbiorczych używaj BarcodeReader.Read ze ścieżkami plików.
Jaka jest zalecana metoda obsługi błędów przy czytaniu kodów kreskowych?
Zamykaj czytanie kodów kreskowych w bloki try-catch i sprawdzaj, czy wyniki nie są nullem lub pustymi. IronBarcode dostarcza szczegółowe komunikaty o błędach oraz właściwość Confidence, aby wskazać niezawodność detekcji.
Czy mogę wyodrębnić obrazy kodów kreskowych po ich zeskanowaniu?
Tak, BarcodeResult w IronBarcode zawiera właściwość BarcodeImage, która zawiera Bitmapę wykrytego kodu kreskowego, którą można zapisać lub przetworzyć osobno.
Jak czytać kody kreskowe z określonych stron w dokumencie PDF?
Ustaw właściwość PageNumbers w BarcodeReaderOptions, aby określić strony: options.PageNumbers = new[] {1, 2, 3}; Optymalizuje to wydajność, skanując tylko wyznaczone strony.
Jakie formaty obrazów są kompatybilne ze skanowaniem kodów kreskowych w .NET?
IronBarcode obsługuje skanowanie w formatach takich jak PNG, JPEG, BMP, GIF, TIFF (w tym wieloklatkowe) i PDF. Możesz ładować obrazy ze ścieżek plików, strumieni lub tablicy bajtów.
Jak uzyskać dane binarne z zeskanowanych kodów kreskowych w C#?
Wykorzystaj właściwość BinaryValue klasy BarcodeResult, aby uzyskać surowe dane binarne, szczególnie przydatne dla kodów kreskowych zawierających dane inne niż tekstowe, takie jak informacje skompresowane lub protokoły binarne.

