.NET을 위한 Aspose.BarCode를 사용하여 스트림 또는 메모리에서 QR 코드를 스캔하는 방법
이 글은 어떻게 설명하는지 QR 코드를 스트림이나 메모리에서 직접 스캔합니다. 이 접근법은 클라우드, 웹 및 서버가 없는 응용 프로그램에서 파일이 업로드되거나 메모리로 처리되거나 네트워크를 통해 수신되는 데 필수적입니다.
현실 세계 문제
현대 .NET 응용 프로그램은 종종 물리적 파일 대신 이미지 스트림으로 처리합니다. 개발자는 이러한 메모리 이미지에서 QR 코드를 읽을 수있는 방법이 필요합니다.
해결책의 개요
Aspose.BarCode for .NET can read QR codes from any Stream 또는 MemoryStream,이 디스크에 절약하지 않고 이미지를 처리 할 수 있습니다.이 웹 서버, REST APIs 및 분산 클라우드 앱에 대한 빠른 작업 흐름을 꺼냅니다.
원칙
시작하기 전에, 당신이 가지고 있는지 확인하십시오 :
- Visual Studio 2019 또는 이후
- .NET 6.0 또는 이후 (또는 .NET Framework 4.6.2+)
- Aspose.BarCode for .NET installed via NuGet
- C#에 대한 기본 지식
PM> Install-Package Aspose.BarCode단계별 실행
단계 1: 설치 및 설정 Aspose.BarCode
Aspose.BarCode 패키지를 추가하고 필요한 이름 공간을 포함합니다.:
using Aspose.BarCode.BarCodeRecognition;2단계: 그림을 스트림으로 업로드하십시오
QR 이미지로 업로드 하 고 FileStream, MemoryStream, 또는 메모리에서 어떤 출처 (예 : HTTP 업로드, 클라우드 블로브)에서.
using (FileStream fs = File.OpenRead("qr_sample.png"))
{
// Ready for scanning
}단계 3: 스트림을 위한 BarCodeReader 만들기
흐름을 통과하여 BarCodeReader 그리고 명시하는 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 : 스캔 프로세스를 실행
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine($"Type: {result.CodeTypeName}");
Console.WriteLine($"Text: {result.CodeText}");
}단계 5: 프로세스 및 사용 출력
응용 프로그램에서 분해된 QR 데이터를 사용하십시오 (예 : 인증, 검색, 메타 데이터 추출).
단계 6 : 실수 처리 실행
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}");
}완전한 예제
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}");
}
}
}사용 사례 및 응용 프로그램
- 클라우드 작업 흐름 : 웹 또는 모바일을 통해 업로드 된 이미지에서 QR 코드를 처리
- 나머지 APIs : QR 이미지를 비트 라일 또는 스트림으로 게시
- 서버 및 마이크로 서비스: 파일 시스템 액세스 또는 디스크 글쓰기 필요가 없습니다
일반적인 도전과 해결책
도전 1 : 큰 이미지가 기억 문제를 일으키는 이유 해결책 : 효율적으로 스트림을 사용하십시오; 스캔 전에 이미지 크기를 제한하거나 스케일을 내려 놓으십시오.
도전 2 : 스트림은 이미 닫혀있다 / 준비 해결책 : 스캔 기간 동안 흐름이 열려 있도록 하십시오.
도전 3 : 검색되지 않은 네트워크 스트림 해결책 : 복사 A MemoryStream 필요하다면.
성과 고려
- 높은 전력으로 스트림과 버퍼를 다시 사용
- 읽기 및 스트림 개체를 신속하게 사용할 수 있습니다.
- 가능한 경우 일시적인 파일을 저장하지 마십시오.
최고의 실천
- 항상 스트림과 스캔으로 예외를 처리합니다.
- 모든 디코딩 결과를 확인
- 웹/클라우드 작업 흐름에서 경쟁을 최적화
- 다양한 스트림 출처 (디스크, 네트워크, 메모리)를 사용하여 테스트
고급 시나리오
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();
}결론
Aspose.BarCode for .NET makes it easy to scan QR codes directly from in-memory streams—perfect for cloud, web, and microservice workflows without file I/O.
자세한 내용은 Aspose.BarCode를 참조하십시오. API 참조 .