Kaip skenuoti QR kodus iš srauto ar atminties naudojant Aspose.BarCode .NET

Kaip skenuoti QR kodus iš srauto ar atminties naudojant Aspose.BarCode .NET

Šiame straipsnyje paaiškėja, kaip QR kodų nuskaitymas tiesiogiai iš srauto arba atminties naudojant Aspose.BarCode .NET. Šis metodas yra būtinas debesų, interneto ir be serverio programoms, kuriose failai perkeliami, apdorojami atmintyje arba gaunami per tinklą.

Realaus pasaulio problema

Šiuolaikinės .NET programos dažnai tvarko vaizdus kaip srautus (nuo įkėlimo, API ar debesijos saugojimo) vietoj fizinių failų. Kūrėjai turi galimybę skaityti QR kodus iš šių atminties vaizdų realiu laiku, skenuojant.

Išvada sprendimo

Aspose.BarCode for .NET gali nuskaityti QR kodus iš bet kurio Stream arba MemoryStream, leidžiant jums apdoroti vaizdus be jokių išsaugojimų diske. Tai atveria greitus darbo srautus žiniatinklio serveriams, REST API ir platinamoms debesų programoms.


Reikalavimai

Prieš pradėdami, įsitikinkite, kad turite:

  1. Visual Studio 2019 arba vėliau
  2. .NET 6.0 arba naujesnė (arba .NET Framework 4.6.2+)
  3. Aspose.BarCode for .NET įdiegta per NuGet
  4. Pagrindinės žinios apie C#
PM> Install-Package Aspose.BarCode

Kitas

1 žingsnis: Įdiegti ir konfigūruoti Aspose.BarCode

Pridėkite Aspose.BarCode paketą ir įtraukite reikalingą pavadinimo erdvę:

using Aspose.BarCode.BarCodeRecognition;

2 žingsnis: įkeliate savo vaizdą į srovę

Įkeliamas QR vaizdas į FileStream, MemoryStream, arba iš bet kurio atminties šaltinio (pvz., HTTP įkrovimas, debesys).

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

3 žingsnis: sukurkite „BarCodeReader“

Perkelkite srautą į BarCodeReader ir specifikuokite DecodeType.QR:

using Aspose.BarCode.BarCodeRecognition;
using (BarCodeReader reader = new BarCodeReader("damaged_multi_qr_sample.png", DecodeType.QR))
{
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine(result.CodeText);
    }
}

4 žingsnis: atlikite skenavimo procesą

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

5 žingsnis: procesas ir naudojimas

Naudokite savo programoje iššifruotus QR duomenis (pvz., autentifikaciją, paiešką, metaduomenų ekstrakciją).


6 žingsnis: klaidų tvarkymas

using Aspose.BarCode.BarCodeRecognition;
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}");
}

Išsamus pavyzdys

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

Naudojimo atvejai ir programos

  • Dabar darbo srautas: QR kodai iš vaizdų, įkeliamų per internetą ar mobilųjį telefoną
  • Kiti atvejai: QR vaizdai, kurie yra įtraukti į baitų ar srautų
  • „Microservices“ ir „Serverless“ paslaugos: Nereikia failų sistemos prieigos ar disko rašymo

Bendrieji iššūkiai ir sprendimai

1 iššūkis: dideli vaizdai sukelia atminties problemas Sprendimas: Naudokite srautus efektyviai; apribokite vaizdo dydį arba sumažinkite prieš skenavimą.

2 iššūkis: srautas jau uždarytas / numatytas Sprendimas: Įsitikinkite, kad srautas lieka atviras skenavimo laikotarpiui.

3 iššūkis: nesusiję tinklo srautai Sprendimas: Kopijuokite į MemoryStream, jei reikia.


Peržiūros rezultatai

  • Pakartotinai naudoti srautus ir buferus dideliam perdavimui
  • Skirkite skaitytuvą ir greitai srautus objektus
  • Jei įmanoma, vengti laikinųjų failų

Geriausios praktikos

  1. Visada susidoroti su išimtimis su srautais ir skenavimu
  2. Įvertinkite visus nuskaitytus rezultatus
  3. Optimizuokite konkurenciją žiniatinklio / debesijos darbo srautuose
  4. Testas su įvairių srautų šaltiniais (diskų, tinklų, atminties)

Išplėstiniai scenarijai

1. Scan QR Code from a Byte Array

using Aspose.BarCode.BarCodeRecognition;
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);
    }
}

2. Scan from HTTP Upload (ASP.NET Example)

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

Išvada

Aspose.BarCode for .NET leidžia lengvai nuskaityti QR kodus tiesiogiai iš atminties srautų – tai puikiai tinka debesų, interneto ir mikroservisų darbo srautams be failų įvesties/išvesties.

Daugiau informacijos rasite „Aspose.BarCode“ Apšvietimas .

 Lietuvių