QR阅读API为某些图像抛出异常

时间:2014-06-16 11:01:22

标签: java qr-code

我正在尝试使用google.zxing阅读QR码。以下是我以前读过的代码。

Result result = null;
BinaryBitmap binaryBitmap;
FileInputStream pngInput = null;
try {
    pngInput = new FileInputStream("D:\\TestQR.png");
    binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(ImageIO.read(pngInput))));
    result = new MultiFormatReader().decode(binaryBitmap,null);
}catch (Exception e) {
    throw e;
}finally {
    if(pngInput != null) {
        pngInput.close();
    }
}
System.out.println(result.getText());

现在上面的代码对于某些图像工作正常,并为其中一些图像抛出NullPointerException。我检查了该图像,但该图像完全精细,可移动应用程序可读。 是否有其他第三方API解决了这个问题?否则上述行中需要更改代码?

这是给我带来问题的图片。 enter image description here

2 个答案:

答案 0 :(得分:0)

“图像完全正常”意味着nada,没有,zip,zilch,零 如果没有关于确切NPE的位置和内容的更多信息,任何人都无法告诉您有关代码或图像有什么问题的信息。
但是要意识到这仅仅是因为某些东西是有效的QR代码并不意味着你的硬盘上有一个有效的图像文件代表它。
或者仅仅因为一个应用程序可以读取一个png它是有效的,如果你试图在另一个应用程序中读取它,它就不会抛出扳手。
根据解码器,图像文件已损坏,或者它不包含有效的QR码(这可能暗示某些损坏)。
后者很可能,因为某些东西可能是一个损坏的QR码,但QR码扫描器可以读取,因为那些人​​使用的错误检测系统,在从文件读取时可能被绕过的错误检测系统。

答案 1 :(得分:0)

您发布的QR码使用库解码得很好:

http://zxing.org/w/decode?u=http%3A%2F%2Fi.stack.imgur.com%2FhCj3w.jpg

您的代码出了问题,任何人都无法说出,因为没有进一步的细节。但这应该没问题。