最近我使用zxing解码位图有困难。我在互联网上搜索解决方案,我尝试了其中的一些。这是我的尝试:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.qrcode);
String result = DecodeUtils.decodeWithZxing(bitmap);
R.drawable.qrcode
是.jpg
个文件。
BarCodeUtil.java
是:
public static String decodeWithZxing(Bitmap bitmap) {
MultiFormatReader multiFormatReader = new MultiFormatReader();
Map<DecodeHintType, Object> hints = new Hashtable<>();
hints.put(DecodeHintType.PURE_BARCODE, Boolean.TRUE);
multiFormatReader.setHints(hints);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
Result rawResult = null;
RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels);
if (source != null) {
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));
try {
rawResult = multiFormatReader.decodeWithState(binaryBitmap);
} catch (ReaderException re) {
re.printStackTrace();
} finally {
multiFormatReader.reset();
}
}
return rawResult != null ? rawResult.getText() : null;
}
但是当我运行上面的代码时,我得到了一个例外:
com.google.zxing.NotFoundException
所以我搜索异常,有人认为位图大小会导致此异常。然后我调整位图大小:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 4;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.zhifubao,options);
String result = DecodeUtils.decodeWithZxing(bitmap)
但它仍然不适合我。
使用qrcode解码位图有一个很好的解决方案吗?
答案 0 :(得分:0)
你的开发工具是eclipse还是android studio?
如果是android stuido:
在您的项目中&gt; app&gt;建立。 gradel on add:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
然后同步gradle。
答案 1 :(得分:0)