IRONSOFTWAREHOME
KORZYSTANIE Z IRONBARCODE

Jak zbudować SDK czytnika kodów kreskowych w .NET?

Curtis Chau
Curtis Chau
Updated: 28 czerwca 2026

IronBarcode pozwala programistom .NET na dodanie funkcji odczytu kodów kreskowych do swoich aplikacji przy minimalnym nakładzie kodu. Obsługuje wiele formatów, w tym BARCODE'y 1D i 2D oraz różne źródła obrazów, a także zapewnia wysoką dokładność dzięki wykrywaniu opartemu na uczeniu maszynowym w środowiskach produkcyjnych.

Skanowanie BarCode ma kluczowe znaczenie dla wielu zastosowań, od zarządzania zapasami po handel detaliczny i logistykę. Dzięki zintegrowaniu funkcji odczytu kodów kreskowych z aplikacjami .NET można uprościć gromadzenie danych, zautomatyzować przepływy pracy i zwiększyć wydajność. Oceniając rozwiązania do odczytu kodów kreskowych, należy wziąć pod uwagę takie czynniki, jak obsługiwane formaty, szybkość przetwarzania i złożoność integracji. Biblioteka IronBarcode oferuje pełną kompatybilność międzyplatformową oraz wyjątkowe funkcje odporności na awarie.

IronBarcode to skuteczna biblioteka .NET, która upraszcza pracę z kodami kreskowymi. Za pomocą tego narzędzia można odczytywać kody kreskowe z obrazów, strumieni i plików PDF, a także generować kody QR za pomocą generatora kodów QR w języku C#. W tym artykułe pokazano, jak zintegrować skanowanie kodów kreskowych z aplikacją .NET, skupiając się na tworzeniu integracji API lub aplikacji internetowej w celu udostępnienia funkcji skanowania kodów kreskowych. Biblioteka obsługuje różne formaty BARCODE-ów, w tym BARCODE-y 1D i 2D, oferując zaawansowane możliwości generowania i opcje stylizacji.

Jakie są najlepsze zastosowania integracji IronBarcode?

IronBarcode doskonale sprawdza się w następujących sytuacjach:

Jak stworzyć SDK czytnika BarCode w .NET?

Aby stworzyć czytnik kodów kreskowych, który może być udostępniony jako usługa w aplikacji, należy zintegrować IronBarcode z interfejsem API REST lub aplikacją internetową. Wybór architektury zależy od potrzeb przetwarzania: przetwarzanie pojedynczych obrazów w przypadku sporadycznego skanowania, przetwarzanie wsadowe w przypadku przepływów pracy z dokumentami lub przetwarzanie strumieniowe w przypadku aplikacji do ciągłego skanowania. Oto przykład wykorzystujący ASP.NET Core z uwzględnieniem odpowiednich zasad bezpieczeństwa wątków. Funkcje odczytu biblioteki obejmują zaawansowane filtry tworzenia obrazów zapewniające optymalną dokładność.

  1. Zainstaluj bibliotekę .NET do odczytu kodów kreskowych w języku C# przy użyciu pakietów NuGet
  2. Utwórz klasę skanowania kodów kreskowych z możliwością ponownego użycia, wyposażoną w odpowiednią obsługę błędów
  3. Opracowanie metod odczytu kodów kreskowych z różnych źródeł
  4. Zintegruj odczyt obrazów BarCode z aplikacją, korzystając z ulepszonych ustawień
  5. Testuj i popraw wydajność dzięki opcjom prędkości czytania

Czego potrzebuję przed rozpoczęciem?

Jeśli jeszcze tego nie zrobiłeś, pobierz IronBarcode do swojego projektu. Upewnij się, że posiadasz odpowiedni klucz licencyjny do zamierzonego zastosowania. Należy pamiętać, że udostępnianie funkcji IronBarcode za pośrednictwem publicznego API lub odsprzedaż jako samodzielnej usługi wymaga dodatkowej licencji (SDK, OEM lub SaaS). Przed rozpoczęciem pracy upewnij się, że rozumiesz opcje licencyjne. W przypadku środowisk programistycznych można zacząć od bezpłatnej wersji próbnej, a gdy wszystko będzie gotowe do produkcji, zastosować klucz licencyjny. Zapoznaj się z dziennikiem zmian, aby uzyskać informacje o najnowszych aktualizacjach i kamieniach milowych.

Aby uzyskać optymalną wydajność, należy wziąć pod uwagę środowisko wdrożeniowe. IronBarcode obsługuje kompatybilność międzyplatformową, w tym systemy Windows, Linux, macOS, Docker oraz platformy chmurowe, takie jak Azure i AWS Lambda. Programiści aplikacji mobilnych mogą korzystać z obsługi systemów Android i iOS dzięki integracji z Blazor. W przypadku aplikacji .NET MAUI należy postępować zgodnie z samouczkiem dotyczącym czytnika kodów kreskowych BarCode.

Jak utworzyć klasę skanera BarCode?

Po skonfigurowaniu IronBarcode i zainstalowaniu go w projekcie można utworzyć klasę skanera kodów kreskowych wielokrotnego użytku, która integruje funkcjonalność IronBarcode i udostępnia ją jako punkt końcowy API. Wdrożenie obejmuje optymalizację wydajności oraz korekcję obrazu w trudnych scenariuszach z korekcją orientacji. Rozważ wdrożenie obszarów przycinania w celu przyspieszenia przetwarzania, gdy lokalizacje BarCode są przewidywalne:

using IronBarCode;
using System.IO;
using System.Collections.Concurrent;
using System.Threading.Tasks;

namespace BarcodeIntegration
{
    public class BarcodeScanner
    {
        private static readonly ConcurrentDictionary<string, BarcodeReaderOptions> _optionsCache = new();
        
        static BarcodeScanner()
        {
            // Set the license key
            IronBarCode.License.LicenseKey = "Your-License-Key";
        }

        // Method to read a barcode from an image file with performance optimization
        public string ReadBarcodeFromImage(string imagePath, BarcodeReadingSpeed speed = BarcodeReadingSpeed.Balanced)
        {
            try
            {
                var options = GetCachedOptions(speed);
                // Try to read the barcode from the given image path
                var barcode = BarcodeReader.Read(imagePath, options);
                return barcode?.ToString() ?? "No Barcode Found"; // Return the barcode string or indicate no barcode was found
            }
            catch (Exception ex)
            {
                // Return an error message if an exception occurs
                return $"Error reading barcode: {ex.Message}";
            }
        }

        // Method to read a barcode from a stream (e.g., file upload or memory stream)
        public async Task<string> ReadBarcodeFromStreamAsync(Stream inputStream)
        {
            try
            {
                var options = GetCachedOptions(BarcodeReadingSpeed.Detailed);
                // Enable image correction for better accuracy
                options.ImageFilters = new[] { 
                    new SharpenFilter(), 
                    new ContrastFilter() 
                };
                
                // Try to read the barcode from the given stream
                var barcode = await Task.Run(() => BarcodeReader.Read(inputStream, options));
                return barcode?.ToString() ?? "No barcode found";
            }
            catch (Exception ex)
            {
                return $"Error reading barcode: {ex.Message}";
            }
        }

        // Method to read a barcode from a PDF file with batch processing support
        public async Task<List<string>> ReadBarcodesFromPdfAsync(string filePath)
        {
            try
            {
                var options = new BarcodeReaderOptions
                {
                    ExpectMultipleBarcodes = true,
                    Speed = BarcodeReadingSpeed.Detailed
                };
                
                // Try to read barcodes from the given PDF file path
                var barcodes = await Task.Run(() => BarcodeReader.ReadPdf(filePath, options));
                return barcodes.Select(b => b.ToString()).ToList();
            }
            catch (Exception ex)
            {
                return new List<string> { $"Error reading barcode: {ex.Message}" };
            }
        }
        
        // Cache reader options for performance
        private BarcodeReaderOptions GetCachedOptions(BarcodeReadingSpeed speed)
        {
            return _optionsCache.GetOrAdd(speed.ToString(), _ => new BarcodeReaderOptions
            {
                Speed = speed,
                AutoRotate = true,
                RemoveFalsePositive = true
            });
        }
    }
}

Ta ulepszona klasa BarcodeScanner zawiera optymalizacje wydajności dzięki pamięci podręcznej opcji, przetwarzanie asynchroniczne dla lepszej skalowalności, oraz filtry obrazów dla poprawy dokładności. Implementacja jest zgodna z zasadami SOLID i zapewnia obsługę błędów gotową do wdrożenia w środowisku produkcyjnym. Aby uzyskać dodatkową funkcjonalność, rozważ użycie integracji z System.Drawing lub eksportowanie jako strumienie. Można również tworzyć obrazy kodów kreskowych z niestandardowymi stylami kodów kreskowych i stylizacją kodów QR.

Jakich metod należy używać do odczytu różnych źródeł BarCodes?

Każda metoda została ulepszona pod kątem konkretnych przypadków użycia i wymagań przetwarzania:

  • ReadBarcodeFromImage(string imagePath): Odczytuje kod kreskowy z pliku obrazka.
  • ReadBarcodeFromStream(Stream inputStream): Odczytuje kod kreskowy ze strumienia wejściowego (np. przesyłanie pliku lub strumień pamięci).
  • ReadBarcodeFromPdf(string filePath): Odczytuje kod kreskowy z pliku PDF.

W przypadku dużych ilości danych warto rozważyć użycie obszarów przycinania, aby nawet 5-krotnie zwiększyć szybkość przetwarzania, gdy lokalizacje BARCODE-ów są przewidywalne. Można również tworzyć obrazy BARCODE lub zapisywać BARCODE w różnych formatach. Biblioteka obsługuje odczyt z obiektów System.Drawing i może eksportować BarCodes jako dokumenty HTML lub PDF.

Jak udostępnić funkcję odczytu BarCode za pośrednictwem interfejsu API REST?

Aby umożliwić aplikacjom zewnętrznym korzystanie z funkcji skanowania kodów kreskowych, udostępnij ją jako interfejs API REST przy użyciu ASP.NET Core. Implementacja obejmuje prawidłową obsługę błędów, walidację oraz obsługę wielu formatów danych wejściowych. Możesz również generować kody kreskowe za pomocą generatora obrazów BarCode C# lub zapoznać się z przykładami szybkiego startu dotyczącymi kodów kreskowych. Podczas przetwarzania plików PDF warto rozważyć umieszczenie BARCODE-ów na istniejących plikach w celu śledzenia dokumentów:

using Microsoft.AspNetCore.Mvc;
using System.IO;
using Microsoft.AspNetCore.Http;
using BarcodeIntegration;

[ApiController]
[Route("api/barcode")]
public class BarcodeController : ControllerBase
{
    private readonly BarcodeScanner _barcodeScanner;
    private readonly ILogger<BarcodeController> _logger;

    public BarcodeController(ILogger<BarcodeController> logger)
    {
        _barcodeScanner = new BarcodeScanner();
        _logger = logger;
    }

    // POST endpoint to read barcode from an uploaded image
    [HttpPost("read-from-image")]
    public async Task<IActionResult> ReadFromImage(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest(new { Error = "No file uploaded" });
            
        // Validate file type
        var allowedTypes = new[] { "image/jpeg", "image/png", "image/gif", "image/bmp", "image/tiff" };
        if (!allowedTypes.Contains(file.ContentType.ToLower()))
            return BadRequest(new { Error = "Unsupported file type" });
            
        try
        {
            using var stream = file.OpenReadStream();
            var result = await _barcodeScanner.ReadBarcodeFromStreamAsync(stream);
            
            _logger.LogInformation($"Barcode read successfully from {file.FileName}");
            return Ok(new { Barcode = result, FileName = file.FileName });
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error processing barcode");
            return StatusCode(500, new { Error = "Internal server error" });
        }
    }
    
    // POST endpoint for batch processing
    [HttpPost("read-batch")]
    public async Task<IActionResult> ReadBatch(List<IFormFile> files)
    {
        var results = new List<object>();
        
        foreach (var file in files)
        {
            using var stream = file.OpenReadStream();
            var result = await _barcodeScanner.ReadBarcodeFromStreamAsync(stream);
            results.Add(new { FileName = file.FileName, Barcode = result });
        }
        
        return Ok(new { Results = results, Count = results.Count });
    }

    // POST endpoint to generate barcode from data
    [HttpPost("generate")]
    public IActionResult GenerateBarcode([FromBody] BarcodeGenerationRequest request)
    {
        try
        {
            // Create barcode with specified data and format
            var barcode = BarcodeWriter.CreateBarcode(request.Data, request.Format ?? BarcodeWriterEncoding.Code128);
            
            // Apply custom styling if requested
            if (request.Width.HasValue && request.Height.HasValue)
                barcode.ResizeTo(request.Width.Value, request.Height.Value);
                
            if (!string.IsNullOrEmpty(request.ForegroundColor))
                barcode.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml(request.ForegroundColor));
                
            // Return as base64 encoded image
            using var ms = barcode.ToStream();
            var bytes = ms.ToArray();
            return Ok(new { 
                Image = Convert.ToBase64String(bytes),
                Format = request.Format?.ToString() ?? "Code128",
                Data = request.Data 
            });
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error generating barcode");
            return BadRequest(new { Error = "Failed to generate barcode" });
        }
    }
}

public class BarcodeGenerationRequest
{
    public string Data { get; set; }
    public BarcodeWriterEncoding? Format { get; set; }
    public int? Width { get; set; }
    public int? Height { get; set; }
    public string ForegroundColor { get; set; }
}

Jak wygląda API w Swagger UI?

Swagger UI pokazujący BarcoderScannerSDK API z dwoma punktami końcowymi POST do odczytu kodu kreskowego z obrazów i PDFów, zawierający interfejs przesyłania plików i opcje konfiguracji żądania

Jak wygląda odpowiedź API?

Dokumentacja API pokazująca udane żądanie POST do punktu końcowego odczytu kodu kreskowego, które zwraca 'Hello World!' ze statusem odpowiedzi 200 OK

To API udostępnia punkty końcowe POST, do których można przesyłać obrazy kodów kreskowych, a API zwraca dane BarCode. Wdrożenie obejmuje odpowiednią walidację, obsługę błędów i rejestrowanie w celu wykorzystania w środowisku produkcyjnym. W przypadku aplikacji mobilnych warto rozważyć dodanie punktów końcowych zoptymalizowanych pod kątem mniejszych rozmiarów obrazów i szybszych czasów odpowiedzi. Można również tworzyć BARCODES na podstawie danych lub eksportować je w formacie HTML lub PDF. Aby spełnić wymagania dotyczące wysokiego kontrastu, należy wygenerować obrazy BarCode 1-BPP.## Jakie zaawansowane funkcje mogę dodać?

Aby jeszcze bardziej ulepszyć swój zestaw SDK, rozważ wdrożenie tych gotowych do użycia w środowisku produkcyjnym funkcji, korzystając z kompletnej Dokumentacji API IronBarcode. Zapoznaj się z przeglądem funkcji i sprawdź wersje demonstracyjne, aby zobaczyć praktyczne zastosowania:

Jak obsługiwać wiele typów BarCodes?

IronBarcode obsługuje odczyt wielu kodów kreskowych jednocześnie. Możesz skonfigurować swój SDK tak, aby akceptował wiele BARCODE-ów jednocześnie z filtrowaniem według określonego formatu. Biblioteka obsługuje zapis BARCODE'ów Unicode, w tym znaków chińskich i arabskich. W przypadku specjalistycznych zastosowań zapoznaj się z odczytem kodu 39 i twórz kody QR o niestandardowym wyglądzie:

public async Task<List<BarcodeResult>> ReadMultipleBarcodesAsync(string imagePath, BarcodeEncoding[] expectedTypes = null)
{
    try
    {
        var options = new BarcodeReaderOptions()
        {
            ExpectMultipleBarcodes = true,
            ExpectBarcodeTypes = expectedTypes ?? BarcodeEncoding.All,
            Speed = BarcodeReadingSpeed.Detailed,
            MaxParallelThreads = Environment.ProcessorCount,
            Multithreaded = true
        };
        
        // Apply confidence threshold for machine learning accuracy
        options.Confidence = Confidence.High;
        
        var results = await Task.Run(() => BarcodeReader.Read(imagePath, options));
        
        return results.Select(barcode => new BarcodeResult
        {
            Value = barcode.ToString(),
            Format = barcode.BarcodeType.ToString(),
            Confidence = barcode.Confidence,
            Position = barcode.Rect
        }).ToList();
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error reading multiple barcodes");
        throw;
    }
}

Jakie inne ulepszenia warto rozważyć?

W przypadku wdrożeń produkcyjnych warto rozważyć wdrożenie progów pewności, aby ograniczyć liczbę wyników fałszywie pozytywnych i zapewnić dokładność danych. Wykrywanie oparte na uczeniu maszynowym można dostosować do konkretnego przypadku użycia. Podczas tworzenia pakietów wdrożeniowych należy postępować zgodnie z instrukcją instalatora MSI i rozwiązać wszelkie problemy związane z brakującymi plikami DLL. W przypadku wdrożeń AWS należy pamiętać o potencjalnych problemach związanych z działaniem środowiska uruchomieniowego. Rozważ tworzenie BarCodes w różnych formatach danych wyjściowych i zapoznaj się z samouczkami dotyczącymi odczytu BarCodes.

O jakich kwestiach związanych z licencjonowaniem powinienem pamiętać?

Jak wspomniano wcześniej, zestaw SDK IronBarcode jest przeznaczony do integracji z aplikacjami wewnętrznymi, a udostępnienie go za pośrednictwem interfejsu API wymaga dodatkowej licencji. Przed udostępnieniem IronBarcode jako części usługi, takiej jak publiczne API, należy uzyskać niezbędną licencję (SDK, OEM lub SaaS). W przypadku wdrożeń Enterprise warto rozważyć rozszerzenia licencji, które zapewniają dodatkowe stanowiska lub lepsze wsparcie techniczne. Zapoznaj się z opcjami aktualizacji, aby skalować swoje wdrożenie.

Nie wolno odsprzedawać IronBarcode jako samodzielnego zestawu SDK ani udostępniać go za pośrednictwem publicznego interfejsu API bez upewnienia się, że posiadana licencja obejmuje takie zastosowanie. W przypadku aplikacji internetowych może być konieczne skonfigurowanie klucza licencyjnego w pliku web.config w celu prawidłowej aktywacji. Bądź na bieżąco z aktualizacjami CVE dotyczącymi bezpieczeństwa i stosuj się do najlepszych praktyk w zakresie wyjątków kopiowania w czasie wykonywania. W przypadku problemów technicznych prosimy o przesłanie zgłoszenia do działu inżynierii. Zapoznaj się z materiałami na temat pisania BARCODE-ów Unicode i przejrzyj samouczek dotyczący odczytywania BARCODE-ów.

Dlaczego warto wypróbować IronBarcode już dziś?

Poznaj nowe możliwości IronBarcode. Wypróbuj naszą bezpłatną wersję próbną i odkryj płynne generowanie, odczytywanie i edycję BarCode dla swoich aplikacji .NET. Dzięki zaawansowanym funkcjom, wyjątkowej wydajności i przyjaznemu dla użytkownika interfejsowi IronBarcode jest najlepszym rozwiązaniem dla wszystkich Twoich potrzeb związanych z kodami kreskowymi. Zapoznaj się z naszą pełną dokumentacją, przejrzyj przykłady kodu i obejrzyj prezentacje na żywo, aby zrozumieć wszystkie możliwości. Zapoznaj się z samouczkami dotyczącymi odczytu kodów kreskowych i sprawdź obsługę MicroQR oraz rMQR. Dowiedz się więcej o opcjach pakietów NuGet dla różnych scenariuszy wdrażania. Więcej informacji na temat naszego kompleksowego rozwiązania do obsługi BarCode można znaleźć w dokumentacji IronBarcode. Bezpłatna próba już dziś i usprawnij swoje projekty.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta