วิธีการสแกนรหัส QR จากการไหลหรือหน่วยความจําโดยใช้ Aspose.BarCode สําหรับ .NET
บทความนี้อธิบายวิธีการสแกนรหัส QR โดยตรงจาก Streams หรือหน่วยความจําโดยใช้ Aspose.BarCode สําหรับ .NET วิธีนี้เป็นสิ่งสําคัญสําหรับแอพคลาวด์เว็บและไม่มีเซิร์ฟเวอร์ที่ไฟล์จะถูกอัปโหลดการประมวลผลในหน่วยงานหรือได้รับการรับผ่านเครือข่าย
ปัญหาโลกจริง
การประยุกต์ใช้ .NET ของสมัยใหม่มักจะจัดการกับภาพเป็นการไหล (จากอัปโหลด API หรือบันทึกคลาวด์) แทนกับไฟล์ทางกายภาพ ผู้พัฒนาต้องการวิธีที่จะอ่านรหัส QR จากภาพในหน่วยความจําเหล่านี้สําหรับการประมวลผลในเวลาจริงที่สามารถสแกนได้
ความคิดเห็นเกี่ยวกับโซลูชัน
Aspose.BarCode สําหรับ .NET สามารถอ่านรหัส QR จากใด ๆ Stream
หรือ MemoryStream
อนุญาตให้คุณประมวลผลภาพโดยไม่เคยบันทึกไปยังไดรฟ์ สิ่งนี้เปิดล็อคการทํางานที่รวดเร็วสําหรับเซิร์ฟเวอร์เว็บ APIs REST และแอปคลาวด์ที่กระจาย
ข้อกําหนด
ก่อนที่คุณจะเริ่มต้นให้แน่ใจว่าคุณมี:
- Visual Studio 2019 หรือภายหลัง
- .NET 6.0 หรือเร็วกว่า (หรือ .Net Framework 4.6.2+)
- Aspose.BarCode สําหรับ .NET ติดตั้งผ่าน NuGet
- ความรู้พื้นฐานของ C#
PM> Install-Package Aspose.BarCode
การดําเนินการขั้นตอนขั้นตอน
ขั้นตอน 1: ติดตั้งและตั้งค่า Aspose.BarCode
เพิ่มแพคเกจ Aspose.BarCode และรวมพื้นที่ชื่อที่ต้องการ:
using Aspose.BarCode.BarCodeRecognition;
ขั้นตอนที่ 2: ดาวน์โหลดภาพของคุณไปยัง Stream
ดาวน์โหลดภาพ QR ใน A FileStream
, MemoryStream
, หรือจากแหล่งในหน่วยความจําใด ๆ (เช่น HTTP upload, cloud blob)
using (FileStream fs = File.OpenRead("qr_sample.png"))
{
// Ready for scanning
}
ขั้นตอนที่ 3: สร้าง BarCodeReader สําหรับการไหล
ผ่านกระแสไปยัง BarCodeReader
และระบุ DecodeType.QR
:
using (BarCodeReader reader = new BarCodeReader(fs, DecodeType.QR))
{
// Ready for decoding
}
ขั้นตอน 4: การดําเนินการกระบวนการสแกน
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine($"Type: {result.CodeTypeName}");
Console.WriteLine($"Text: {result.CodeText}");
}
ขั้นตอนที่ 5: การประมวลผลและใช้การส่งออก
ใช้ข้อมูล QR ที่ถอดรหัสในแอพลิเคชันของคุณ (เช่นการรับรองการค้นหาการ استخراجข้อมูลโลหะ)
ขั้นตอนที่ 6: การดําเนินการจัดการข้อผิดพลาด
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}");
}
ตัวอย่างที่สมบูรณ์
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}");
}
}
}
ใช้กรณีและแอปพลิเคชัน
- Cloud Workflows: การประมวลผลรหัส QR จากภาพที่อัพโหลดผ่านเว็บหรือมือถือ
- แอปพลิเคชันที่เหลือ: ลบรูปภาพ QR ที่โพสต์เป็นไบต์หรือสตรีม
- Serverless & Microservices: ไม่จําเป็นต้องเข้าถึงระบบไฟล์หรือการเขียนดิสก์
ความท้าทายและโซลูชั่นทั่วไป
ความท้าทาย 1: ภาพขนาดใหญ่ทําให้เกิดปัญหาหน่วยความจําโซลูชัน : ใช้การไหลได้อย่างมีประสิทธิภาพ จํากัด ขนาดภาพหรือสแกนลงก่อนการสกปรก
ความท้าทาย 2: Stream ได้รับการปิด / มีบริการโซลูชัน : ตรวจสอบให้แน่ใจว่าการไหลจะยังคงเปิดสําหรับระยะเวลาการสแกน
ความท้าทาย 3: การไหลเครือข่ายที่ไม่สามารถค้นหาได้โซลูชัน : การคัดลอกไปยัง A MemoryStream
ถ้าจําเป็น
การพิจารณาประสิทธิภาพ
- การใช้ใหม่ของกระแสและบูเฟอร์สําหรับการส่งผ่านสูง
- มีผู้อ่านและไหลวัตถุอย่างรวดเร็ว
- หลีกเลี่ยงการบันทึกไฟล์ชั่วคราวเมื่อเป็นไปได้
แนวทางที่ดีที่สุด
- เสมอจัดการกับข้อบกพร่องโดยการไหลและการสแกน
- ตรวจสอบผลลัพธ์ทั้งหมด
- การปรับปรุงการแข่งขันในอินเทอร์เน็ต/คลาวด์
- การทดสอบด้วยแหล่งจ่ายไฟต่างๆ (ดิสก์เครือข่ายหน่วยความจํา)
การ์ตูนขั้นสูง
1. สแกนรหัส QR จาก 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);
}
}
2. การสแกนจาก HTTP Upload (ตัวอย่าง 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();
}
ข้อสรุป
Aspose.BarCode สําหรับ .NET ทําให้ง่ายต่อการสแกนรหัส QR โดยตรงจากการไหลในหน่วยความจํา - เหมาะสําหรับการทํางานของคลาวด์เว็บและไมโครเซิร์ฟเวอร์โดยไม่ต้องไฟล์ I / O
สําหรับรายละเอียดเพิ่มเติมดู Aspose.BarCode ไฟฉาย .