【问题标题】:Get a qrcode scanned image in onActivityResult using zxing in android在android中使用zxing在onActivityResult中获取二维码扫描图像
【发布时间】:2016-03-31 19:03:49
【问题描述】:

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

【问题讨论】:

    标签: android zxing


    【解决方案1】:

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

    【讨论】:

    • 嗨,肖恩,首先感谢您的回复。我正在研究 zxing 本身。我下载了 zxing 并添加为我的应用程序的库并调用 CaptureActivity 意图。有没有其他方法可以满足要求我之前发布过。谢谢
    • 如果您要复制我们的代码,请参阅code.google.com/p/zxing/wiki/LicenseQuestions。只是克隆它是不行的。但是,如果您在此处合法地重用部分代码,请查看 CaptureActivity 中将缩略图图像设置到视图中的点。这就是你想要的小灰度图像。
    • 完全正确,但问题是我无法将位图对象访问到我的应用程序中。为什么因为它是库项目,如果我对库项目进行任何修改对应用程序没有影响。例如,我创建了一个位图对象,我试图从实际的应用程序类访问该位图对象,但我不能。
    • 终于得到了输出。我全局定义了CaptureActivity位图对象,并在应用活动类中访问了位图对象。感谢sean的支持。
    • 您只需在代码中直接使用类作为阅读器。我认为命令行工具会使用 --multi 来公开它。
    【解决方案2】:

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

    谢谢

    【讨论】:

      【解决方案3】:

      可能没有直接的方法可以从 Intent Extras 中获取图像,但有一种解决方法可能会有所帮助,在您获得解码后的字符串后,您可以再次将其转换为图像。这是一个这样做的代码,

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        相关资源
        最近更新 更多