IRONSOFTWAREHOME
IRONBARCODE VERWENDEN

Wie erstellt man ein Barcode-Reader-SDK in .NET?

Curtis Chau
Curtis Chau
Updated: 28. Juni 2026

IronBarcode ermöglicht es .NET -Entwicklern, ihren Anwendungen mit minimalem Code Barcode-Lesefunktionen hinzuzufügen. Es unterstützt mehrere Formate, darunter 1D- und 2D-Barcodes, verschiedene Bildquellen und bietet eine hohe Genauigkeit durch maschinelles Lernen bei der Erkennung in Produktionsumgebungen.

Das Scannen von Barcodes ist für viele Anwendungen unerlässlich, von der Bestandsverwaltung über den Einzelhandel bis hin zur Logistik. Durch die Integration der Barcode-Lesung in Ihre .NET Anwendungen können Sie die Datenerfassung vereinfachen, Arbeitsabläufe automatisieren und die Effizienz steigern. Bei der Bewertung von Barcode-Lesegeräten sollten Faktoren wie unterstützte Formate, Verarbeitungsgeschwindigkeit und Integrationskomplexität berücksichtigt werden. Die IronBarcode Bibliothek bietet volle plattformübergreifende Kompatibilität mit außergewöhnlichen Fehlertoleranzfunktionen .

IronBarcode ist eine effiziente .NET Bibliothek, die die Arbeit mit Barcodes vereinfacht. Mit diesem Tool können Sie Barcodes aus Bildern , Streams und PDF-Dateien lesen sowie QR-Codes mithilfe des C# QR Code Generators generieren. Dieser Artikel zeigt Ihnen, wie Sie das Scannen von Barcodes in Ihre .NET -Anwendung integrieren, wobei der Schwerpunkt auf der Erstellung einer API- oder Web-App-Integration liegt, um die Funktionalität des Barcode-Scannens bereitzustellen. Die Bibliothek unterstützt verschiedene Barcode-Formate, darunter 1D- und 2D-Barcodes, mit erweiterten Generierungsfunktionen und Gestaltungsoptionen .

Was sind die besten Anwendungsfälle für die IronBarcode Integration?

IronBarcode zeichnet sich in folgenden Szenarien aus:

Wie erstelle ich ein Barcode-Reader-SDK in .NET?

Um einen Barcode-Leser zu erstellen, der als Dienst in Ihrer Anwendung bereitgestellt werden kann, integrieren Sie IronBarcode in eine REST-API oder Webanwendung. Die Wahl der Architektur hängt von Ihren Verarbeitungsanforderungen ab: Einzelbildverarbeitung für gelegentliche Scans, Stapelverarbeitung für Dokumentenworkflows oder Stream-Verarbeitung für Anwendungen mit kontinuierlichem Scannen. Hier ist ein Beispiel mit ASP.NET Core unter Berücksichtigung der Thread-Sicherheit . Die Lesefunktionen der Bibliothek umfassen fortschrittliche Bildbearbeitungsfilter für optimale Genauigkeit.

  1. Installieren Sie die .NET Bibliothek zum Lesen von Barcodes in C# mithilfe von NuGet -Paketen.
  2. Erstellen Sie eine wiederverwendbare Barcode-Scan-Klasse mit geeigneter Fehlerbehandlung.
  3. Methoden zum Lesen von Barcodes aus verschiedenen Quellen entwickeln
  4. Integrieren Sie die Barcode-Bildlesung mithilfe verbesserter Einstellungen in Ihre Anwendung.
  5. Leistung mit verschiedenen Lesegeschwindigkeitsoptionen testen und verbessern.

Was benötige ich vor dem Start?

Falls Sie IronBarcode noch nicht heruntergeladen haben, tun Sie dies bitte jetzt für Ihr Projekt. Stellen Sie sicher, dass Sie den richtigen Lizenzschlüssel für Ihren Verwendungszweck besitzen. Beachten Sie, dass für die Bereitstellung der Funktionalität von IronBarcode über eine öffentliche API oder den Weiterverkauf als eigenständiger Dienst zusätzliche Lizenzen (SDK, OEM oder SaaS) erforderlich sind. Bitte informieren Sie sich über die Lizenzoptionen, bevor Sie fortfahren. Für Entwicklungsumgebungen können Sie mit der kostenlosen Testversion beginnen und Ihren Lizenzschlüssel anwenden , wenn Sie bereit für die Produktion sind. Im Änderungsprotokoll finden Sie die neuesten Updates und Meilensteine .

Für eine optimale Leistung sollten Sie Ihre Einsatzumgebung berücksichtigen. IronBarcode unterstützt plattformübergreifende Kompatibilität, einschließlich Windows , Linux , macOS , Docker und Cloud-Plattformen wie Azure und AWS Lambda . Mobile-Entwickler können die Unterstützung für Android und iOS durch die Blazor Integration nutzen. Für .NET MAUI Anwendungen folgen Sie dem Tutorial für Barcode-Scanner .

Wie erstelle ich eine Barcode-Scanner-Klasse?

Sobald Sie IronBarcode eingerichtet und in Ihr Projekt installiert haben, können Sie eine wiederverwendbare Barcode-Scanner-Klasse erstellen, die die Funktionalität von IronBarcode integriert und als API-Endpunkt bereitstellt. Die Implementierung umfasst Leistungsoptimierungen und Bildkorrekturen für anspruchsvolle Szenarien mit Orientierungskorrektur . Erwägen Sie die Implementierung von Erntebereichen zur schnelleren Verarbeitung, wenn die Barcode-Positionen vorhersehbar sind:

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
            });
        }
    }
}

Diese verbesserte BarcodeScanner-Klasse beinhaltet Leistungsoptimierungen durch Options-Caching, asynchrone Verarbeitung für bessere Skalierbarkeit und Bildfilter für verbesserte Genauigkeit. Die Implementierung folgt den SOLID-Prinzipien und bietet eine produktionsreife Fehlerbehandlung. Für zusätzliche Funktionalität können Sie die System.Drawing-Integration nutzen oder als Stream exportieren . Sie können auch Barcode-Bilder mit benutzerdefinierten Barcode-Stilen und QR-Code-Styling erstellen .

Welche Methoden sollte ich verwenden, um verschiedene Barcode-Quellen zu lesen?

Jede Methode wird für spezifische Anwendungsfälle und Verarbeitungsanforderungen optimiert:

  • ReadBarcodeFromImage(string imagePath): Liest einen Barcode aus einer Bilddatei.
  • ReadBarcodeFromStream(Stream inputStream): Liest einen Barcode aus einem Eingabestream (z.B. Datei-Upload oder Speicher-Stream).
  • ReadBarcodeFromPdf(string filePath): Liest einen Barcode aus einer PDF-Datei.

Bei hohem Durchsatz empfiehlt sich die Verwendung von Zuschnittbereichen , um die Verarbeitungsgeschwindigkeit um bis zu 5x zu steigern, sofern die Barcode-Positionen vorhersehbar sind. Sie können auch Barcode-Bilder erstellen oder Barcodes in verschiedenen Formaten speichern . Die Bibliothek unterstützt das Lesen von System.Drawing -Objekten und kann Barcodes als HTML- oder PDF-Dokumente exportieren.

Wie kann ich das Einlesen von Barcodes über eine REST-API ermöglichen?

Um externen Anwendungen die Nutzung Ihrer Barcode-Scanfunktionalität zu ermöglichen, stellen Sie diese als REST-API mit ASP.NET Core bereit. Die Implementierung umfasst eine angemessene Fehlerbehandlung, Validierung und Unterstützung für mehrere Eingabeformate. Sie können Barcodes auch mit dem C# Barcode Image Generator erzeugen oder Beispiele für den Barcode-Schnellstart erkunden. Bei der Verarbeitung von PDFs empfiehlt es sich, Barcodes auf bestehende PDFs aufzubringen, um die Dokumentenverfolgung zu ermöglichen:

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; }
}

Wie sieht die API in Swagger UI aus?

Swagger-UI zeigt die BarcoderScannerSDK-API mit zwei POST-Endpunkten zum Barcode-Lesen von Bildern und PDFs, mit Datei-Upload-Schnittstelle und Anforderungskonfigurationsoptionen

Wie sieht die API-Antwort aus?

API-Dokumentation zeigt eine erfolgreiche POST-Anfrage an einen Barcode-Leseendpunkt, die 'Hello World!' mit einem 200 OK-Antwortstatus zurückgibt

Diese API stellt POST-Endpunkte bereit, über die Sie Barcode-Bilder hochladen können, und die API gibt die Barcode-Daten zurück. Die Implementierung umfasst ordnungsgemäße Validierung, Fehlerbehandlung und Protokollierung für den Produktionseinsatz. Für mobile Anwendungen sollten Sie die Hinzufügung von Endpunkten in Betracht ziehen, die für kleinere Bildgrößen und schnellere Reaktionszeiten optimiert sind. Sie können auch Barcodes aus Daten erstellen oder diese als HTML oder PDF exportieren. Für hohe Kontrastanforderungen 1-BPP-Barcodebilder generieren. ## Welche erweiterten Funktionen kann ich hinzufügen?

Um Ihr SDK weiter zu verbessern, sollten Sie die Implementierung dieser produktionsreifen Funktionen mithilfe der vollständigen API-Referenz von IronBarcode in Betracht ziehen. Entdecken Sie die Funktionsübersicht und sehen Sie sich Demos für praktische Anwendungen an:

Wie kann ich mehrere Barcode-Typen unterstützen?

IronBarcode unterstützt das gleichzeitige Lesen mehrerer Barcodes . Sie können Ihr SDK so konfigurieren, dass es mehrere Barcodes gleichzeitig mit spezifischer Formatfilterung akzeptiert. Die Bibliothek unterstützt das Schreiben von Unicode-Barcodes einschließlich chinesischer und arabischer Zeichen. Für spezielle Anwendungen sollten Sie das Lesen von Code 39 und das Erstellen von QR-Codes mit benutzerdefiniertem Styling erkunden:

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;
    }
}

Welche weiteren Verbesserungen sollte ich in Betracht ziehen?

Bei Produktionsumgebungen empfiehlt sich die Implementierung von Konfidenzschwellenwerten , um Fehlalarme zu reduzieren und die Datengenauigkeit zu gewährleisten. Die auf maschinellem Lernen basierende Erkennung kann für Ihren spezifischen Anwendungsfall feinabgestimmt werden. Befolgen Sie beim Erstellen von Bereitstellungspaketen die Anleitung des MSI-Installationsprogramms und beheben Sie etwaige Probleme mit fehlenden DLL-Dateien . Bei AWS-Bereitstellungen sollten Sie mögliche Laufzeitprobleme beachten. Erwägen Sie die Erstellung von Barcodes mit verschiedenen Ausgabedatenformaten und informieren Sie sich über Tutorials zum Lesen von Barcodes .

Welche lizenzrechtlichen Aspekte sollte ich beachten?

Wie bereits erwähnt, ist das IronBarcode SDK für die Integration in interne Anwendungen gedacht, und die Bereitstellung über eine API erfordert zusätzliche Lizenzen. Bevor Sie IronBarcode als Teil eines Dienstes, wie z. B. einer öffentlichen API, anbieten, müssen Sie die erforderlichen Lizenzen (SDK, OEM oder SaaS) erwerben. Bei Implementierungen in Enterprise sollten Sie die verfügbaren Lizenzerweiterungen für zusätzliche Lizenzen oder einen verbesserten Support in Betracht ziehen. Prüfen Sie die Upgrade-Optionen zur Skalierung Ihrer Bereitstellung.

IronBarcode darf nicht als eigenständiges SDK weiterverkauft oder über eine öffentlich zugängliche API bereitgestellt werden, ohne sicherzustellen, dass Ihre Lizenz diese Nutzung abdeckt. Bei Webanwendungen müssen Sie möglicherweise den Lizenzschlüssel in der web.config-Datei konfigurieren, um eine ordnungsgemäße Aktivierung zu gewährleisten. Bleiben Sie über Sicherheits-CVE-Updates informiert und befolgen Sie die Best Practices für Laufzeitkopierausnahmen . Bei technischen Problemen sollten Sie eine technische Anfrage einreichen. Informieren Sie sich über Ressourcen zum Schreiben von Unicode-Barcodes und erkunden Sie das Tutorial zum Lesen von Barcodes .

Warum sollte ich IronBarcode heute ausprobieren?

Erleben Sie die neuen Funktionen von IronBarcode. Testen Sie unsere kostenlose Testversion und entdecken Sie die reibungslose Generierung, das Lesen und Bearbeiten von Barcodes für Ihre .NET Anwendungen. Mit fortschrittlichen Funktionen, außergewöhnlicher Leistung und einer benutzerfreundlichen Oberfläche ist IronBarcode die ultimative Lösung für all Ihre Barcode-Bedürfnisse. Entdecken Sie unsere vollständige Dokumentation , sehen Sie sich Codebeispiele an und schauen Sie sich Live-Demos an, um den vollen Funktionsumfang zu verstehen. Schauen Sie sich Anleitungen zum Lesen von Barcodes an und erkunden Sie die Unterstützung für MicroQR und rMQR . Informieren Sie sich über die NuGet Paketoptionen für verschiedene Bereitstellungsszenarien. Weitere Informationen zu unserer kompletten Barcode-Lösung finden Sie in der IronBarcode -Dokumentation . Starten Sie noch heute Ihre kostenlose Testphase und verbessern Sie Ihre Projekte.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.