BlazorBarcodeScanner.ZXing.JS
0.2.3
See the version list below for details.
dotnet add package BlazorBarcodeScanner.ZXing.JS --version 0.2.3
NuGet\Install-Package BlazorBarcodeScanner.ZXing.JS -Version 0.2.3
<PackageReference Include="BlazorBarcodeScanner.ZXing.JS" Version="0.2.3" />
paket add BlazorBarcodeScanner.ZXing.JS --version 0.2.3
#r "nuget: BlazorBarcodeScanner.ZXing.JS, 0.2.3"
// Install BlazorBarcodeScanner.ZXing.JS as a Cake Addin #addin nuget:?package=BlazorBarcodeScanner.ZXing.JS&version=0.2.3 // Install BlazorBarcodeScanner.ZXing.JS as a Cake Tool #tool nuget:?package=BlazorBarcodeScanner.ZXing.JS&version=0.2.3
BlazorBarcodeScanner
Barcode Scanner component for Blazor using zxing-js Interop
Prerequisites
Before you continue, please make sure you have the latest version of Visual Studio and .NET 5 installed. Visit official Blazor site to learn more.
Installation
1. NuGet packages
Install-Package BlazorBarcodeScanner.ZXing.JS
or
dotnet add package BlazorBarcodeScanner.ZXing.JS
2. Refence to JS libraries
Add following lines to wwwroot\index.html
(for server side _Host.cshtml
) before </body>
tag.
<script src="_content/BlazorBarcodeScanner.ZXing.JS/zxingjs-0.18.4.index.min.js"></script>
<script src="_content/BlazorBarcodeScanner.ZXing.JS/BlazorBarcodeScanner.js"></script>
Usage
Add reference to your .razor
page/component for this library
@using BlazorBarcodeScanner.ZXing.JS
Add following component ( with default parameters
) to anywhere you want in your page/component
<BlazorBarcodeScanner.ZXing.JS.BarcodeReader />
or with custom parameters
( below shows default values of parameters)
<BlazorBarcodeScanner.ZXing.JS.BarcodeReader
Title="Scan Barcode from Camera"
StartCameraAutomatically="false"
ShowStart="true"
ShowReset="true"
ShowToggleTorch = "true"
ShowVideoDeviceList="true"
VideoWidth="300"
VideoHeight="200"
/>
Note that ShowToggleTorch
is an experimental feature.
Receiving callbacks
OnCodeReceived
The library raises a custom event, whenever the barcode scanner sucessfully decoded a value from video stream. You can attach to that event using the component's Blazor EventCallback
named OnCodeReceived
.
Note: Accessing BlazorBarcodeScanner.ZXing.JS.JsInteropClass.BarcodeReceived
directly is discuraged and will be removed in the future. See the corresponding fragments in the code blocks below:
<BlazorBarcodeScanner.ZXing.JS.BarcodeReader
...
OnCodeReceived="LocalReceivedBarcodeText"
/>
private string LocalBarcodeText;
private void LocalReceivedBarcodeText(BarcodeReceivedEventArgs args)
{
this.LocalBarcodeText = args.BarcodeText;
StateHasChanged();
}
OnDecodingChanged
In case you need to react on changed decoding states (e.g. hide and display the camera view in your page), you can hook up to this callback.
Capturing a picture from the stream
In some application it might be useful if a picture can be useful to take a still image of the frame that just decoded the last barcode. Therefor the component features an API call to capture such an image as base64 encoded JPEG image.
<BlazorBarcodeScanner.ZXing.JS.BarcodeReader @ref="_reader"
...
/>
<button @onclick="OnGrabFrame">Grab image</button>
<img src="@_img" style="@(string.IsNullOrWhiteSpace(_imgSrc) ? "display:none;" : "")" />
...
private BarcodeReader _reader;
private string _img = string.Empty;
private void OnGrabFrame(MouseEventArgs args)
{
_imgSrc = await _reader.Capture();
StateHasChanged();
}
Setting stream quality
While keeping resolution low speeds up image processing, it might yield poor detection performance due to the limited image quality.
In order to allow the application to trade speed for quality, the stream resolution can be set by the application through the following custom parameters
:
- StreamWidth
- StreamHeight
If set to null
or 0
, a default (browser dependent?) resolution is applied (e.g. 640px by 480px). If set to any number >0
, the camera stream is requested with the given setting. The settings are used as ideal
constraint for getUserMedia
(see constraints doc. Doing so allows for achieving highest resolution by requesting rediculous high numbers for either dimension, causing the browser to fall back to the maximum feasable for the device of choice.
Warning: While increasing the stream resolution might improve your application's code reading performance, it might greatly affect the over all user experience (e.g. through a drop of the frame rate, increased CPU usage, bad battery life, ...)
Supported Formats
This library uses auto-detect feature of zxing-js library. It supports variety of barcode types. For more information: zxing-js supported types
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.AspNetCore.Components (>= 3.1.6)
- Microsoft.AspNetCore.Components.Web (>= 3.1.6)
-
net5.0
- Microsoft.AspNetCore.Components (>= 5.0.2)
- Microsoft.AspNetCore.Components.Web (>= 5.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.4 | 41,874 | 11/18/2023 |
1.0.3 | 43,689 | 2/25/2023 |
1.0.2 | 3,065 | 2/19/2023 |
1.0.1 | 259 | 2/17/2023 |
1.0.0 | 2,592 | 12/25/2022 |
0.2.8 | 15,762 | 5/16/2022 |
0.2.7 | 7,909 | 1/23/2022 |
0.2.6 | 668 | 1/11/2022 |
0.2.5 | 2,293 | 11/10/2021 |
0.2.4 | 2,785 | 5/26/2021 |
0.2.3 | 435 | 5/17/2021 |
0.2.2 | 442 | 4/11/2021 |
0.2.1 | 373 | 4/10/2021 |
0.2.0 | 797 | 1/27/2021 |
0.1.2 | 736 | 8/12/2020 |
0.1.1 | 608 | 8/9/2020 |
0.1.0 | 534 | 8/8/2020 |