Comment créer un SDK de lecteur de codes-barres en .NET?
IronBarcode permet aux développeurs .NET d'ajouter des fonctionnalités de lecture de codes-barres à leurs applications avec un minimum de code. Il prend en charge de multiples formats, notamment les codes-barres 1D et 2D, diverses sources d'images et offre une grande précision grâce à une détection basée sur l'apprentissage automatique pour les environnements de production.
La lecture des codes-barres est essentielle pour de nombreuses applications, de la gestion des stocks au commerce de détail et à la logistique. En intégrant la lecture des codes-barres à vos applications .NET , vous pouvez simplifier la capture de données, automatiser les flux de travail et améliorer l'efficacité. Lors de l'évaluation des solutions de lecture de codes-barres , tenez compte de facteurs tels que les formats pris en charge, la vitesse de traitement et la complexité d'intégration. La bibliothèque IronBarcode offre une compatibilité multiplateforme complète et des fonctionnalités de tolérance aux pannes exceptionnelles.
IronBarcode est une bibliothèque .NET efficace qui simplifie la gestion des codes-barres. Cet outil vous permet de lire les codes-barres à partir d'images , de flux et de fichiers PDF , ainsi que de générer des codes QR à l'aide du générateur de codes QR C# . Cet article vous montre comment intégrer la lecture de codes-barres dans votre application .NET , en se concentrant sur la création d'une API ou d'une intégration d'application Web pour exposer la fonctionnalité de lecture de codes-barres. La bibliothèque prend en charge différents formats de codes-barres, notamment les codes-barres 1D et 2D, avec des capacités de génération avancées et des options de style .
Quels sont les meilleurs cas d'utilisation pour l'intégration IronBarcode ?
IronBarcode excelle dans ces scénarios :
Systèmes de gestion des stocks – Automatisez le suivi des produits grâce à la lecture de plusieurs codes-barres et à la prise en charge des formats TIFF/GIF multipages. Applications logistiques – Traitement des codes-barres d'expédition grâce à une lecture haute vitesse et des formats de sortie personnalisables Systèmes de point de vente (POS) – Validation des transactions avec création de codes-barres Code 39 et 1D
- Traitement de documents – Extraction de données à partir de factures PDF avec des paramètres de lecture personnalisés
- Applications de santé – Lecture des identifiants patients avec correction d'erreurs à l'aide de formats 2D
- Contrôle qualité en production – Exécution du traitement par lots avec marges de code-barres configurables
Comment créer un SDK de lecteur de codes-barres en .NET?
Pour créer un lecteur de codes-barres pouvant être intégré à votre application en tant que service, intégrez IronBarcode à une API REST ou à une application web. Le choix de l'architecture dépend de vos besoins de traitement : traitement d'images individuelles pour les scans occasionnels, traitement par lots pour les flux de documents ou traitement en flux continu pour les applications de numérisation continue. Voici un exemple utilisant ASP.NET Core avec les considérations appropriées en matière de sécurité des threads . Les fonctionnalités de lecture de la bibliothèque incluent des filtres avancés de création d'images pour une précision optimale.
- Installez la bibliothèque .NET pour la lecture des codes-barres en C# à l'aide des packages NuGet.
- Créez une classe de lecture de codes-barres réutilisable avec une gestion des erreurs appropriée.
- Développer des méthodes de lecture des codes-barres provenant de différentes sources
- Intégrez la lecture d'images de codes-barres dans votre application en utilisant les paramètres améliorés.
- Testez et améliorez les performances grâce aux options de vitesse de lecture
De quoi ai-je besoin avant de commencer ?
Si ce n'est pas déjà fait, téléchargez IronBarcode pour votre projet. Assurez-vous de disposer de la clé de licence appropriée pour l'utilisation prévue. Notez que l'exposition des fonctionnalités d'IronBarcode via une API publique ou sa revente en tant que service autonome nécessite une licence supplémentaire (SDK, OEM ou SaaS). Assurez-vous de bien comprendre les options de licence avant de poursuivre. Pour les environnements de développement, vous pouvez commencer par la version d'essai gratuite et appliquer votre clé de licence lorsque vous serez prêt pour la production. Consultez le journal des modifications pour connaître les dernières mises à jour et les étapes importantes .
Pour des performances optimales, tenez compte de votre environnement de déploiement. IronBarcode prend en charge la compatibilité multiplateforme, notamment Windows , Linux , macOS , Docker et les plateformes cloud comme Azure et AWS Lambda . Les développeurs mobiles peuvent utiliser la prise en charge d'Android et d'iOS grâce à l'intégration de Blazor . Pour les applications .NET MAUI , suivez le tutoriel sur le lecteur de codes-barres .
Comment créer une classe de lecteur de codes-barres ?
Une fois IronBarcode configuré et installé dans votre projet, vous pouvez créer une classe de lecteur de codes-barres réutilisable qui intègre les fonctionnalités d'IronBarcode et les expose en tant que point de terminaison d'API. La mise en œuvre comprend des optimisations de performance et une correction d'image pour les scénarios difficiles avec correction d'orientation . Envisagez la mise en place de zones de culture pour un traitement plus rapide lorsque l'emplacement des codes-barres est prévisible :
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
});
}
}
}
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
});
}
}
}
Imports IronBarCode
Imports System.IO
Imports System.Collections.Concurrent
Imports System.Threading.Tasks
Namespace BarcodeIntegration
Public Class BarcodeScanner
Private Shared ReadOnly _optionsCache As New ConcurrentDictionary(Of String, BarcodeReaderOptions)()
Shared Sub New()
' Set the license key
IronBarCode.License.LicenseKey = "Your-License-Key"
End Sub
' Method to read a barcode from an image file with performance optimization
Public Function ReadBarcodeFromImage(imagePath As String, Optional speed As BarcodeReadingSpeed = BarcodeReadingSpeed.Balanced) As String
Try
Dim options = GetCachedOptions(speed)
' Try to read the barcode from the given image path
Dim barcode = BarcodeReader.Read(imagePath, options)
Return If(barcode?.ToString(), "No Barcode Found") ' Return the barcode string or indicate no barcode was found
Catch ex As Exception
' Return an error message if an exception occurs
Return $"Error reading barcode: {ex.Message}"
End Try
End Function
' Method to read a barcode from a stream (e.g., file upload or memory stream)
Public Async Function ReadBarcodeFromStreamAsync(inputStream As Stream) As Task(Of String)
Try
Dim options = GetCachedOptions(BarcodeReadingSpeed.Detailed)
' Enable image correction for better accuracy
options.ImageFilters = {New SharpenFilter(), New ContrastFilter()}
' Try to read the barcode from the given stream
Dim barcode = Await Task.Run(Function() BarcodeReader.Read(inputStream, options))
Return If(barcode?.ToString(), "No barcode found")
Catch ex As Exception
Return $"Error reading barcode: {ex.Message}"
End Try
End Function
' Method to read a barcode from a PDF file with batch processing support
Public Async Function ReadBarcodesFromPdfAsync(filePath As String) As Task(Of List(Of String))
Try
Dim options = New BarcodeReaderOptions With {
.ExpectMultipleBarcodes = True,
.Speed = BarcodeReadingSpeed.Detailed
}
' Try to read barcodes from the given PDF file path
Dim barcodes = Await Task.Run(Function() BarcodeReader.ReadPdf(filePath, options))
Return barcodes.Select(Function(b) b.ToString()).ToList()
Catch ex As Exception
Return New List(Of String) From {$"Error reading barcode: {ex.Message}"}
End Try
End Function
' Cache reader options for performance
Private Function GetCachedOptions(speed As BarcodeReadingSpeed) As BarcodeReaderOptions
Return _optionsCache.GetOrAdd(speed.ToString(), Function(_) New BarcodeReaderOptions With {
.Speed = speed,
.AutoRotate = True,
.RemoveFalsePositive = True
})
End Function
End Class
End Namespace
Cette classe améliorée BarcodeScanner comprend des optimisations de performances grâce à la mise en cache des options, au traitement asynchrone pour une meilleure évolutivité et aux filtres d'image pour une précision améliorée. La mise en œuvre respecte les principes SOLID et assure une gestion des erreurs prête pour la production. Pour des fonctionnalités supplémentaires, envisagez d'utiliser l'intégration System.Drawing ou d'exporter sous forme de flux . Vous pouvez également créer des images de codes-barres avec des styles de codes-barres personnalisés et des styles de codes QR .
Quelles méthodes dois-je utiliser pour lire différentes sources de codes-barres ?
Chaque méthode est optimisée pour des cas d'utilisation et des exigences de traitement spécifiques :
ReadBarcodeFromImage(string imagePath): Lit un code-barres à partir d'un fichier image.ReadBarcodeFromStream(Stream inputStream): Lit un code-barres à partir d'un flux d'entrée (par exemple, téléchargement de fichier ou flux de mémoire).ReadBarcodeFromPdf(string filePath): Lit un code-barres à partir d'un fichier PDF.
Pour les scénarios à volume élevé, envisagez d'utiliser les zones de culture pour améliorer la vitesse de traitement jusqu'à 5 fois lorsque les emplacements des codes-barres sont prévisibles. Vous pouvez également créer des images de codes-barres ou enregistrer des codes-barres dans différents formats. La bibliothèque prend en charge la lecture des objets System.Drawing et peut exporter les codes-barres sous forme de documents HTML ou PDF .
Comment exposer la lecture des codes-barres via une API REST ?
Pour permettre aux applications externes d'utiliser votre fonctionnalité de lecture de codes-barres, exposez-la en tant qu'API REST à l'aide ASP.NET Core. L'implémentation comprend une gestion appropriée des erreurs, une validation et la prise en charge de plusieurs formats d'entrée. Vous pouvez également générer des codes-barres avec le générateur d'images de codes-barres C# ou explorer des exemples de démarrage rapide de codes-barres . Lors du traitement de fichiers PDF, pensez à apposer des codes-barres sur les fichiers PDF existants pour le suivi des documents :
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; }
}
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; }
}
Imports Microsoft.AspNetCore.Mvc
Imports System.IO
Imports Microsoft.AspNetCore.Http
Imports BarcodeIntegration
<ApiController>
<Route("api/barcode")>
Public Class BarcodeController
Inherits ControllerBase
Private ReadOnly _barcodeScanner As BarcodeScanner
Private ReadOnly _logger As ILogger(Of BarcodeController)
Public Sub New(logger As ILogger(Of BarcodeController))
_barcodeScanner = New BarcodeScanner()
_logger = logger
End Sub
' POST endpoint to read barcode from an uploaded image
<HttpPost("read-from-image")>
Public Async Function ReadFromImage(file As IFormFile) As Task(Of IActionResult)
If file Is Nothing OrElse file.Length = 0 Then
Return BadRequest(New With {.Error = "No file uploaded"})
End If
' Validate file type
Dim allowedTypes = New String() {"image/jpeg", "image/png", "image/gif", "image/bmp", "image/tiff"}
If Not allowedTypes.Contains(file.ContentType.ToLower()) Then
Return BadRequest(New With {.Error = "Unsupported file type"})
End If
Try
Using stream = file.OpenReadStream()
Dim result = Await _barcodeScanner.ReadBarcodeFromStreamAsync(stream)
_logger.LogInformation($"Barcode read successfully from {file.FileName}")
Return Ok(New With {.Barcode = result, .FileName = file.FileName})
End Using
Catch ex As Exception
_logger.LogError(ex, "Error processing barcode")
Return StatusCode(500, New With {.Error = "Internal server error"})
End Try
End Function
' POST endpoint for batch processing
<HttpPost("read-batch")>
Public Async Function ReadBatch(files As List(Of IFormFile)) As Task(Of IActionResult)
Dim results = New List(Of Object)()
For Each file In files
Using stream = file.OpenReadStream()
Dim result = Await _barcodeScanner.ReadBarcodeFromStreamAsync(stream)
results.Add(New With {.FileName = file.FileName, .Barcode = result})
End Using
Next
Return Ok(New With {.Results = results, .Count = results.Count})
End Function
' POST endpoint to generate barcode from data
<HttpPost("generate")>
Public Function GenerateBarcode(<FromBody> request As BarcodeGenerationRequest) As IActionResult
Try
' Create barcode with specified data and format
Dim barcode = BarcodeWriter.CreateBarcode(request.Data, If(request.Format, BarcodeWriterEncoding.Code128))
' Apply custom styling if requested
If request.Width.HasValue AndAlso request.Height.HasValue Then
barcode.ResizeTo(request.Width.Value, request.Height.Value)
End If
If Not String.IsNullOrEmpty(request.ForegroundColor) Then
barcode.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml(request.ForegroundColor))
End If
' Return as base64 encoded image
Using ms = barcode.ToStream()
Dim bytes = ms.ToArray()
Return Ok(New With {
.Image = Convert.ToBase64String(bytes),
.Format = If(request.Format?.ToString(), "Code128"),
.Data = request.Data
})
End Using
Catch ex As Exception
_logger.LogError(ex, "Error generating barcode")
Return BadRequest(New With {.Error = "Failed to generate barcode"})
End Try
End Function
End Class
Public Class BarcodeGenerationRequest
Public Property Data As String
Public Property Format As BarcodeWriterEncoding?
Public Property Width As Integer?
Public Property Height As Integer?
Public Property ForegroundColor As String
End Class
À quoi ressemble l'API dans Swagger UI ?

À quoi ressemble la réponse de l'API ?

Cette API expose des points de terminaison POST où vous pouvez télécharger des images de codes-barres, et l'API renvoie les données des codes-barres. La mise en œuvre comprend une validation appropriée, une gestion des erreurs et une journalisation pour une utilisation en production. Pour les applications mobiles , envisagez d'ajouter des points de terminaison optimisés pour les images de plus petite taille et des temps de réponse plus rapides. Vous pouvez également créer des codes-barres à partir de données ou les exporter au format HTML ou PDF . Pour les exigences de contraste élevé, générez des images de codes-barres 1-BPP . ## Quelles fonctionnalités avancées puis-je ajouter ?
Pour améliorer encore votre SDK, envisagez d'implémenter ces fonctionnalités prêtes pour la production en utilisant la documentation complète de l'API d'IronBarcode. Explorez la présentation des fonctionnalités et consultez les démonstrations pour des exemples d'implémentation pratique :
Comment prendre en charge plusieurs types de codes-barres ?
IronBarcode permet de lire plusieurs codes-barres simultanément. Vous pouvez configurer votre SDK pour accepter plusieurs codes-barres simultanément avec un filtrage de format spécifique. La bibliothèque prend en charge l'écriture de codes-barres Unicode, y compris les caractères chinois et arabes. Pour les applications spécialisées, explorez la lecture du Code 39 et créez des codes QR avec un style personnalisé :
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;
}
}
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;
}
}
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks
Public Async Function ReadMultipleBarcodesAsync(imagePath As String, Optional expectedTypes As BarcodeEncoding() = Nothing) As Task(Of List(Of BarcodeResult))
Try
Dim options As New BarcodeReaderOptions() With {
.ExpectMultipleBarcodes = True,
.ExpectBarcodeTypes = If(expectedTypes, BarcodeEncoding.All),
.Speed = BarcodeReadingSpeed.Detailed,
.MaxParallelThreads = Environment.ProcessorCount,
.Multithreaded = True
}
' Apply confidence threshold for machine learning accuracy
options.Confidence = Confidence.High
Dim results = Await Task.Run(Function() BarcodeReader.Read(imagePath, options))
Return results.Select(Function(barcode) New BarcodeResult With {
.Value = barcode.ToString(),
.Format = barcode.BarcodeType.ToString(),
.Confidence = barcode.Confidence,
.Position = barcode.Rect
}).ToList()
Catch ex As Exception
_logger.LogError(ex, "Error reading multiple barcodes")
Throw
End Try
End Function
Quelles autres améliorations devrais-je envisager ?
Gestion des erreurs : Mise en œuvre d'une gestion complète des erreurs, y compris la reconnaissance des codes-barres MSI
- Traitement par lots : Créer des méthodes pour le traitement par lots asynchrone avec des images de codes-barres 1-BPP
- Surveillance des performances : ajoutez des métriques avec la configuration de la vitesse de lecture
- Mise en cache : implémenter la mise en cache des résultats pour les codes-barres fréquemment scannés.
- Prétraitement de l'image : Utiliser des filtres de correction d'orientation et de contraste
- Optimisations spécifiques au format : configurez les paramètres pour GS1-128 et les nouveaux formats
WebSocketAssistance : Ajout de la lecture de codes-barres en temps réel pour une surveillance continue- Style personnalisé : Appliquez des styles de codes-barres et personnalisez les codes QR
Pour les déploiements en production, envisagez la mise en œuvre de seuils de confiance afin de réduire les faux positifs et de garantir l'exactitude des données. La détection basée sur l'apprentissage automatique peut être affinée pour votre cas d'utilisation spécifique. Lors de la création de packages de déploiement, suivez le guide d'installation MSI et corrigez tout problème de DLL manquante . Pour les déploiements AWS, soyez attentif aux problèmes d'exécution potentiels. Envisagez de créer des codes-barres avec différents formats de données de sortie et explorez les tutoriels de lecture de codes-barres .
Quelles sont les considérations relatives aux licences dont je dois tenir compte ?
Comme mentionné précédemment, le SDK IronBarcode est destiné à être intégré à vos applications internes, et l'exposer via une API nécessite une licence supplémentaire. Vous devez obtenir les licences nécessaires (SDK, OEM ou SaaS) avant d'exposer IronBarcode dans le cadre d'un service, tel qu'une API publique. Pour les déploiements en Enterprise , pensez aux extensions de licence disponibles pour obtenir des postes supplémentaires ou améliorer le support. Examinez les options de mise à niveau pour faire évoluer votre déploiement.
Ne revendez pas IronBarcode en tant que SDK autonome et ne l'exposez pas via une API publique sans vous assurer que votre licence couvre cet usage. Pour les applications web, il peut être nécessaire de configurer la clé de licence dans le fichier web.config pour une activation correcte. Restez informé des mises à jour de sécurité CVE et suivez les bonnes pratiques pour les exceptions de copie en cours d'exécution . Pour les problèmes techniques, envisagez de soumettre une demande d'assistance technique . Consultez les ressources sur l'écriture des codes-barres Unicode et explorez le tutoriel sur la lecture des codes-barres .
Pourquoi devrais-je essayer IronBarcode aujourd'hui ?
Découvrez les nouvelles fonctionnalités d' IronBarcode. Essayez notre version d'essai gratuite et découvrez une génération, une lecture et une édition de codes-barres fluides pour vos applications .NET . Avec des fonctionnalités avancées, des performances exceptionnelles et une interface conviviale, IronBarcode est la solution ultime pour tous vos besoins en matière de codes-barres. Explorez notre documentation complète , consultez des exemples de code et assistez à des démonstrations en direct pour comprendre toutes les fonctionnalités. Consultez les tutoriels sur la lecture des codes-barres et découvrez la prise en charge des formats MicroQR et rMQR . Découvrez les options de package NuGet pour différents scénarios de déploiement. Vous pouvez également consulter la documentation IronBarcode pour obtenir plus d'informations sur notre solution complète de codes-barres. Démarrez votre essai gratuit dès aujourd'hui et améliorez vos projets.
Questions Fréquemment Posées
Comment puis-je intégrer un lecteur de code-barres dans une application .NET ?
Vous pouvez intégrer un lecteur de code-barres dans une application .NET en utilisant la bibliothèque IronBarcode. Tout d'abord, installez IronBarcode, puis créez une classe pour la numérisation de code-barres et implémentez des méthodes pour lire les codes-barres à partir d'images, de flux et de PDF. Enfin, testez et optimisez votre configuration.
Comment exposer la fonctionnalité de lecture de code-barres en tant qu'API REST ?
Pour exposer la fonctionnalité de lecture de code-barres en tant qu'API REST, utilisez ASP.NET Core pour créer une application web. Incorporez la bibliothèque IronBarcode, développez une classe BarcodeScanner et définissez les points de terminaison de l'API qui lisent les codes-barres en utilisant des méthodes comme ReadBarcodeFromImage et ReadBarcodeFromStream.
Quels types de codes-barres peuvent être lus en utilisant une bibliothèque de codes-barres .NET ?
Une bibliothèque de codes-barres .NET comme IronBarcode peut lire divers types de codes-barres, y compris les codes QR, Code 128, UPC et EAN. Vous pouvez configurer la bibliothèque pour détecter simultanément plusieurs types de codes-barres en définissant des paramètres de détection.
Comment puis-je gérer les erreurs lors de la lecture de codes-barres en .NET ?
La gestion des erreurs lors de la lecture de codes-barres peut être réalisée en implémentant une gestion robuste des erreurs au sein de vos méthodes de numérisation de codes-barres en utilisant IronBarcode. Assurez-vous de capturer les exceptions et de fournir un retour d'information significatif ou des mécanismes de réessai pour améliorer la fiabilité du processus de lecture des codes-barres.
Quelles sont les exigences de licence pour utiliser une bibliothèque de codes-barres .NET dans une API publique ?
Lorsque vous utilisez IronBarcode dans une API publique, assurez-vous d'avoir une licence appropriée. Cela inclut l'obtention de licences SDK, OEM ou SaaS, car exposer la fonctionnalité de la bibliothèque en tant que service autonome ou API publique nécessite des autorisations supplémentaires.
Puis-je traiter par lots plusieurs numérisations de codes-barres en utilisant une bibliothèque .NET ?
Oui, vous pouvez traiter par lots plusieurs numérisations de codes-barres en utilisant IronBarcode. La bibliothèque vous permet de lire plusieurs codes-barres en une seule opération, ce qui peut être particulièrement utile pour traiter efficacement de grands ensembles d'images ou de documents.
Existe-t-il une version d'essai disponible pour une bibliothèque de codes-barres .NET ?
Oui, IronBarcode offre une version d'essai gratuite vous permettant d'explorer ses capacités en matière de génération, de lecture et d'édition de codes-barres dans les applications .NET. Cet essai peut vous aider à évaluer la bibliothèque avant de prendre une décision d'achat.



