我正在使用zxing和App inventor 2。如果我将一个6位数字编码成ITF条形码,zxing android扫描仪工作正常。但是,如果我从2位或4位数字创建ITF条形码,条形码就会变短,并且不能扫描。对于我的应用程序,我更喜欢条形码尽可能短。请帮帮忙谢谢大卫
发布于 2015-07-11 21:56:22
ITF没有必要的校验和,因此允许它扫描非常短的ITF代码是有问题的。这使得它们很可能被视为非条形码图像中的幻影读取。可接受的最小ITF长度为6个字符。您可以覆盖它,但如果这样做,则需要使用校验和并在代码中对其进行验证。这可能不是一个很好的格式选择。
发布于 2015-07-13 22:15:01
正如Sean已经回答的,ITF格式没有校验和,因此ZXing的作者决定支持至少6个字符的条形码,以避免高的“假阳性”率,即较短的条形码将在较长的条形码中被检测到的情况。
您可以从ZXing source code中清楚地看到这一点。允许的最小长度为6。
作者还建议您在ITF条形码中添加校验和字符,以获得对所获得结果的更多信心。
这是针对您的情况的最佳解决方案:在您生成条形码的一侧,添加额外的2个字符作为校验位,以获得6位数的值。生成校验位的最佳方法是使用通常用于保护IBAN numbers的MOD-97-10 ISO 7064 standard。ZXing的ITF扫描仪可以很好地处理6个字符的条形码,您还可以验证获得的校验数字,以增加对结果的信心。
如果这不适用于您的情况,您可以编辑上面链接的ZXing源代码,添加扫描长度为2和4的ITF条形码的功能,并将此自定义构建集成到您的应用程序中。
https://stackoverflow.com/questions/31357473
复制相似问题