zxing中的Reader的重置() - android

时间:2015-08-11 05:39:10

标签: android zxing

我在GitHub看了几个小时的zxing存储库。 BenchmarkAsyncTask的{​​{1}}遍历文件路径并不断解码某些图像文件而不会调用androidtest的{​​{1}}。

但是在Reader.reset的评论中,它表示

  

重置解码后实现的任何内部状态,以准备它   重用。

由于我们重复使用reset(),我们不应该拨打reader吗?

1 个答案:

答案 0 :(得分:0)

如果您逐步调试ZXing源代码,您将看到reset()对除 RSS14Reader RSSExpandedReader 之外的所有读者都不执行任何操作。

什么都不做:

@Override
  public void reset() {
    // do nothing
  }

RSS14Reader.reset():

@Override
  public void reset() {
    possibleLeftPairs.clear();
    possibleRightPairs.clear();
  }

RSSExpandedReader.reset()

@Override
  public void reset() {
    this.pairs.clear();
    this.rows.clear();
  }

如果您只是想阅读二维码,那就没有区别了。例如:

String[] fileNames = new String[]{"qrcode-1.jpg", "qrcode-2.jpg"};
File file = null;
BufferedImage image = null;
RGBLuminanceSource source = null;
BinaryBitmap bitmap = null;
Result result = null;
MultiFormatReader reader = new MultiFormatReader();

try {
    for (String fileName : fileNames) {
        file = new File(fileName);
        image = ImageIO.read(file);
        System.out.println(image.getWidth() + ", " + image.getHeight());
        int[] pixels = image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth());
        source = new RGBLuminanceSource(image.getWidth(), image.getHeight(), pixels);
        bitmap = new BinaryBitmap(new HybridBinarizer(source));
        result = reader.decode(bitmap);
        System.out.println(result.getText());
        //reader.reset();
    }
}
catch (Exception exception) {
    System.out.println(exception);
}