我正在尝试使用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解决了这个问题?否则上述行中需要更改代码?
这是给我带来问题的图片。
答案 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
您的代码出了问题,任何人都无法说出,因为没有进一步的细节。但这应该没问题。