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

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

Šiame straipsnyje paaiškinama, kaip skenuoti QR kodus tiesiogiai iš srovės ar 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 problemos

Šiuolaikinės .NET programos dažnai tvarko vaizdus kaip srautus (nuo įkėlimo, API ar debesijos saugojimo) vietoj fizinių failų. kūrėjams reikia būdo skaityti QR kodus iš šių atminties vaizdų realiu laiku, skalavimui.

Sprendimo apžvalga

Aspose.BarCode .NET gali skaityti 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 paskirstytoms debesų programoms.

Prerequisites

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

  • „Visual Studio 2019“ arba vėliau
  • .NET 6.0 arba naujesnė (arba .Net Framework 4.6.2+)
  • Aspose.BarCode .NET įdiegtas per NuGet
  • Pagrindinės žinios apie C#
PM> Install-Package Aspose.BarCode

Žingsnis po žingsnio įgyvendinimas

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

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

using Aspose.BarCode.BarCodeRecognition;

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

Atsisiųskite QR vaizdą į A FileStream, MemoryStreamarba iš bet kurio atminties šaltinio (pvz., HTTP įkrovimas, debesys).

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

3 žingsnis: sukurkite „BarCodeReader“

Praleiskite srautą į BarCodeReader ir specifikuoti DecodeType.QR:

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

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 iššifruotus QR duomenis savo programoje (pavyzdžiui, autentiškumo, paieškos, metaduomenų ekstrakcijos).

6 žingsnis: klaidų tvarkymas

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

Naudokite atvejus ir paraiškas

  • Darbo srautai: QR kodai iš vaizdų, įkeltų per tinklą ar mobilųjį telefoną
  • REST APIs: Dekoduoti QR vaizdus, pateiktus kaip bitų ar srautų
  • Serverless & Microservices: Nereikia failų sistemos prieigos ar disko įrašų

Bendrieji iššūkiai ir sprendimai

  • 1 iššūkis: dideli vaizdai sukelia atminties problemų*Sprendimas yra: Naudokite srautus efektyviai; apriboti vaizdo dydį arba nukreipti prieš skenavimą.

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

  • 3 iššūkis: nesiekiami tinklo srautai**Sprendimas yra: Kopijuoti į A MemoryStream Jei reikia .

Veiksmingumo apžvalgos

  • Pakartotinai panaudoti srautus ir buferus dideliam perdavimui
  • Laikykitės skaitytojo ir srauto objektų greitai
  • Išvengti laikinųjų failų, kai įmanoma

Geriausios praktikos

  • Visada susidoroti su išimtimis su srautais ir skenavimu
  • Įvertinkite visus dešifruotus rezultatus
  • Optimizuokite konkurencingumą žiniatinklio / debesijos darbo srautuose
  • Testas su įvairiais srauto šaltiniais (diskų, tinklo, atminties)

Išplėstiniai scenarijai

QR kodo skenavimas iš 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);
    }
}

Skanymas iš HTTP įkrovimo (ASP.NET pavyzdys)

// 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 .NET leidžia lengvai nuskaityti QR kodus tiesiogiai iš atminties srauto – puikiai tinka debesims, žiniatinkliui ir mikro paslaugų darbo srautams be failų I/O.

Norėdami gauti daugiau informacijos, žr Aspose.BarCode Apyrankės nuoroda .

 Lietuvių