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

时间:2013-11-05 09:57:34

标签: android zxing

我正在成功扫描qrcode并将结果url显示在textview中。 etxt_qrcode.setText(intent.getStringExtra("SCAN_RESULT")); 现在我想将扫描图像显示到imageview中。我不知道我想要做什么。是zxing返回任何与图像相关的内容来显示imageview或者告诉我将结果扫描图像显示到imageview中的过程。请给我在过去的两天里,我正在努力帮助我。谢谢。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

这可以通过以下方式轻松实现:  首先在开始意图集之前: 的 setBarcodeImageEnabled(真); 之后您将获得OnActivityResult中的图像路径,如下所示: String path = intent.getStringExtra(“SCAN_RESULT_IMAGE_PATH”);

由于

答案 2 :(得分:0)

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

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);
        }
    }