zxing QRCodeReader中的ChecksumException当不读取带有URL的QR码时

问题描述:

如果我使用URL扫描QR码,以下代码完美且快速地工作。但是,如果我用一个简单的字符串或数字序列(这是我想要做的)来解码QR码,它有时会随机工作,但有99%的时间会因为ChecksumException而失败。zxing QRCodeReader中的ChecksumException当不读取带有URL的QR码时

if (webcam.isOpen()) { 

      if ((image = webcam.getImage()) == null) { 
       continue; 
      } 

      LuminanceSource source = new BufferedImageLuminanceSource(image); 
      BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); 

      try { 
       result = new QRCodeReader().decode(bitmap); 
      } catch (NotFoundException e) { 
       //exception handling omitted 
      } catch (ChecksumException ex) { 
       //exception handling omitted 
      } catch (FormatException ex) { 
       //exception handling omitted 
      } 
     } 

有没有人遇到过这个?什么可能是解决方案?

顺便说一句我正在与http://goqr.me/

+0

例如,该代码失败:http://api.qrserver.com/v1/create-qr-code/?data=12345&size=250x250 – Peter

+0

您是否完成了它? – Salmaan

这个问题实际上有点误导。数字序列失败的简单qr码的原因是它们的模式较大,因为代码包含的信息较少。 URL QR码具有更多信息,因此具有更高的分辨率和更小的“模式”。问题的根源在于,我正在测试的摄像头对焦点问题(或色差,我不知道)非常敏感,所以低分辨率的QR码必须远离摄像头才能被读取以便读取正确的,比URL的QR码...这个问题是唯一与我的发展个人电脑的华硕摄像头,我尝试过的所有其他摄像头基本与我所有的测试QR码一起工作。

ChecksumException生成所述代码通常意味着它开始正确解码,但是QR码的编码是无效的。这可能表明QR码的创建方式存在问题,特别是如果它一直发生。

但是您链接到这里的QR码看起来不错,因为它解码罚款:

http://zxing.org/w/decode?u=http%3A%2F%2Fapi.qrserver.com%2Fv1%2Fcreate-qr-code%2F%3Fdata%3D12345%26size%3D250x250 http://zxing.org/w/decode?u=http%3A%2F%2Fgoqrme.remotefile.net%2Fimg%2Fact%2Fqrcode_generator%2Fqr_default.png

它还与条码扫描仪扫描瞬间。两者都来自zxing。

我不知道你是否翻转图像 - 或者不是翻动网络摄像机通常给你的翻转图像。