@@ -54,15 +54,13 @@ In `Pages\DecodeVideo.razor`, we will modify the component to enable barcode dec
5454
5555<h1>Decode Video</h1>
5656<button @onclick="ToggleVideoTask" style="margin-bottom: 1rem">@videoDecodeBtn</button>
57- <div id="camera-view-container" @ref="cameraViewContainer" style="width: 100%; height: 50vh; display: none"></div>
57+ <div id="camera-view-container" style="width: 100%; height: 50vh; display: none"></div>
5858<h3>Results:</h3>
59- <div id="results" @ref="resultsContainer" style="width: 100%; height: 30vh; overflow: auto; white-space: pre-wrap"></div>
59+ <div id="results" style="width: 100%; height: 30vh; overflow: auto; white-space: pre-wrap"></div>
6060
6161
6262@code {
6363 // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions
64- private ElementReference cameraViewContainer;
65- private ElementReference resultsContainer;
6664 private string mode = "stop";
6765 private string videoDecodeBtn = "Decode Video";
6866
@@ -85,14 +83,14 @@ In `Pages\DecodeVideo.razor`, we will modify the component to enable barcode dec
8583 {
8684 mode = "videoDecode";
8785 videoDecodeBtn = "Stop Decode";
88- await JS.InvokeAsync<string>("startVideoDecode", cameraViewContainer, resultsContainer );
86+ await JS.InvokeAsync<string>("startVideoDecode");
8987 }
9088
9189 private async Task StopDecodeVideoTask()
9290 {
9391 mode = "stop";
9492 videoDecodeBtn = "Decode Video";
95- await JS.InvokeAsync<string>("stopVideoDecode", cameraViewContainer, resultsContainer );
93+ await JS.InvokeAsync<string>("stopVideoDecode");
9694 }
9795}
9896```
@@ -113,7 +111,10 @@ Reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-inter
113111
114112```
115113// Create JS function "startVideoDecode"
116- window.startVideoDecode = async (cameraViewContainer, resultsContainer) => {
114+ window.startVideoDecode = async () => {
115+ const cameraViewContainer = document.getElementById("camera-view-container");
116+ const resultsContainer = document.getElementById("results");
117+
117118 try {
118119 // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control.
119120 const cameraView = await Dynamsoft.DCE.CameraView.createInstance();
@@ -156,7 +157,10 @@ window.startVideoDecode = async (cameraViewContainer, resultsContainer) => {
156157}
157158
158159// Create JS function "stopVideoDecode"
159- window.stopVideoDecode = async (cameraViewContainer, resultsContainer) => {
160+ window.stopVideoDecode = async () => {
161+ const cameraViewContainer = document.getElementById("camera-view-container");
162+ const resultsContainer = document.getElementById("results");
163+
160164 try {
161165 if (!cvRouter?.disposed) {
162166 await cvRouter?.dispose();
@@ -187,13 +191,12 @@ In `Pages\DecodeImage.razor`, we will modify the component to enable barcode dec
187191<PageTitle>Dynamsoft Barcode Reader Hello World - Blazor</PageTitle>
188192
189193<h1>Decode Image</h1>
190- <InputFile style="margin-bottom: 1rem" OnChange="DecodeImageTask" accept="image/*" />
194+ <InputFile id="inputElement" style="margin-bottom: 1rem" OnChange="DecodeImageTask" accept="image/*" />
191195<h3 style="margin-bottom: 1rem">Results:</h3>
192- <div id="results" @ref="resultsContainer" style="width: 100%; height: 30vh; overflow: auto; white-space: pre-wrap"></div>
196+ <div id="results" style="width: 100%; height: 30vh; overflow: auto; white-space: pre-wrap"></div>
193197
194198@code {
195199 // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions
196- private ElementReference resultsContainer;
197200
198201 private async Task DecodeImageTask(InputFileChangeEventArgs e)
199202 {
@@ -204,12 +207,12 @@ In `Pages\DecodeImage.razor`, we will modify the component to enable barcode dec
204207 var jsImageStream = imageFile.OpenReadStream(1024 * 1024 * 20);
205208 var dotnetImageStream = new DotNetStreamReference(jsImageStream);
206209
207- await JS.InvokeAsync<string>("startImageDecode", resultsContainer, imageFile.Name, dotnetImageStream );
210+ await JS.InvokeAsync<string>("startImageDecode");
208211 }
209212
210- public void Dispose() {
211- JS.InvokeAsync<string>("cleanUpImageDecode");
212-
213+ public void Dispose()
214+ {
215+ JS.InvokeAsync<string>("cleanUpImageDecode");
213216 }
214217}
215218```
@@ -228,16 +231,21 @@ Reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-inter
228231
229232```
230233// Create JS function "startImageDecode"
231- window.startImageDecode = async ( resultsContainer, fileName, image) => {
234+ window.startImageDecode = async () => {
235+ const inputElement = document.getElementById("inputElement");
236+ const resultsContainer = document.getElementById("results");
237+
238+ const file = inputElement.files[0]; // Get the first file from the input element
239+
232240 try {
233- if (image ) {
241+ if (file ) {
234242 // Convert file to blob
235- const arrayBuffer = await image .arrayBuffer();
243+ const arrayBuffer = await file .arrayBuffer();
236244 const blob = new Blob([arrayBuffer]);
237245
238246 cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance();
239247 const result = await cvRouter.capture(blob, "ReadBarcodes_SpeedFirst");
240- resultsContainer.innerText = `${fileName}: \n`;
248+ resultsContainer.innerText = `File: ${file.name} \n`;
241249 for (let item of result.items) {
242250 if (item.type !== Dynamsoft.Core.EnumCapturedResultItemType.CRIT_BARCODE) {
243251 continue;
@@ -251,6 +259,7 @@ window.startImageDecode = async ( resultsContainer, fileName, image) => {
251259 } catch (ex) {
252260 let errMsg = ex.message || ex;
253261 console.error(errMsg);
262+ resultsContainer.innerText += `Error: ${errMsg}`
254263 }
255264}
256265```
0 commit comments