在 onActivityResult 中使用 zxing 在 android 中获取 qrcode 扫描图像



我正在成功扫描二维码并将结果 url 显示在下面的文本视图中。 etxt_qrcode.setText(intent.getStringExtra("SCAN_RESULT"));现在我想将扫描的图像显示在图像视图中。我不知道我到底想做什么。zxing 是否返回与图像相关的任何内容以显示 imageview 或告诉我将结果扫描图像显示到 imageview 的过程。请给我一个必要的帮助,我在过去两天为此苦苦挣扎。谢谢.

没有办法做到这一点。不返回图像。问题是图像可能非常大,无法包裹。但是通过缩减采样和压缩,可能没什么大不了的。如果你想处理它,我会接受一个补丁。http://code.google.com/p/zxing

这可以通过以下方法轻松实现: 在开始意图设置之前的第一个:setBarcodeImageEnabled(true);之后,您将在OnActivityResult中获得图像路径,如下所示:String path=intent.getStringExtra("SCAN_RESULT_IMAGE_PATH");

谢谢

可能没有直接的方法可以从意图附加内容中获取图像,但有一种解决方法可能会有所帮助,在获得解码的字符串后,您可以再次将其转换为图像。 这是执行此操作的代码,

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
            IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
            if (scanResult != null) {
                generateQRCode(scanResult.getContents());
            }
        }
    }
public void generateQRCode(String data){
        com.google.zxing.Writer wr = new MultiFormatWriter();
        try {
            int width = 350;
            int height = 350;
            BitMatrix bm = wr.encode(data, BarcodeFormat.QR_CODE, width, height);
            mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
            for (int i = 0; i < width; i++) {
                for (int j = 0; j < height; j++) {
                    mBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK : Color.WHITE);
                }
            }
        } catch (WriterException e) {
            e.printStackTrace();
        }
        if (mBitmap != null) {
            img.setImageBitmap(mBitmap);
        }
    }

最新更新