Class QrReader
Provides functionality to read QR codes with optional settings.
Inheritance
Namespace: IronQr
Assembly: IronQr.dll
Syntax
public class QrReader : Object
Reading QR codes from an image in C# runs through QrReader. A single reader detects and decodes every QR code in a supplied image, so one call handles a photo or scan that contains one code or several. It is the entry point a developer reaches for behind a search like "C# QR code reader".
Create one with new QrReader() and call Read, passing an IQrInput. The usual input is a QrImageInput wrapping an AnyBitmap loaded from a file, stream, or bytes, with a QrScanMode that selects the detection strategy. Read returns an IEnumerable<QrResult>, one entry per code found, and ReadAsync is the awaitable form for keeping the call off the UI or request thread.
Each QrResult carries the decoded Value, a parsed Url when the value is a link, the detected QrType as a QrEncoding, and the corner Points that locate the code in the image. Because a single image can hold multiple codes, iterate the results rather than assuming one. Set QrScanMode.Auto on the input for difficult photos, where the machine-learning model improves detection, and a basic mode for clean, generated images. IronQR reads from photos, screenshots, and scanned documents, not only crisp generated images, which is why the default mode favors detection accuracy, and the same reader handles a QR code on a PDF page once that page is rendered to a bitmap.
using IronQr;
using IronSoftware.Drawing;
var reader = new QrReader();
using var input = new QrImageInput(AnyBitmap.FromFile("qr.png"), QrScanMode.Auto);
foreach (QrResult result in reader.Read(input))
Console.WriteLine(result.Value);The read QR code example covers a basic read, the read from image how-to handles real images, and the scan modes how-to tunes detection.
Constructors
QrReader()
Initializes a new instance of the QrReader class.
Declaration
public QrReader()
Methods
Read(IQrInput)
Detects and reads all QR code(s) in the frame(s) of the IQrInput provided and wraps all results in a QrResult with coordinates and value information.
Declaration
public IEnumerable<QrResult> Read(IQrInput input)
Parameters
| Type | Name | Description |
|---|---|---|
| IQrInput | input | Wrapped frame bitmap |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.IEnumerable<QrResult> | Object with 4 IronSoftware.Drawing.PointF coordinate values, and QR Code value |
Remarks
If using the IronQr.Slim package alone without IronQr, the operation will not use the Machine Learning model to detect QR Codes resulting in a longer, lower quality read.
ReadAsync(IQrInput)
Detects and reads all QR code(s) in the frame(s) of the IQrInput provided asynchronously and wraps all results in a QrResult with coordinates and value information.
Declaration
public Task<IEnumerable<QrResult>> ReadAsync(IQrInput input)
Parameters
| Type | Name | Description |
|---|---|---|
| IQrInput | input | Wrapped frame bitmap |
Returns
| Type | Description |
|---|---|
| System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<QrResult>> | A task that represents the asynchronous read operation. The value of the TResult parameter contains an object with 4 IronSoftware.Drawing.PointF coordinate values, and QR Code value. |
Remarks
If using the IronQr.Slim package alone without IronQr, the operation will not use the Machine Learning model to detect QR Codes resulting in a longer, lower quality read.