2016-07-02 4 views
0

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?

+0

Wie haben Sie die Bibliothek zu Ihrem Projekt hinzugefügt? – Eenvincible

+0

Ich füge ** zxing-4.7.3.jar ** als Bibliothek hinzu @Eenvincible – CoXier

+0

Haben Sie auch mit der rechten Maustaste darauf geklickt und Als Bibliothek hinzufügen ausgewählt? – Eenvincible

Antwort

0

Ihre ist Entwicklungs-Tools Eclipse oder Android Studio

wenn android stuido ist:

in Ihrem Projekt> app> Build. Gradel auf add:

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 

}

dann gradle synchronisieren.

+0

Wenn die Bibliothek nicht zum Projekt hinzugefügt wird, erhalte ich einen Fehler – CoXier