-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathQrCodeDecoder.cs
More file actions
28 lines (21 loc) · 805 Bytes
/
QrCodeDecoder.cs
File metadata and controls
28 lines (21 loc) · 805 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using Infra.BarCode.QRCode.Models;
using Infra.Core.BarCode.Abstractions;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using ZXing;
using ZXing.Common;
using ZXing.ImageSharp;
using ZXing.QrCode;
namespace Infra.BarCode.QRCode;
public class QrCodeDecoder : IBarCodeDecoder<QrCodeDecodeParam>
{
public async Task<string> DecodeAsync(QrCodeDecodeParam param)
{
await using var imageStream = new MemoryStream(param.BinaryData);
var image = await Image.LoadAsync<Rgba32>(imageStream);
var imageSharpLuminanceSource = new ImageSharpLuminanceSource<Rgba32>(image);
var reader = new QRCodeReader();
var result = reader.decode(new BinaryBitmap(new HybridBinarizer(imageSharpLuminanceSource)));
return result?.Text;
}
}