看起來(lái)像這樣的類似問(wèn)題。所以我的要求是掃描上面有多個(gè)條形碼/二維碼的圖像。我正在使用 zxing 3.3.3 。我做了什么。private static void scan(byte[] imageBytes) { BufferedImage image = ImageUtils.byteArrayToBufferedImage(imageBytes); LuminanceSource source = new BufferedImageLuminanceSource(image); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); ByQuadrantReader byQuadrantReader = new ByQuadrantReader(reader); GenericMultipleBarcodeReader multipleBarcodeReader = new GenericMultipleBarcodeReader(byQuadrantReader); Result[] results = multipleBarcodeReader.decodeMultiple(bitmap); foreach(Result result : results) { System.out.println(result.getText()); }} 這里 multipleBarcodeReader.decodeMultiple(bitmap) 拋出 NullPointerException。它從這里拋出。 private static void makeAbsolute(ResultPoint[] points, int leftOffset, int topOffset) { if (points != null) { for (int i = 0; i < points.length; i++) { ResultPoint relative = points[i]; points[i] = new ResultPoint(relative.getX() + leftOffset, relative.getY() + topOffset);它在 com.google.zxing.multi.ByQuadrantReader.java 第 110 行。我下載了源代碼并更新了代碼以在進(jìn)入之前檢查是否為空。 ResultPoint relative = points[i]; if (relative != null) { points[i] = new ResultPoint(relative.getX() + leftOffset, relative.getY() + topOffset); }現(xiàn)在它工作正常。這是一個(gè)錯(cuò)誤還是我做錯(cuò)了什么?順便說(shuō)一句,當(dāng)我不使用 ByQuadrantReader 時(shí)它工作正常。它給了我圖像中 6 個(gè)條形碼中的 2 個(gè)讀數(shù)。然而,通過(guò)使用 ByQuadrantReader 和上述修復(fù),它給了我 3 個(gè)讀數(shù)(2 個(gè)條形碼和 1 個(gè) qr)相同的圖像。
1 回答

尚方寶劍之說(shuō)
TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
我不確定結(jié)果點(diǎn)何時(shí)可以為空(我忘記了),但是根據(jù)您的拉取請(qǐng)求,我們?yōu)檫@種情況添加了防御性空檢查。
添加回答
舉報(bào)
0/150
提交
取消