|
3 | 3 | <head> |
4 | 4 | <meta charset="UTF-8"> |
5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
6 | | - <script src="https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@2.1.0/dist/dce.js"></script> |
| 6 | + <script src="https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@2.3.1/dist/dce.js"></script> |
7 | 7 | <title>explore-the-features</title> |
8 | 8 | <style> |
9 | 9 | * { |
|
21 | 21 | border: 0; |
22 | 22 | } |
23 | 23 |
|
24 | | - #recognizerUI { |
| 24 | + #ui-container { |
25 | 25 | position: absolute; |
26 | 26 | top: 0; |
27 | 27 | bottom: 40%; |
|
96 | 96 | </style> |
97 | 97 | </head> |
98 | 98 | <body> |
99 | | - <div id="recognizerUI"></div> |
| 99 | + <div id="ui-container"></div> |
100 | 100 | <footer> |
101 | 101 | <div class="btn-group"> |
102 | 102 | <button class="open-camera">open camera</button> |
|
194 | 194 | let enhancer; |
195 | 195 | let area; |
196 | 196 | let overlay; |
197 | | - let timer; |
198 | 197 | let ctx; |
199 | 198 | let regionLeft,regionRight,regionTop,regionBottom; |
200 | 199 |
|
|
235 | 234 | console.log('single frame acquired'); |
236 | 235 | console.log(callBackInfo); |
237 | 236 | }; |
| 237 | + const callbackFrameAddedToBuffer = () => { |
| 238 | + console.log('frame added to buffer'); |
| 239 | + // get frame and add it to DOM |
| 240 | + const dceFrame = enhancer.getFrameFromBuffer(); |
| 241 | + if(dceFrame) { |
| 242 | + let cvs = dceFrame.toCanvas(); |
| 243 | + showFrame.innerHTML = ''; |
| 244 | + showFrame.appendChild(cvs); |
| 245 | + } |
| 246 | + }; |
238 | 247 | enhancer.on("cameraOpen", callbackCameraOpen); |
239 | 248 | enhancer.on("cameraClose", callbackCameraClose); |
240 | 249 | enhancer.on("cameraChange", callbackCameraChange); |
241 | 250 | enhancer.on("resolutionChange", callbackResolutionChange); |
242 | 251 | enhancer.on("played", callbackPlayed); |
243 | 252 | enhancer.on("singleFrameAcquired",callbackSingleFrameAcquired); |
| 253 | + enhancer.on("frameAddedToBuffer",callbackFrameAddedToBuffer); |
244 | 254 | if(!enhancer.isOpen()) { |
245 | 255 | setLineWidth.disabled = "disabled"; |
246 | 256 | setStrokeStyle.disabled = "disabled"; |
|
308 | 318 | return; |
309 | 319 | } else { |
310 | 320 | area = {x: 10, y:10, width:80, height:80}; |
311 | | - document.querySelector('#recognizerUI').appendChild(enhancer.getUIElement()); |
| 321 | + document.querySelector('#ui-container').appendChild(enhancer.getUIElement()); |
312 | 322 | await enhancer.open(true); |
313 | 323 | if(enhancer.getViewDecorator().type.length !== 0) { |
314 | 324 | setLineWidth.disabled = ""; |
|
391 | 401 | if(!enhancer.isOpen()) { |
392 | 402 | return; |
393 | 403 | } else { |
394 | | - let frameData = enhancer.getFrame(); |
395 | | - showFrame.innerHTML = ''; |
396 | | - showFrame.appendChild(frameData.canvas); |
| 404 | + let dceFrame = enhancer.getFrame(); |
| 405 | + if(dceFrame) { |
| 406 | + let cvs = dceFrame.toCanvas(); |
| 407 | + showFrame.innerHTML = ''; |
| 408 | + showFrame.appendChild(cvs); |
| 409 | + } |
397 | 410 | } |
398 | 411 | }) |
399 | 412 |
|
|
426 | 439 | switchFetchLoop.addEventListener('click', () => { |
427 | 440 | if(enhancer.isFetchingLoopStarted()) { |
428 | 441 | enhancer.stopFetchingLoop(); |
429 | | - clearInterval(timer); |
430 | 442 | alert('stop fetching loop'); |
431 | 443 | } else { |
432 | | - enhancer.startFetchingLoop(); |
433 | 444 | // Specify the interval to fetch a new frame. |
434 | 445 | enhancer.loopInterval = 500; |
435 | | - enhancer.maxNumberOfFramesInBuffer = 3 |
436 | | - timer = setInterval(() => { |
437 | | - // get frame and add it to DOM |
438 | | - const dceFrame = enhancer.getFrameFromBuffer(); |
439 | | - if(dceFrame !== null) { |
440 | | - let cvs = dceFrame.canvas; |
441 | | - showFrame.innerHTML = ''; |
442 | | - showFrame.appendChild(cvs); |
443 | | - } |
444 | | - },1000) |
| 446 | + enhancer.startFetchingLoop(); |
445 | 447 | } |
446 | 448 | }) |
447 | 449 | </script> |
|
0 commit comments