วิธีการสแกนรหัส QR จากการไหลหรือหน่วยความจําโดยใช้ Aspose.BarCode สําหรับ .NET

วิธีการสแกนรหัส 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 ไฟฉาย .

 แบบไทย