2014-06-16 31 views
-2

我正在嘗試使用google.zxing讀取QR碼。以下是我用來閱讀的代碼。QR讀取API將拋出一些圖像的例外

Result result = null; 
BinaryBitmap binaryBitmap; 
FileInputStream pngInput = null; 
try { 
    pngInput = new FileInputStream("D:\\TestQR.png"); 
    binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(ImageIO.read(pngInput)))); 
    result = new MultiFormatReader().decode(binaryBitmap,null); 
}catch (Exception e) { 
    throw e; 
}finally { 
    if(pngInput != null) { 
     pngInput.close(); 
    } 
} 
System.out.println(result.getText()); 

現在上面的代碼對一些圖像工作正常,併爲其中的一些引發NullPointerException。我使用該圖片進行了檢查,但該圖片使用移動應用程序完全正確且可讀。 是否有任何其他第三方API解決了這個問題?否則在上面的行中需要更改任何代碼?

下面是圖像,這對我造成問題。 enter image description here

+1

嗨。你能提供堆棧跟蹤嗎?此外,圖像的副本將會很有用。 – stephendnicholas

+0

我已經編輯圖像問題。 – Navnath

回答

0

「圖像完全沒有問題」的意思是nada,沒有,zip,zilch,零。
沒有關於NPE在哪裏以及什麼位置的更多信息,沒有人能夠告訴你任何關於代碼或圖像的問題。
但要意識到,僅僅因爲某些東西是有效的QR碼並不意味着您的硬盤上有一個有效的圖像文件代表它。
或者只是因爲一個png可以被一個應用程序讀取,它是有效的,並且如果您嘗試在另一個應用程序中讀取它,則不會拋出扳手。
圖像文件已損壞,或根據解碼器不包含有效的QR碼(可能暗示某些損壞)。
後者很可能是因爲某些東西可能是由QR碼掃描儀讀取的錯誤QR碼,因爲這些錯誤檢測系統使用了錯誤檢測系統,這些錯誤檢測系統在從文件中讀取時可能會被忽略。