为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Zxing ByQuadrantReader 扫描图像中的多个条码:Nullpointer

使用 Zxing ByQuadrantReader 扫描图像中的多个条码:Nullpointer

qq_笑_17 2021-12-01 16:38:17
看起来像这样的类似问题。所以我的要求是扫描上面有多个条形码/二维码的图像。我正在使用 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 行。我下载了源代码并更新了代码以在进入之前检查是否为空。    ResultPoint relative = points[i];    if (relative != null) {      points[i] = new ResultPoint(relative.getX() + leftOffset, relative.getY() + topOffset);    }现在它工作正常。这是一个错误还是我做错了什么?顺便说一句,当我不使用 ByQuadrantReader 时它工作正常。它给了我图像中 6 个条形码中的 2 个读数。然而,通过使用 ByQuadrantReader 和上述修复,它给了我 3 个读数(2 个条形码和 1 个 qr)相同的图像。
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

我不确定结果点何时可以为空(我忘记了),但是根据您的拉取请求,我们为这种情况添加了防御性空检查。


查看完整回答
反对 回复 2021-12-01
  • 1 回答
  • 0 关注
  • 298 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信