ZXing使用踩坑记录
在Android开发中使用zxing时反色的二维码无法识别
我们一般扫码的时候都是这样的二维码 白色的背景 黑色的码点 使用呢也是没有问题的
偶然的发现在实际运用过程中遇到了这种反转色的二维码(黑色背景 白色码点的二维码)
识别不出来 一开始很纳闷 以为是分辨率的问题 发现同样的手机 微信可以识别 我的程序却不行 找了半天终于找到了问题
如何解决呢?
在识别处理的方法内可以找到GlobalHistogramBinarizer(source)方法或者HybridBinarizer(source)
// 一开始我的写法是这样的
rawResult = mMultiFormatReader.decodeWithState(new BinaryBitmap(new GlobalHistogramBinarizer(source)));
// 只需要将原来的source添加反转即可
rawResult = mMultiFormatReader.decodeWithState(new BinaryBitmap(new GlobalHistogramBinarizer(source.invert())));
//为了能够让我们识别的时候不仅可以识别反色二维码 正常的二维吗也要可以识别我的完整代码如下
try {
if (System.currentTimeMillis() % 1000 < 500) {
rawResult = mMultiFormatReader.decodeWithState(new BinaryBitmap(new GlobalHistogramBinarizer(source.invert())));
}else {
rawResult = mMultiFormatReader.decodeWithState(new BinaryBitmap(new GlobalHistogramBinarizer(source)));
}
} catch (Exception e) {
e.printStackTrace();
}
if (rawResult == null) {
if (System.currentTimeMillis() % 1000 < 500) {
rawResult = mMultiFormatReader.decodeWithState(new BinaryBitmap(new HybridBinarizer(source.invert())));
}else {
rawResult = mMultiFormatReader.decodeWithState(new BinaryBitmap(new HybridBinarizer(source)));
}
if (rawResult != null) {
BGAQRCodeUtil.d("GlobalHistogramBinarizer 没识别到,HybridBinarizer 能识别到");
}
}
} catch (Exception e) {
e.printStackTrace();
}