Kürzlich habe ich eine Schwierigkeit, zxing zu verwenden, um Bitmap zu decodieren. Ich suche Lösungen auf Internet, und ich habe einige them.Here versucht, ist mein Versuch:Verwenden Sie ZXing-Bibliotheken, um Bitmap mit einem QRCode auf Android zu decodieren
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.qrcode);
String result = DecodeUtils.decodeWithZxing(bitmap);
R.drawable.qrcode
ist eine .jpg
Datei.
Und BarCodeUtil.java
ist:
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;
}
Aber wenn ich den obigen Code ausführen, bekam ich eine Ausnahme:
com.google.zxing.NotFoundException
So suche ich die Ausnahme, jemand denkt, Bitmap-Größe verursacht diese Ausnahme. Dann skaliere ich die Bitmap-Größe:
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)
Aber es funktioniert immer noch nicht für mich.
Gibt es eine gute Lösung, Bitmap mit einem QRCode zu dekodieren?
Wie haben Sie die Bibliothek zu Ihrem Projekt hinzugefügt? – Eenvincible
Ich füge ** zxing-4.7.3.jar ** als Bibliothek hinzu @Eenvincible – CoXier
Haben Sie auch mit der rechten Maustaste darauf geklickt und Als Bibliothek hinzufügen ausgewählt? – Eenvincible