.NET のための Aspose.BarCode を使用してストリームまたはメモリから QR コードをスキャンする方法
この記事では、Aspose.BarCode for .NET を使用してストリームやメモリから直接 QR コードをスキャンする方法を説明します このアプローチは、ファイルがアップロードされ、記憶に取り扱われ、またはネットワークを通じて受信されているクラウド、ウェブ、およびサーバーなしのアプリケーションに不可欠です。
現実世界問題
現代の .NET アプリケーションは、物理ファイルの代わりに画像をストリーム(アップロード、API、またはクラウドストレージから)として扱います。
ソリューション概要
Aspose.BarCode for .NET は、QR コードを読み取ることができます。 Stream
または MemoryStream
これは、Webサーバー、REST APIs、および配布されたクラウドアプリケーションのための迅速なワークフローを解除します。
原則
スタートする前に、あなたが持っていることを確認してください:
- Visual Studio 2019 以降
- .NET 6.0 またはそれ以降(または .Net Framework 4.6.2+)
- Aspose.BarCode for .NET は NuGet でインストールされています。
- C#の基本知識
PM> Install-Package Aspose.BarCode
ステップ・ステップ・実施
ステップ1:インストールおよび設定 Aspose.BarCode
Aspose.BarCode パッケージを追加し、必要な名称スペースを含みます。
using Aspose.BarCode.BarCodeRecognition;
ステップ2:画像をストリームにアップロードする
QR画像をAにアップロードする FileStream
, MemoryStream
メモリ内の情報源(HTTPアップロード、クラウドブロブなど)
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}");
}
}
}
ケースとアプリケーションの使用
- クラウドワークフロー: ウェブまたはモバイルでアップロードされた画像からQRコードを処理する
- REST APIs: バイトライルまたはストリームとして投稿されたQR画像をデコード
- Serverless & Microservices: ファイルシステムアクセスやディスク書き込みの必要はありません。
共通の課題と解決策
チャレンジ1:大きな画像がメモリの問題を引き起こす解決策: ストリームを効率的に使用し、スキャンする前に画像サイズを制限またはスケールを下げます。
チャレンジ2:ストリームはすでに閉鎖されています。解決策: ストリームがスキャン期間中にオープンであることを確認します。
チャレンジ3:非検索可能なネットワークストリーム解決策: コピー A MemoryStream
必要に応じて。
パフォーマンス考慮
- 高流量のためのストリームとバッファーを再利用する
- 読者とストリームオブジェクトをすぐに利用する
- 可能な限り一時的なファイルを保存しないでください。
ベストプラクティス
- 常にストリームとスキャンで例外に対処する
- すべてのデコードされた結果を確認する
- ウェブ/クラウドワークフローにおける競争の最適化
- さまざまなストリームソース(ディスク、ネットワーク、メモリ)でテスト
高度なシナリオ
1.Byte ArrayからQRコードをスキャンする
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);
}
}
・HTTPアップロード(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 は、ファイル I/O なしでクラウド、ウェブ、マイクロサービスのワークフローに最適なメモリストリームから直接 QR コードをスキャンすることを容易にします。
詳細については、 Aspose.BarCode を参照してください。 API 参照 .