1

我正在做一个项目,该项目涉及在我的桌面上将图像文件作为输入,然后检测和解码所有存在的条形码,包括一维和二维。

我一直在使用 zxing,在 GenericMultipleBarcodeReader 的帮助下,我能够从图像中读取多个一维条码。但是,它无法检测到二维条码。但是,如果我裁剪 2D 条形码并单独输入这个裁剪的部分,它会毫无问题地检测和解码它。

所以,如果我的图像有 2 个一维条码和一个二维条码,我的输出只包含解码的 2 个一维条码。

我也尝试过使用 ByQuadrantReader,但这也不起作用。

我的代码:

LuminanceSource source = new BufferedImageLuminanceSource(image); 
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); 
Result[] result; 
HashMap<DecodeHintType,Object> hints = new HashMap<>(); 
hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE); 
    try 
    { 
result = new GenericMultipleBarcodeReader(new MultiFormatReader()).decodeMultiple(bitmap, hints); 
     } 
    catch (ReaderException re) 
    {
    return re.toString(); 
    } 
    List<String> strings = new ArrayList<String>();
     for (Result r: result)
    {
    strings.add(r.getText()); 
    } 
    return String.valueOf(Arrays.toString(strings.toArray()));

谁能告诉我一种方法来做到这一点?

4

1 回答 1

0

二维码可以在图像的任何位置找到,但 Data Matrix 必须位于图像的中心才能找到。这就是为什么它在您裁剪图像时起作用的原因。

于 2013-08-05T07:22:37.823 回答