我尝试使用 Zxing 来解码 Aztec 代码。
我使用来自SO answer的代码。这是其中的一部分:
public static String readQRCode(String filePath, String charset, Map hintMap)
throws FileNotFoundException, IOException, NotFoundException {
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(
new BufferedImageLuminanceSource(
ImageIO.read(new FileInputStream(filePath)))));
Result qrCodeResult = new MultiFormatReader().decode(binaryBitmap,
hintMap);
return qrCodeResult.getText();
}
我尝试通过上面的代码读取这些图像:
但这失败了:
Exception in thread "main" com.google.zxing.NotFoundException
我说 - 好吧,也许它的质量太低了 - 所以我服用了 GIMP 并且:
- 使用 3x3 掩码侵蚀图像。
- 采取自动 gimp 阈值处理(二值化图像)。
那个简单的预处理给了我这个:
也许它没有出色的品质,但它只是黑白 - 更好吗?不,我仍然获得:
Exception in thread "main" com.google.zxing.NotFoundException
奇怪的是:几乎所有条形码阅读器都可以毫无问题地读取两者。例如:NeoReader(Android - 手机)从笔记本电脑的屏幕上读取 - 正确!
我想补充一点,像这样来自 Wiki的绝对清晰的图像,可以被这段代码正确识别。
问题:
上面的代码有什么问题?
如何解码这个阿兹特克代码?我可以进行任何预处理,但需要哪些步骤?
请帮忙。
项目详情:Java 8、com.google.zxing:core:3.2.1、com.google.zxing:javase:3.2.1