ASP.NET Core Barcode Scanner

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

Einführung

ASP.NET Core ist ein plattformübergreifendes Framework zum Erstellen moderner Webanwendungen. Das Razor Pages Modell bietet einen seitenbasierten Ansatz zur Bearbeitung von HTTP-Anfragen und ist daher gut für die serverseitige Barcode-Verarbeitung geeignet. Mit IronBarcode können hochgeladene Bilder als IFormFile Objekte empfangen, in Byte-Arrays konvertiert und direkt an den Barcodeleser übergeben werden, ohne temporäre Dateien auf der Festplatte zu schreiben.

Dieser Artikel führt Sie durch die Integration von IronBarcode in eine ASP.NET Core Razor Pages Anwendung zum Scannen von Barcodes und QR-Codes aus hochgeladenen Bildern sowie zur Erstellung von Barcodes vom Server.

IronBarcode: C# Barcode-Bibliothek

IronBarcode bietet eine robuste API zum Lesen und Schreiben von Barcodes in .NET-Anwendungen. Die Bibliothek verarbeitet Bilder intern, sodass Entwickler rohe Bytes, Dateipfade oder Streams direkt an die BarcodeReader.Read Methode übergeben können, ohne auf separate Bildverarbeitungsbibliotheken angewiesen zu sein. Sie unterstützt eine breite Palette von Barcode-Formaten, darunter QR-Code, Code 128, Code 39, PDF417, EAN und viele andere.

Für Webanwendungen ist IronBarcode besonders nützlich, da es Bilder vollständig im Speicher verarbeitet. Hochgeladene Dateien müssen nie auf der Festplatte gespeichert werden, was die Bereitstellung vereinfacht und den Reinigungsaufwand reduziert. Die gleiche Bibliothek erzeugt auch Barcodes mit BarcodeWriter.CreateBarcode und macht sie zu einer einzigen Abhängigkeit sowohl für das Lesen als auch das Schreiben.

Schritte zum Erstellen eines Barcode-Scanners in ASP.NET Core

Befolgen Sie diese Schritte, um einen webbasierten Barcode-Scanner mit ASP.NET Core Razor Pages und IronBarcode zu erstellen.

Voraussetzungen

  1. Visual Studio 2022 oder später (oder jede IDE mit .NET-Unterstützung)
  2. .NET 6.0 oder späteres SDK

Erstellen Sie das Projekt

Erstellen Sie ein neues ASP.NET Core Web App (Razor Pages) Projekt. Dies kann über den Projektassistenten von Visual Studio oder über die Kommandozeile erfolgen:

dotnet new webapp -n BarcodeWebApp
dotnet new webapp -n BarcodeWebApp
SHELL

IronBarcode-Bibliothek installieren

Installieren Sie die IronBarcode-Bibliothek mit der NuGet-Paketverwaltungskonsole. Navigieren Sie zu Tools > NuGet Package Manager > Package Manager Console in Visual Studio und führen Sie aus:

Install-Package BarCode

Alternativ können Sie es über die Kommandozeile mit dotnet add package BarCode installieren. Die neueste Version ist auf der NuGet-Website verfügbar.

Frontend

Das Frontend besteht aus einem Datei-Upload-Formular und einem Anzeigebereich für die Ergebnisse. Das Formular verwendet enctype="multipart/form-data" um binäre Dateiuploads zu handhaben. Wenn ein Barcode erkannt wird, erscheint das Ergebnis in einem Erfolgsalarm unterhalb des hochgeladenen Bildes.

Ersetzen Sie den Inhalt in der Index.cshtml-Datei durch Folgendes:

@page
@model IndexModel
@{
    ViewData["Title"] = "Barcode Scanner";
}

<div class="container mt-4">
    <h1 class="mb-4">Barcode Scanner</h1>

    <div class="card mb-4">
        <div class="card-header"><h5>Upload & Read Barcode</h5></div>
        <div class="card-body">
            <form method="post" asp-page-handler="Upload" enctype="multipart/form-data">
                <div class="mb-3">
                    <label for="file" class="form-label">Select a barcode image:</label>
                    <input type="file" class="form-control" id="file"
                           name="UploadedFile" accept="image/*" />
                </div>
                <button type="submit" class="btn btn-primary">Scan Barcode</button>
            </form>

            @if (Model.ImageDataUrl != null)
            {
                <div class="mt-3">
                    <h6>Uploaded Image:</h6>
                    <img src="@Model.ImageDataUrl" alt="Uploaded barcode"
                         style="max-width: 300px;" class="img-thumbnail" />
                </div>
            }

            @if (Model.BarcodeResult != null)
            {
                <div class="alert alert-success mt-3">
                    <strong>Barcode Value:</strong> @Model.BarcodeResult
                </div>
            }

            @if (Model.ErrorMessage != null)
            {
                <div class="alert alert-warning mt-3">@Model.ErrorMessage</div>
            }
        </div>
    </div>
</div>
@page
@model IndexModel
@{
    ViewData["Title"] = "Barcode Scanner";
}

<div class="container mt-4">
    <h1 class="mb-4">Barcode Scanner</h1>

    <div class="card mb-4">
        <div class="card-header"><h5>Upload & Read Barcode</h5></div>
        <div class="card-body">
            <form method="post" asp-page-handler="Upload" enctype="multipart/form-data">
                <div class="mb-3">
                    <label for="file" class="form-label">Select a barcode image:</label>
                    <input type="file" class="form-control" id="file"
                           name="UploadedFile" accept="image/*" />
                </div>
                <button type="submit" class="btn btn-primary">Scan Barcode</button>
            </form>

            @if (Model.ImageDataUrl != null)
            {
                <div class="mt-3">
                    <h6>Uploaded Image:</h6>
                    <img src="@Model.ImageDataUrl" alt="Uploaded barcode"
                         style="max-width: 300px;" class="img-thumbnail" />
                </div>
            }

            @if (Model.BarcodeResult != null)
            {
                <div class="alert alert-success mt-3">
                    <strong>Barcode Value:</strong> @Model.BarcodeResult
                </div>
            }

            @if (Model.ErrorMessage != null)
            {
                <div class="alert alert-warning mt-3">@Model.ErrorMessage</div>
            }
        </div>
    </div>
</div>
HTML

Das Layout verwendet bereits im Standard-ASP.NET Core-Template enthaltene Bootstrap-Klassen. Das Formular sendet an den Upload Seitenhandler, und bedingte Blöcke zeigen die hochgeladene Bildvorschau, das dekodierte Ergebnis oder eine Fehlermeldung an.

Beispiel-Barcodes für Eingaben

Die folgenden Beispiel-Barcodes können zur Überprüfung des Scanners verwendet werden. Jedes Bild kodiert ein anderes Format und einen anderen Wert:

ASP.NET Core Barcode Scanner - Sample QR Code input encoding a URL

QR-Code, der "https://ironsoftware.com" kodiert

ASP.NET Core Barcode Scanner - Sample Code 128 barcode input

Code 128 Barcode, der "IRONBARCODE-2026" kodiert

ASP.NET Core Barcode Scanner - Sample Code 39 barcode input

Code 39 Barcode, der "HELLO123" kodiert

Barcode-Scannen mit IronBarcode

Die serverseitige Logik verarbeitet die hochgeladene Datei in der OnPostUploadAsync Methode. Die hochgeladene IFormFile wird in ein Byte-Array gelesen, das direkt an BarcodeReader.Read übergeben wird. Dies vermeidet das Speichern temporärer Dateien und hält die Verarbeitung vollständig im Speicher.

Ersetzen Sie den Inhalt in Index.cshtml.cs mit:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using IronBarCode;

public class IndexModel : PageModel
{
    [BindProperty]
    public IFormFile? UploadedFile { get; set; }

    public string? BarcodeResult { get; set; }
    public string? ErrorMessage { get; set; }
    public string? ImageDataUrl { get; set; }

    public void OnGet()
    {
    }

    public async Task<IActionResult> OnPostUploadAsync()
    {
        if (UploadedFile == null || UploadedFile.Length == 0)
        {
            ErrorMessage = "Please select an image file.";
            return Page();
        }

        try
        {
            using var ms = new MemoryStream();
            await UploadedFile.CopyToAsync(ms);
            byte[] imageBytes = ms.ToArray();

            // Store image as base64 for preview display
            string base64 = Convert.ToBase64String(imageBytes);
            ImageDataUrl = $"data:{UploadedFile.ContentType};base64,{base64}";

            // Read barcode from uploaded image bytes
            var results = BarcodeReader.Read(imageBytes);

            if (results != null && results.Count() > 0)
            {
                BarcodeResult = string.Join("\n",
                    results.Select(r => r.Value));
            }
            else
            {
                ErrorMessage = "No barcode detected in the uploaded image.";
            }
        }
        catch (Exception ex)
        {
            ErrorMessage = $"Error processing image: {ex.Message}";
        }

        return Page();
    }
}
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using IronBarCode;

public class IndexModel : PageModel
{
    [BindProperty]
    public IFormFile? UploadedFile { get; set; }

    public string? BarcodeResult { get; set; }
    public string? ErrorMessage { get; set; }
    public string? ImageDataUrl { get; set; }

    public void OnGet()
    {
    }

    public async Task<IActionResult> OnPostUploadAsync()
    {
        if (UploadedFile == null || UploadedFile.Length == 0)
        {
            ErrorMessage = "Please select an image file.";
            return Page();
        }

        try
        {
            using var ms = new MemoryStream();
            await UploadedFile.CopyToAsync(ms);
            byte[] imageBytes = ms.ToArray();

            // Store image as base64 for preview display
            string base64 = Convert.ToBase64String(imageBytes);
            ImageDataUrl = $"data:{UploadedFile.ContentType};base64,{base64}";

            // Read barcode from uploaded image bytes
            var results = BarcodeReader.Read(imageBytes);

            if (results != null && results.Count() > 0)
            {
                BarcodeResult = string.Join("\n",
                    results.Select(r => r.Value));
            }
            else
            {
                ErrorMessage = "No barcode detected in the uploaded image.";
            }
        }
        catch (Exception ex)
        {
            ErrorMessage = $"Error processing image: {ex.Message}";
        }

        return Page();
    }
}
$vbLabelText   $csharpLabel

Die wichtigsten Schritte im obigen Code:

  1. Empfangen Sie den Upload - Der IFormFile ist über [BindProperty] gebunden und wird im POST-Handler empfangen.
  2. In Bytes konvertieren - Die Datei wird in ein MemoryStream kopiert und in ein Byte-Array konvertiert. Dies ist der gleiche Ansatz, der im Beispiel des Webscanners verwendet wird, angepasst für ASP.NET Core's IFormFile anstelle von Base64-Strings.
  3. Den Barcode lesen - BarcodeReader.Read(imageBytes) verarbeitet das Bild und gibt alle erkannten Barcodes zurück.
  4. Das Ergebnis anzeigen - Alle erkannten Barcode-Werte werden verbunden und in der Benutzeroberfläche angezeigt.

Das folgende GIF zeigt den Barcodeleser in Aktion, indem ein Barcode-Bild hochgeladen und das dekodierte Ergebnis angezeigt wird:

ASP.NET Core Barcode Scanner - Demonstration of uploading and reading a barcode

Barcodeleser scannt ein hochgeladenes Bild in der ASP.NET Core-Anwendung

Verarbeitung von Base64-Bilddaten

Für Anwendungen, die Bilddaten als Base64-Strings erhalten (z.B. von Webcam-Aufnahmen oder JavaScript-Canvas), funktioniert die gleiche BarcodeReader.Read Methode mit Byte-Arrays, die aus Base64 dekodiert sind. Dieses Muster ist in Einzelseitenanwendungen, die Bilddaten über AJAX senden, üblich:

public string ReadBarCode(string imageDataBase64)
{
    // Decode the base64 image data
    var splitObject = imageDataBase64.Split(',');
    byte[] imageByteData = Convert.FromBase64String(
        (splitObject.Length > 1) ? splitObject[1] : splitObject[0]);

    // Read barcode directly from byte array
    var results = BarcodeReader.Read(imageByteData);

    return $"{DateTime.Now}: Barcode is ({results.First().Value})";
}
public string ReadBarCode(string imageDataBase64)
{
    // Decode the base64 image data
    var splitObject = imageDataBase64.Split(',');
    byte[] imageByteData = Convert.FromBase64String(
        (splitObject.Length > 1) ? splitObject[1] : splitObject[0]);

    // Read barcode directly from byte array
    var results = BarcodeReader.Read(imageByteData);

    return $"{DateTime.Now}: Barcode is ({results.First().Value})";
}
$vbLabelText   $csharpLabel

Dieser Ansatz bearbeitet sowohl rohe Base64- als auch Daten-URI-Formate (z.B. data:image/png;base64,...), indem der String bei einem Komma aufgeteilt und die eigentliche Base64-Nutzlast entnommen wird. Für eine vollständige Blazor-Implementierung mit diesem Muster siehe den Blazor-Integrationsleitfaden.

Erstellen von Barcodes auf dem Server

IronBarcode kann auch serverseitig Barcodes erstellen. Das Hinzufügen eines Erstellungsendpunkts zur gleichen Anwendung ist mit BarcodeWriter.CreateBarcode unkompliziert:

public IActionResult OnPostGenerate()
{
    var barcode = BarcodeWriter.CreateBarcode(
        "https://ironsoftware.com", BarcodeEncoding.QRCode);
    byte[] barcodeBytes = barcode.ToPngBinaryData();

    return File(barcodeBytes, "image/png", "generated-barcode.png");
}
public IActionResult OnPostGenerate()
{
    var barcode = BarcodeWriter.CreateBarcode(
        "https://ironsoftware.com", BarcodeEncoding.QRCode);
    byte[] barcodeBytes = barcode.ToPngBinaryData();

    return File(barcodeBytes, "image/png", "generated-barcode.png");
}
$vbLabelText   $csharpLabel

Der generierte Barcode wird als Dateidownload zurückgegeben. Das folgende Bild zeigt die vom OnPostGenerate Handler erzeugte QR-Code-Ausgabe:

ASP.NET Core Barcode Scanner - Server-generated QR code output

QR-Code, serverseitig mit BarcodeWriter.CreateBarcode erstellt

Für weitere Optionen zur Barcode-Erstellung sehen Sie sich das Barcode-Bilderstellungstutorial und den Barcode-Stylingleitfaden an.

Ausführung der Anwendung

Führen Sie das Projekt aus Visual Studio oder der Kommandozeile aus:

dotnet run
dotnet run
SHELL

Die Anwendung startet auf dem in launchSettings.json angegebenen Port (typischerweise https://localhost:5001 oder ähnlich). Navigieren Sie zur Startseite, um die Barcodescanner-Oberfläche zu sehen.

Abschluss

Dieser Artikel zeigte, wie man einen serverseitigen Barcode-Scanner mit ASP.NET Core Razor Pages und IronBarcode erstellt. Der gleiche Ansatz funktioniert mit ASP.NET Core MVC-Controllern, Web API-Endpunkten und Blazor-Serveranwendungen, indem nur die Art und Weise, wie Bilddaten empfangen werden, angepasst wird. IronBarcode bearbeitet die Bildverarbeitung intern, sodass die Integration mit minimalem Codeaufwand unabhängig vom Web-Framework erfolgt.

Für das Lesen von Barcodes auf anderen .NET-Plattformen siehe das .NET MAUI Barcode-Scanner-Tutorial und die Barcode-Lese-Anleitungen. Erhalten Sie mehr Tutorials zu IronBarcode aus dem Barcode-Lese-Tutorial.

To get started quickly, download the complete BarcodeWebApp project and run it with dotnet run.

IronBarcode muss für die Entwicklung und kommerzielle Nutzung lizenziert sein. Lizenzdetails sind verfügbar hier.

Häufig gestellte Fragen

Wie kann ich einen Barcode-Scanner in ASP.NET Core mit Razor Pages implementieren?

Sie können IronBarcode in Ihrem ASP.NET Core Razor Pages-Projekt verwenden, um einen Barcode-Scanner zu implementieren. Die Bibliothek ermöglicht es Ihnen, verschiedene Barcode-Formate wie QR-Codes, Code 128 und Code 39 zu lesen, indem Sie Bilder hochladen und mit BarcodeReader.Read verarbeiten.

Welche Barcode-Typen können mit IronBarcode gelesen werden?

IronBarcode unterstützt das Lesen mehrerer Barcode-Formate, einschließlich QR-Codes, Code 128 und Code 39, was es vielseitig für verschiedene Anwendungen macht.

Wie lade ich Bilder für die Barcode-Erkennung in einem ASP.NET Core-Projekt hoch?

In einem ASP.NET Core-Projekt können Sie Bilder mit IFormFile hochladen. IronBarcode verarbeitet diese Bilder, um die darin enthaltenen Barcodes zu lesen.

Kann IronBarcode Barcodes serverseitig in ASP.NET Core generieren?

Ja, IronBarcode kann Barcodes serverseitig in ASP.NET Core mit der BarcodeWriter.CreateBarcode-Methode erzeugen, sodass Sie Barcodes dynamisch erstellen und anzeigen können.

Wofür wird die BarcodeReader.Read-Methode verwendet?

Die BarcodeReader.Read-Methode in IronBarcode wird verwendet, um Barcodes aus Bildern zu dekodieren, was sie zu einem entscheidenden Bestandteil der Implementierung eines Barcode-Scanners in ASP.NET Core macht.

Ist es möglich, sowohl QR-Codes als auch Barcodes mit derselben Bibliothek in ASP.NET Core zu scannen?

Ja, mit IronBarcode können Sie sowohl QR-Codes als auch verschiedene andere Barcode-Formate innerhalb derselben ASP.NET Core-Anwendung scannen und bieten eine umfassende Lösung.

Welche Vorteile bietet die Verwendung von IronBarcode für das Barcode-Scannen in C#?

IronBarcode bietet eine einfache Integration, Unterstützung für mehrere Barcode-Formate und robuste serverseitige Barcode-Generierungsfähigkeiten, was es zu einer effizienten Wahl für Barcode-Scanning in C#-Anwendungen macht.

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 ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 2,108,094 | Version: 2026.3 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package BarCode
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihre Zeichenkette zu einem BarCode wird.