我的贡献是双重的。首先(好消息!)我 100% 确定希望您使用 JavaScript 是可以实现的 CAVEAT:Chrome / Firefox 可能一切正常,但它只适用于更现代版本的 Safari(6+)和 IE(IE10+ )。来源http://caniuse.com/filereader
其次,我希望我的贡献能让您在解决问题方面走得更远,尽管我承认我还没有提出 PDF417 图像读取算法,这将是最后一块拼图。
好的,我们开始:
a) 让 JavaScript(在客户端机器上运行)向用户呈现一个 GUI,以允许他们从本地文件系统中选择一个文件(他们的驾驶执照图片),然后...... b)将其带入 JavaScript 应用程序(全部不涉及服务器或 Java);和 ... c) ...让 JavaScript 解析它并解释 PDF417 条形码的暗/亮模式,以推断其中编码的“纯文本”人类可读数据。我提到 Java 不是一个选项,因为 Java 小程序似乎永远不会被允许在 Chrome 中运行,尽管 Java 有一个很好的图像数据处理包,它很适合这个东西。
a) 所需的理解和代码
多年来,HTML 表单允许程序员使用文件上传字段。你需要:
<input type="file" id="myFileInput">
b) 所需的理解和代码
此外,在 JavaScript 方面,您需要(最重要的是)使用 HTML5 FileReader Api(参见http://blog.teamtreehouse.com/reading-files-using-the-html5-filereader-api).. .vis-a-vis:
var reader = new FileReader();
// ... and ...
reader.readAsDataURL(file);
当readAsDataURL()
涉及到插入src
以 var ing = new Image();
. 即设置为src
完成data:image/gif;base64,*data*
后,您至少可以在您的网页中显示驾驶执照。稍后我会提到获取这个新实例化的图像并通过 Canvas 的 2D 上下文显示,作为将新图像附加到 DOM 的替代方法,但我们稍后会谈到。到目前为止,我所讨论的所有内容都可以在 blog.teamtreehouse.com 的代码笔演示 ( http://codepen.io/matt-west/pen/CfilG ) 上的操作中看到。此外,对于更适合初学者的讨论,FileReader()
您可能需要观看此视频(http://www.sitepoint.com/reading-images-data-using-canvas-javascript/)但请耐心等待,因为您想要的关于图像上传和显示的内容只会在 5 分钟 30 秒内被提及。
c) 所需的理解和代码
这是我遇到困难的地方,因为我没能找到你想要的东西,但我确实为 UPC 格式的条形码找到了这个:http: //badassjs.com/post/654334959/barcode-scanning-in-javascript (demo = http ://tobeytailor.s3.amazonaws.com/get_barcode_from_image/index.html)。我不确定,但我认为要实现这一点,Tobey 必须从new Image()
(一旦src
通过 API 填充数据fileReader()
)中的数据蚕食并在 Canvas 2d 上下文中使用它。它证明了它是可以做到的,但是在编写算法以了解如何解释您必须理解 PDF417 的数据时:我发现这些链接是有用的起点
http://en.wikipedia.org/wiki/PDF417
http://omniplanar.com/PDF417-2D-Barcode.php
祝你好运!