Jak czytać kody kreskowe w C#

C# Barcode Scanner: Read Barcodes & QR Codes in .NET Applications

This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

  1. Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode
  2. Skopiuj i uruchom ten fragment kodu.

    var results = IronBarCode.BarcodeReader.Read("path/to/barcode.png");
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronBarcode w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

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.

Code128 barcode ready for scanning - contains text 'https://ironsoftware.com/csharp/barcode/' *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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel
QR code rotated 45 degrees demonstrating IronBarcode's rotation handling *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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

Wykryto wiele BarCode'ów na stronach pliku PDF zawierających dane wyjściowe konsoli 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)
$vbLabelText   $csharpLabel

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 ramkami zawierający wiele BARCODE-ów w różnych ramkach 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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:

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.

Zacznij z IronBarcode teraz.
green arrow pointer

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.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 2,240,258 | Wersja: 2026.5 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package BarCode
uruchom przykład zobacz, jak twoje ciągi zamieniają się w kody kreskowe.