我正在开展一个项目,该项目涉及在我的桌面上将图像文件作为输入,然后检测和解码所有存在的条形码,包括1D和2D。
我一直在使用zxing,在GenericMultipleBarcodeReader的帮助下,我能够从图像中读取多个1D条形码。但是,它无法检测到二维条形码。 但是如果我裁剪2D条形码并分别输入这个裁剪部分,它会毫无问题地检测和解码它。
因此,如果我的图像有2个1D条形码和2个条形码,我的输出只包含解码的2个1D条形码。
我也尝试过使用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()));
有人能告诉我一种方法吗?
答案 0 :(得分:0)
可以在图像中的任何位置找到QR码,但Data Matrix必须位于要找到的图像的中心。这就是裁剪图像时它的工作原理。