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

时间:2013-12-22 17:39:08

标签: java zxing qr-code

如果我使用URL扫描QR码,以下代码可以完美而快速地运行。但是,如果我使用简单的字符串或数字序列解码QR代码(这是我想要做的),它有时会随机工作,但99%的时间它会因ChecksumException而失败。

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
            }
        }

以前有人经历过这个吗?可能是什么解决方案?

BTW我正在使用http://goqr.me/

生成代码

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

ChecksumException通常意味着它开始正确解码,但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。

我想知道您是否正在翻转图像 - 或者,不要忽略网络摄像头通常为您提供的翻转图像。