Lecteur de code-barres ASP.NET Core
Introduction
ASP.NET Core est un framework multiplateforme pour créer des applications web modernes. Son modèle Razor Pages propose une approche basée sur les pages pour gérer les requêtes HTTP, ce qui le rend bien adapté au traitement des codes-barres côté serveur. Avec IronBarcode, les images téléchargées peuvent être reçues sous forme d'objets IFormFile, converties en tableaux d'octets et transmises directement au lecteur de BarCode sans écriture de fichiers temporaires sur le disque.
Cet article explique comment intégrer IronBarcode dans une application ASP.NET Core Razor Pages pour scanner des codes-barres et des QR codes à partir d'images téléchargées, ainsi que pour générer des codes-barres depuis le serveur.
Comment lire et scanner des codes-barres dans ASP.NET Core
- Installez la bibliothèque C# pour lire et scanner des codes-barres
- Créez un nouveau projet ASP.NET Core Razor Pages
- Concevez le formulaire de téléchargement de fichiers pour accepter les images de codes-barres
- Utilisez la méthode
Readpour scanner l'image téléchargée à la recherche de codes-barres - Affichez la valeur du code-barres décodé sur la page
IronBarcode : Bibliothèque de codes-barres C
IronBarcode offre une API robuste pour lire et écrire des codes-barres dans les applications .NET. La bibliothèque gère le traitement d'images en interne, ce qui permet aux développeurs de transmettre des octets bruts, des chemins d'accès aux fichiers ou des flux directement à la méthode BarcodeReader.Read sans avoir besoin de bibliothèques de traitement d'images distinctes. Elle prend en charge une large gamme de formats de code-barres, y compris le QR Code, le Code 128, le Code 39, le PDF417, l'EAN, et bien d'autres.
Pour les applications web, IronBarcode est particulièrement utile car il traite les images entièrement en mémoire. Les fichiers téléchargés n'ont jamais besoin d'être enregistrés sur le disque, ce qui simplifie le déploiement et réduit les charges de nettoyage. Cette même bibliothèque génère également des BARCODES avec BarcodeWriter.CreateBarcode, ce qui en fait une dépendance unique pour la lecture et l'écriture.
Étapes pour construire un lecteur de code-barres dans ASP.NET Core
Suivez ces étapes pour créer un lecteur de code-barres basé sur le web en utilisant ASP.NET Core Razor Pages et IronBarcode.
Prérequis
- Visual Studio 2022 ou plus récent (ou tout IDE avec support .NET)
- SDK .NET 6.0 ou plus récent
Créer le projet
Créez un nouveau projet ASP.NET Core Web App (Razor Pages). Cela peut être fait via l'assistant de projet de Visual Studio ou depuis la ligne de commande :
dotnet new webapp -n BarcodeWebApp
dotnet new webapp -n BarcodeWebApp
Installer la bibliothèque IronBarcode
Installez la bibliothèque IronBarcode en utilisant la console du Package Manager NuGet. Accédez à Tools > NuGet Package Manager > Package Manager Console dans Visual Studio et exécutez :
Install-Package BarCode
Vous pouvez également l'installer à partir de la ligne de commande avec dotnet add package BarCode. La dernière version est disponible sur le site de NuGet.
Frontend
Le frontend se compose d'un formulaire de téléchargement de fichiers et d'une zone d'affichage des résultats. Le formulaire utilise enctype="multipart/form-data" pour gérer les téléchargements de fichiers binaires. Lorsqu'un code-barres est détecté, le résultat apparaît dans une alerte de succès sous l'image téléchargée.
Remplacez le contenu du fichier Index.cshtml par ce qui suit :
@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>
La disposition utilise les classes Bootstrap déjà incluses dans le modèle ASP.NET Core par défaut. Le formulaire est soumis au gestionnaire de page Upload, et des blocs conditionnels affichent l'aperçu de l'image téléchargée, le résultat décodé ou un message d'erreur.
Exemples de codes-barres d'entrée
Les exemples de codes-barres suivants peuvent être utilisés pour tester le scanner. Chaque image encode un format et une valeur différents :
QR Code encodant "https://ironsoftware.com"
Encodage de code-barres Code 128 "IronBarcode-2026"
Code 39 code-barres encodant "HELLO123"
Scanner des codes-barres avec IronBarcode
La logique côté serveur gère le fichier téléchargé dans la méthode OnPostUploadAsync. Le fichier IFormFile téléchargé est lu dans un tableau d'octets, qui est transmis directement à BarcodeReader.Read. Cela évite de sauvegarder des fichiers temporaires et garde le traitement entièrement en mémoire.
Remplacez le contenu dans Index.cshtml.cs par :
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();
}
}
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Imports IronBarCode
Imports System.IO
Imports System.Threading.Tasks
Public Class IndexModel
Inherits PageModel
<BindProperty>
Public Property UploadedFile As IFormFile
Public Property BarcodeResult As String
Public Property ErrorMessage As String
Public Property ImageDataUrl As String
Public Sub OnGet()
End Sub
Public Async Function OnPostUploadAsync() As Task(Of IActionResult)
If UploadedFile Is Nothing OrElse UploadedFile.Length = 0 Then
ErrorMessage = "Please select an image file."
Return Page()
End If
Try
Using ms As New MemoryStream()
Await UploadedFile.CopyToAsync(ms)
Dim imageBytes As Byte() = ms.ToArray()
' Store image as base64 for preview display
Dim base64 As String = Convert.ToBase64String(imageBytes)
ImageDataUrl = $"data:{UploadedFile.ContentType};base64,{base64}"
' Read barcode from uploaded image bytes
Dim results = BarcodeReader.Read(imageBytes)
If results IsNot Nothing AndAlso results.Count() > 0 Then
BarcodeResult = String.Join(vbLf, results.Select(Function(r) r.Value))
Else
ErrorMessage = "No barcode detected in the uploaded image."
End If
End Using
Catch ex As Exception
ErrorMessage = $"Error processing image: {ex.Message}"
End Try
Return Page()
End Function
End Class
Les étapes clés dans le code ci-dessus :
- Réception du téléchargement - Le
IFormFileest lié via[BindProperty]et reçu dans le gestionnaire POST. - Conversion en octets - Le fichier est copié dans un
MemoryStreamet converti en un tableau d'octets. Il s'agit de la même approche que celle utilisée dans l'exemple du scanner web, adaptée pourIFormFiled'ASP.NET Core au lieu des chaînes base64. - Lire le BARCODE -
BarcodeReader.Read(imageBytes)traite l'image et renvoie tous les BARCODES détectés. - Afficher le résultat - Toutes les valeurs de code-barres détectées sont jointes et affichées dans l'interface utilisateur.
Le GIF suivant démontre le lecteur de code-barres en action, téléchargeant une image de code-barres et affichant le résultat décodé :
Lecteur de codes-barres scannant une image téléchargée dans l'application ASP.NET Core
Traitement des données d'images Base64
Pour les applications qui reçoivent des données d'image sous forme de chaînes base64 (par exemple, à partir de captures de webcam ou de canevas JavaScript), la même méthode BarcodeReader.Read fonctionne avec des tableaux d'octets décodés à partir de base64. Ce modèle est courant dans les applications monopages qui envoient des données d'image via AJAX :
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})";
}
Public Function ReadBarCode(imageDataBase64 As String) As String
' Decode the base64 image data
Dim splitObject = imageDataBase64.Split(","c)
Dim imageByteData As Byte() = Convert.FromBase64String(
If(splitObject.Length > 1, splitObject(1), splitObject(0)))
' Read barcode directly from byte array
Dim results = BarcodeReader.Read(imageByteData)
Return $"{DateTime.Now}: Barcode is ({results.First().Value})"
End Function
Cette approche prend en charge à la fois les formats bruts base64 et les formats URI de données (par exemple, data:image/png;base64,...) en effectuant une segmentation au niveau de la virgule et en récupérant la charge utile base64 réelle. Pour une implémentation complète avec Blazor utilisant ce modèle, consultez le guide d'intégration Blazor.
Générer des codes-barres sur le serveur
IronBarcode peut également générer des BARCODES côté serveur. L'ajout d'un point de terminaison de génération à la même application est simple avec BarcodeWriter.CreateBarcode :
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");
}
Public Function OnPostGenerate() As IActionResult
Dim barcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com", BarcodeEncoding.QRCode)
Dim barcodeBytes As Byte() = barcode.ToPngBinaryData()
Return File(barcodeBytes, "image/png", "generated-barcode.png")
End Function
Le code-barres généré est renvoyé sous forme de téléchargement de fichier. L'image suivante montre le code QR généré par le gestionnaire OnPostGenerate :
QR code généré côté serveur avec BarcodeWriter.CreateBarcode
Pour plus d'options de génération de codes-barres, consultez le tutoriel de génération d'images de codes-barres et le guide de style de codes-barres.
Exécution de l'application
Exécutez le projet à partir de Visual Studio ou de la ligne de commande :
dotnet run
dotnet run
L'application démarre sur le port spécifié dans launchSettings.json (généralement https://localhost:5001 ou similaire). Naviguez vers la page d'accueil pour voir l'interface du scanner de codes-barres.
Conclusion
Cet article a démontré comment construire un lecteur de code-barres côté serveur en utilisant ASP.NET Core Razor Pages et IronBarcode. La même approche fonctionne avec les contrôleurs MVC ASP.NET Core, les points d'extrémité de l'API Web et les applications Blazor Server en adaptant la façon dont les données d'image sont reçues. IronBarcode gère le traitement des images en interne, donc l'intégration nécessite un minimum de code quel que soit le framework web.
Pour lire des codes-barres sur d'autres plateformes .NET, consultez le tutoriel de scanner de codes-barres .NET MAUI et les guides de lecture de codes-barres. Obtenez plus de tutoriels sur IronBarcode à partir du tutoriel de lecture de codes-barres.
To get started quickly, download the complete BarcodeWebApp project and run it with dotnet run.
IronBarcode doit être licencié pour le développement et l'utilisation commerciale. Les détails sur les licences sont disponibles ici.
Questions Fréquemment Posées
Comment puis-je implémenter un scanner de codes-barres dans ASP.NET Core en utilisant Razor Pages ?
Vous pouvez utiliser IronBarcode dans votre projet ASP.NET Core Razor Pages pour implémenter un scanner de codes-barres. La bibliothèque vous permet de lire divers formats de codes-barres, tels que des QR Codes, des Code 128 et des Code 39, en téléversant des images et en les traitant avec BarcodeReader.Read.
Quels types de codes-barres peuvent être lus avec IronBarcode ?
IronBarcode prend en charge la lecture de plusieurs formats de codes-barres, y compris les QR Codes, les Code 128 et les Code 39, ce qui le rend polyvalent pour diverses applications.
Comment puis-je téléverser des images pour la lecture de codes-barres dans un projet ASP.NET Core ?
Dans un projet ASP.NET Core, vous pouvez téléverser des images en utilisant IFormFile. IronBarcode traite ces images pour lire les codes-barres qu'elles contiennent.
IronBarcode peut-il générer des codes-barres côté serveur dans ASP.NET Core ?
Oui, IronBarcode peut générer des codes-barres côté serveur dans ASP.NET Core en utilisant la méthode BarcodeWriter.CreateBarcode, vous permettant de créer et afficher dynamiquement des codes-barres.
À quoi sert la méthode BarcodeReader.Read ?
La méthode BarcodeReader.Read dans IronBarcode est utilisée pour décoder les codes-barres à partir d'images, ce qui en fait une partie essentielle de l'implémentation d'un scanner de codes-barres dans ASP.NET Core.
Est-il possible de scanner à la fois des QR Codes et des codes-barres en utilisant la même bibliothèque dans ASP.NET Core ?
Oui, IronBarcode vous permet de scanner à la fois des QR Codes et divers autres formats de codes-barres dans la même application ASP.NET Core, offrant une solution unifiée.
Quels sont les avantages d'utiliser IronBarcode pour la lecture de codes-barres en C# ?
IronBarcode offre une intégration facile, une prise en charge de plusieurs formats de codes-barres, et des capacités robustes de génération de codes-barres côté serveur, ce qui en fait un choix efficace pour la lecture de codes-barres dans des applications C#.
IronBarcode peut-il gérer à la fois les codes-barres 1D et 2D ?
IronBarcode est capable de gérer à la fois les codes-barres 1D et 2D, supportant un large éventail d'applications allant de l'étiquetage de produit simple à l'encodage de données complexes.
Existe-t-il des options de licences pour l'utilisation commerciale de IronBarcode ?
Iron Software propose diverses options de licences pour IronBarcode, y compris des licences commerciales pour des applications de niveau entreprise, garantissant la conformité avec les exigences commerciales.
IronBarcode prend-il en charge le traitement par lots de codes-barres ?
Oui, IronBarcode prend en charge le traitement par lots, permettant aux développeurs de générer ou de lire plusieurs codes-barres en une seule opération, améliorant ainsi l'efficacité pour les applications à grande échelle.

