Comment scanner les codes QR des courants ou de la mémoire à l'aide d'Aspose.BarCode pour .NET

Comment scanner les codes QR des courants ou de la mémoire à l'aide d'Aspose.BarCode pour .NET

Cet article explique comment scaner les codes QR directement des courants ou de la mémoire en utilisant Aspose.BarCode pour .NET. Cette approche est essentielle pour les applications cloud, web et sans serveur où les fichiers sont téléchargés, traités dans la mémorisation, ou reçus sur un réseau.

Problème du monde réel

Les applications .NET modernes traitent souvent les images comme des courants (de l’envoi, des API ou du stockage en nuage) plutôt que des fichiers physiques.Les développeurs ont besoin d’une manière de lire les codes QR de ces images en mémoire pour un traitement en temps réel, scalable.

Vue de la solution

Aspose.BarCode pour .NET peut lire des codes QR à partir de n’importe quel Stream ou MemoryStream, vous permettant de traiter les images sans jamais économiser sur le disque. Cela déclenche les flux de travail rapides pour les serveurs web, les APIs REST et les applications cloud distribuées.

Principaux

Avant de commencer, assurez-vous que vous avez :

  • Visual Studio 2019 ou ultérieur
  • .NET 6.0 ou ultérieur (ou .Net Framework 4.6.2+)
  • Aspose.BarCode pour .NET installé via NuGet
  • Les connaissances de base de C#
PM> Install-Package Aspose.BarCode

La mise en œuvre étape par étape

Étape 1 : Installer et configurer Aspose.BarCode

Ajouter le paquet Aspose.BarCode et inclure l’espace de nom requis:

using Aspose.BarCode.BarCodeRecognition;

Étape 2 : Téléchargez votre image dans un flux

Téléchargez une image QR dans un FileStream, MemoryStream, ou à partir de toute source en mémoire (par exemple, HTTP upload, cloud blob).

using (FileStream fs = File.OpenRead("qr_sample.png"))
{
    // Ready for scanning
}

Étape 3 : Créer BarCodeReader pour Stream

Passez le courant à BarCodeReader et spécifient DecodeType.QR:

using (BarCodeReader reader = new BarCodeReader(fs, DecodeType.QR))
{
    // Ready for decoding
}

Étape 4 : Exécuter le processus de scan

foreach (BarCodeResult result in reader.ReadBarCodes())
{
    Console.WriteLine($"Type: {result.CodeTypeName}");
    Console.WriteLine($"Text: {result.CodeText}");
}

Étape 5: Traitement et utilisation de la sortie

Utilisez les données QR décodées dans votre application (par exemple, l’authentification, le lookup, la extraction des métadonnées).

Étape 6 : Traitement de l’erreur

try
{
    using (FileStream fs = File.OpenRead("qr_sample.png"))
    using (BarCodeReader reader = new BarCodeReader(fs, DecodeType.QR))
    {
        foreach (BarCodeResult result in reader.ReadBarCodes())
        {
            Console.WriteLine($"Type: {result.CodeTypeName}");
            Console.WriteLine($"Text: {result.CodeText}");
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}

Exemple complet

using Aspose.BarCode.BarCodeRecognition;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        try
        {
            using (FileStream fs = File.OpenRead("qr_sample.png"))
            using (BarCodeReader reader = new BarCodeReader(fs, DecodeType.QR))
            {
                foreach (BarCodeResult result in reader.ReadBarCodes())
                {
                    Console.WriteLine($"Type: {result.CodeTypeName}");
                    Console.WriteLine($"Text: {result.CodeText}");
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}

Utiliser les cas et les applications

  • Cloud Workflows: Traitement des codes QR à partir d’images téléchargés via le web ou mobile
  • REST APIs: Décode les images QR postées sous forme d’array ou de courants bytes
  • Serverless & Microservices: Il n’y a pas besoin d’accès au système de fichiers ou des écrits sur disque

Défis communs et solutions

Défi 1 : Les grandes images causent des problèmes de mémoireLa solution : Utilisez les flux efficacement ; limitez la taille de l’image ou scalez-le avant de scanner.

Challenge 2: Stream est déjà fermé/disponibleLa solution : Assurez-vous que le courant reste ouvert pendant la durée du scan.

Défi 3 : les flux de réseau non recherchablesLa solution : Copier à A MemoryStream si nécessaire.

Considérations de performance

  • Réutiliser les courants et les buffers pour la puissance élevée
  • Disposez de lecteurs et de flux d’objets rapidement
  • Éviter de stocker des fichiers temporaires lorsque cela est possible

Migliori pratiche

  • Toujours traiter les exceptions avec les courants et le scan
  • Valider tous les résultats décodés
  • Optimiser la concurrence dans les flux de travail web/cloud
  • Test avec diverses sources de flux (disque, réseau, mémoire)

Scénarios avancés

Écran de code QR à partir d’un Byte Array

byte[] imageBytes = File.ReadAllBytes("qr_sample.png");
using (MemoryStream ms = new MemoryStream(imageBytes))
using (BarCodeReader reader = new BarCodeReader(ms, DecodeType.QR))
{
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine(result.CodeText);
    }
}

Scan à partir de HTTP Upload (exemple ASP.NET)

// In an ASP.NET Controller:
[HttpPost]
public IActionResult ScanQr(IFormFile uploadedImage)
{
    using (var ms = new MemoryStream())
    {
        uploadedImage.CopyTo(ms);
        ms.Position = 0;
        using (BarCodeReader reader = new BarCodeReader(ms, DecodeType.QR))
        {
            foreach (BarCodeResult result in reader.ReadBarCodes())
            {
                // Process result.CodeText
            }
        }
    }
    return Ok();
}

Conclusion

Aspose.BarCode pour .NET facilite le scan des codes QR directement des courants en mémoire – parfait pour les flux de travail cloud, web et microservice sans fichier I/O.

Pour plus de détails, voir Aspose.BarCode Référence API .

 Français