19

我目前正在开发一种扫描仪,可以读取一张图像中的多个二维码。我设法读取图像中的二维码,但结果不一致。假设图像中有 4 个 QR 码,有时我可以读取 2 个,有时可以读取 3 个或仅 1 个。与原始扫描仪(ZXing Scanner)不同,它解码速度很快。而在我的情况下,我必须确保有足够的光线并且图像不会模糊以对其进行解码。

我正在使用QRCodeMultiReader来解码图像。当前使用ZXing库来创建应用程序。

以下是我的代码片段:

public void onPictureTaken(byte[] data, Camera camera) {
   BitmapFactory.Options opt = new BitmapFactory.Options();
    opt.inMutable = true;
   Bitmap bitmap = BitmapFactory
            .decodeByteArray(data, 0, data.length, opt);
   Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
   hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
   LuminanceSource source = new RGBLuminanceSource(bitmap);

   QRCodeMultiReader multiReader = new QRCodeMultiReader();
   Result[] results = multiReader.decodeMultiple(new BinaryBitmap(
   new HybridBinarizer(source)), hints);
}
4

2 回答 2

2

我已经为相机创建了一个应用程序,我将其用作intent默认的相机应用程序,每个 Andriod 操作系统都存在,通常它们比编写一个仅针对您的手机优化的通用相机应用程序更适合该设备......所以对于相机更好用intent

为了从单个图像中提取多个 QR,我尝试了下面的代码。
但是结果不一致有时我得到 1 或 2 或 3 出 4 有时没有....它不是完美的解决方案

if(photo == null) 
        return;
    Bitmap ScaledQr = null;
    ScaledQr = Bitmap.createScaledBitmap(photo, 640,480, false);
    BinaryBitmap Qr = BitMap2BinayBitmap(ScaledQr);
    Result [] kpResultMulti = null;
    Result kpResultSingle = null;
    Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
    hints.put(DecodeHintType.TRY_HARDER, true);
    //hints.put(DecodeHintType.PURE_BARCODE, true);

    try {
        kpResultMulti = kpReaderArr.decodeMultiple(Qr,hints);
    } catch (NotFoundException e) {
        // TODO Auto-generated catch block
        msbox("Exception","NotFoundException");
        e.printStackTrace();
    }

    if(kpResultMulti != null){
        msbox("Total Result" ,kpResultMulti.length +"");// + photo.getWidth() +     "Height=" + photo.getHeight());
        for(Result kp : kpResultMulti)
        {

            msbox("Results",kp.getText());
        }
    }
于 2013-09-21T06:02:21.973 回答
0

您好,请检查 Zxing Barcode Scanner 应用程序,它在设置中具有扫描批量条形码的选项,因此您启用它并检查它您可以一次从一个或多个图像中读取多个 QR 码,还可以检查 Zxing 库的源代码到 Known详细信息。

https://code.google.com/p/zxing/

于 2013-02-27T09:56:41.537 回答