【发布时间】:2015-09-30 04:32:00
【问题描述】:
我将 zxing 与 App Inventor 2 一起使用。如果我将 6 位数字编码为 ITF 条形码,则 zxing android 扫描仪可以正常工作。但是,如果我从 2 位或 4 位数字创建 ITF 条码,则条码会更短且无法扫描。 对于我的应用程序,我更喜欢条形码尽可能短。 请帮忙 谢谢 大卫
【问题讨论】:
我将 zxing 与 App Inventor 2 一起使用。如果我将 6 位数字编码为 ITF 条形码,则 zxing android 扫描仪可以正常工作。但是,如果我从 2 位或 4 位数字创建 ITF 条码,则条码会更短且无法扫描。 对于我的应用程序,我更喜欢条形码尽可能短。 请帮忙 谢谢 大卫
【问题讨论】:
ITF 没有必需的校验和,因此允许它扫描非常短的 ITF 代码是有问题的。它很可能将它们视为非条形码图像中的幻读。可接受的最小 ITF 长度为 6 个字符。您可以覆盖它,但如果这样做,您需要使用校验和并在您的代码中验证它。这可能不是一个很好的格式选择。
【讨论】:
正如 Sean 已经回答的那样,ITF 格式没有校验和,因此 ZXing 的作者决定支持最少 6 个字符的条形码,以避免高“误报”率,即在较长的条形码中检测到较短的条形码的情况。
您可以从ZXing source code 清楚地看到这一点。允许的最小长度为 6。
作者还建议您在 ITF 条码中添加校验和字符,以便对获得的结果更有信心。
这是适合您情况的最佳解决方案:在生成条形码的一侧,添加额外的 2 个字符作为校验位,以获得 6 位值。生成校验位的最佳方法是使用MOD-97-10 ISO 7064 standard,它通常用于保护IBAN numbers。 ZXing 的 ITF 扫描仪可以很好地处理 6 个字符的条码,并且您还可以验证获得的校验位,以增加对结果的信心。
如果这不适用于您的情况,您可以编辑上面链接的 ZXing 源代码,添加扫描长度为 2 和 4 的 ITF 条形码的功能,并将此自定义构建集成到您的应用中。
【讨论】: