提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:杨鹏连|2021-03-10 11:17:26.037|阅读 421 次
概述:Dynamsoft条码读取器(DBR)对QR码有很好的支持。自2017年5月25日起具有JavaScript软件包。使用DBR创建移动QR码扫描仪很容易,它可以高效,准确地进行解码。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
Dynamsoft Barcode Reader SDK一款多功能的条码读取控件,只需要几行代码就可以将条码读取功能嵌入到Web或桌面应用程序。这可以节省数月的开发时间和成本。能支持多种图像文件格式以及从摄像机或扫描仪获取的DIB格式。使用Dynamsoft Barcode Reader SDK,你可以创建强大且实用的条形码扫描仪软件,以满足你的业务需求。
点击下载Dynamsoft Barcode Reader最新版
最初是为汽车行业1设计的,QR码(缩写为快速响应代码)已在各种使用场景中流行。从网站URL到很小的图像,QR码都可以编码比一维条形码更丰富的内容。它们可以显示在屏幕上,也可以打印在海报,包装盒等上。人们可以轻松地用手机扫描它们。
Dynamsoft条码读取器(DBR)对QR码有很好的支持。自2017年5月25日起具有JavaScript软件包。使用DBR创建移动QR码扫描仪很容易,它可以高效,准确地进行解码。由于它是HTML5格式,因此用户无需下载和安装应用程序,并且将其集成到不同平台上的应用程序也很方便。
这里是一个不折不扣的现成在线HTML5的移动演示这里。它可以用相机扫描或从本地图像库中读取。它仅在客户端运行。
创建自己的移动扫描仪很简单。GitHub上有很多示例。一些示例演示了如何将DBR与Vue,React和Angular结合使用。有些被设计为PWA或混合应用程序。您可以从基本版本开始:helloworld.html。
QR码扫描仪的Helloworld示例
它首先通过加载其js文件来加载DBR。
<!-- Please visit //www.dynamsoft.com/customer/license/trialLicense to get a trial license. --> <script src="//cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@8.1.3/dist/dbr.js" data-productKeys="PRODUCT-KEYS"></script>该页面包含一个用于显示扫描仪的按钮和一个用于选择要解码的本地图像的按钮。
HTML:
Choose image(s) to decode: <input id="ipt-file" type="file" multiple accept="image/png,image/jpeg,image/bmp,image/gif"> <br><br> <button id="btn-show-scanner">show scanner</button>JavaScript:
// reader for decoding picture let reader = null; // scanner for decoding video let scanner = null; // decode input picture document.getElementById('ipt-file').addEventListener('change', async function(){ try{ reader = reader || await Dynamsoft.DBR.BarcodeReader.createInstance(); let resultsToAlert = []; for(let i = 0; i < this.files.length; ++i){ let file = this.files[i]; resultsToAlert.push(i + '. ' + file.name + ":"); let results = await reader.decode(file); console.log(results); for(let result of results){ resultsToAlert.push(result.barcodeText); } } alert(resultsToAlert.join('\n')); }catch(ex){ alert(ex.message); throw ex; } this.value = ''; }); // decode video from camera document.getElementById('btn-show-scanner').addEventListener('click', async () => { try{ scanner = scanner || await Dynamsoft.DBR.BarcodeScanner.createInstance(); scanner.onFrameRead = results => { if(results.length){ console.log(results); } }; scanner.onUnduplicatedRead = (txt, result) => { alert(result.barcodeFormatString + ': ' + txt); }; await scanner.show(); }catch(ex){ alert(ex.message); throw ex; } });扫描仪的用户界面定义为dist/dbr.scanner.html2:
您可以将其内容复制到HTML文件中,对其进行自定义并使用以下代码行加载:
scanner.setUIElement(scannerElement);
运行时设置
您可以针对不同方案修改运行时设置3。例如,如果我们只想扫描一个QR码,则可以使用以下updateRuntimeSettings方法修改设置:
let settings = await scanner.getRuntimeSettings(); settings.expectedBarcodesCount=1; settings.barcodeFormatIds=Dynamsoft.DBR.EnumBarcodeFormat.BF_QR_CODE; await scanner.updateRuntimeSettings(settings);
通过使用这些设置,将仅识别QR码。这也将提高解码速度。解码速度对于实时视频流扫描非常重要。
还有另一种更改运行时设置的方法:initRuntimeSettingsWithString。
我们可以创建一个JSON模板,如下所示:
{ "Version":"3.0", "ImageParameter": { "Name": "default", "ExpectedBarcodesCount": 1, "BarcodeFormatIds": [ "BF_QR_CODE" ] } }然后使用以下代码加载它(模板可以存储在例如textarea中):
await scanner.initRuntimeSettingsWithString(templateString);请注意,initRuntimeSettingsWithString仅在完整版中可用,而updateRuntimeSettings在精简版和完整版中均可使用(精简版和完整版之间的差异)。要启用全部功能,请将_bUseFullFeature属性设置为true:
Dynamsoft.DBR.BarcodeReader._bUseFullFeature = true; // Control of loading min wasm or full wasm.DBR JS有四个内置的模板:speed,balance,coverage和single。speed如果您想进行实时扫描,则该模板非常合适。但是,如果有许多要解码的QR码或图像复杂,则可能会错过其中的一些。然后,coverage模板是一个更好的选择,尽管它需要更多的时间进行计算。该balance模板同时考虑了速度和覆盖范围。该single模板经过优化,可扫描一个条形码。要使用内置模板之一,请使用以下代码:
await scanner.updateRuntimeSettings("speed");
您可以为自己的用例创建自己的模板。我们的在线演示可方便地试用合适的参数。
特殊QR码案例的设置
通常,我们要扫描的QR码是一个干净的黑白矩阵,如下所示。DBR可以轻松阅读它。
读取大量QR码也没有问题。
但是在某些情况下,QR码不完整或变形。可以在塑料袋,撕开的收据等上看到这些类型的代码。DBR具有内置的代码补充和抗变形算法,以恢复这些QR代码(在第1条和第2条中进行了说明)。
对于以下不完整的QR码,我们可以将BarcodeComplementModes参数添加到模板中以成功执行解码。
{ "Version":"3.0", "ImageParameter": { "Name": "default", "ExpectedBarcodesCount": 1, "MaxAlgorithmThreadCount": 4, "BarcodeFormatIds": [ "BF_QR_CODE" ], "BarcodeComplementModes": [ { "Mode": "BCM_SKIP" }, { "LibraryFileName": "", "LibraryParameters": "", "Mode": "BCM_GENERAL" } ] } }
对于以下变形的QR码,我们可以在模板中包含DeformationResistingModes参数。
{ "Version":"3.0", "ImageParameter": { "Name": "default", "ExpectedBarcodesCount": 1, "MaxAlgorithmThreadCount": 4, "BarcodeFormatIds": [ "BF_QR_CODE" ], "DeformationResistingModes": [ { "Mode": "DRM_SKIP" }, { "Level": 5, "LibraryFileName": "", "LibraryParameters": "", "Mode": "DRM_GENERAL" } ] } }另一个有用的设置是指定要读取的区域/区域:
let settings = await scanner.getRuntimeSettings(); /* * 1 means true * Using a percentage is easier * The following code shrinks the decoding region by 25% on all sides */ settings.region.regionMeasuredByPercentage = 1; settings.region.regionLeft = 25; settings.region.regionTop = 25; settings.region.regionRight = 75; settings.region.regionBottom = 75; await scanner.updateRuntimeSettings(settings);
取景器矩形将出现在视频流上方,然后用户可以将QR码放在矩形中以进行读取。这也将提高读取速度。
还支持QR码的其他变体(Micro QR Code和Model 1)。
上图中使用了我自己创建的自制演示。您可以在以下链接中找到其来源。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢