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:
- Visual Studio 2019 arba vėliau
- .NET 6.0 arba naujesnė (arba .NET Framework 4.6.2+)
- Aspose.BarCode for .NET įdiegta per NuGet
- Pagrindinės žinios apie C#
PM> Install-Package Aspose.BarCodeKitas
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
- Visada susidoroti su išimtimis su srautais ir skenavimu
- Įvertinkite visus nuskaitytus rezultatus
- Optimizuokite konkurenciją žiniatinklio / debesijos darbo srautuose
- 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 .