移动设备上的条码扫描技术

随着移动设备的普及,越来越多的应用需要在移动设备上实现条码扫描功能。这不仅包括浏览器,如Safari、Firefox、Opera、Chrome,也包括用于构建原生应用的WebView UI组件。对于熟悉Web编程的开发者来说,创建优秀的Android和iOS移动应用变得轻而易举。

动态视觉条码阅读器SDK

动态视觉条码阅读器SDK为Windows提供了.NET API。可以在服务器端(IIS)实现条码阅读模块,并使用HTML5检测从任何移动设备捕获的条码图像。

一维条码:Code 39, Code 93, Code 128, Codabar, Interleaved 2 of 5, EAN-8, EAN-13, UPC-A, UPC-E, Industrial 2 of 5

二维条码:QRCode, DataMatrix, PDF417

BMP, JPEG, PNG, GIF, TIFF, PDF

Windows, IIS

HTML5中调用移动设备摄像头

要在HTML5中访问移动设备的摄像头,只需要一行代码:

<input type="file" name="fileToUpload" id="fileToUpload" style="display: none;" accept="image/*" />

点击“抓取图像”,原生相机应用将被带到前端。拍照后返回,可以按照以下方式获取图像数据:

var file = e.target.files[0], imageType = /image.*/; if (!file.type.match(imageType)) { alert('The uploaded file is not supported.'); return; } btnGrab.disabled = true; btnRead.disabled = true; loadImage(e.target.files[0], function (img) { $("#divBorder").empty(); $("#divBorder").attr('min-height', '1px'); document.getElementById('divBorder').appendChild(img); btnGrab.disabled = false; btnRead.disabled = false; });

使用JavaScript上传捕获的图像

将图像数据转换为Base64字符串:

function scanBarcode() { var base64 = orgCanvas.toDataURL('image/jpeg', 0.7); var data = base64.replace(/^data:image\/(png|jpeg|jpg);base64,/, ""); var imgData = JSON.stringify({ Base64Data: data, BarcodeType: getBarcodeFormat().toString(), MultiBarcodes: document.getElementById('chkMultiBarcodes').checked }); readBarcodeRequest(imgData); }

使用XMLHttpRequest将JSON数据发送到Web服务器:

function readBarcodeRequest(data) { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", uploadComplete, false); xhr.addEventListener("error", uploadFailed, false); xhr.addEventListener("abort", uploadCanceled, false); xhr.upload.addEventListener('progress', uploadProgress, false); xhr.open("POST", "MobilecamBarcodeReader.ashx"); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(data); }

在ASP.NET中处理JSON数据

使用StreamReader获取流数据:

context.Request.InputStream.Position = 0; string jsonString; using (var inputStream = new StreamReader(context.Request.InputStream)) { jsonString = inputStream.ReadToEnd(); }

将字符串转换为JSON对象:

var postData = JsonConvert.DeserializeObject<PostData>(@jsonString); if (postData == null) return; var iMaxNumbers = postData.MultiBarcodes ? 100 : 1;

在IIS服务器端读取条码

指定有效的许可证以使检测API工作:

public static BarcodeResult[] GetBarcode(string strImgBase64, Int64 format, int iMaxNumbers) { var reader = new Dynamsoft.Barcode.BarcodeReader(); var options = new ReaderOptions { MaxBarcodesToReadPerPage = iMaxNumbers, BarcodeFormats = (BarcodeFormat) format }; reader.ReaderOptions = options; reader.LicenseKeys = ""; return reader.DecodeBase64String(strImgBase64); }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485