当前位置: 首页 > 面试题库 >

从图像文件扫描QR码

祁博雅
2023-03-14
问题内容

试图使用像ZXing,ZBar和它们的fork之类的几个库,但是找不到从相机而不是从文件扫描条形码的方法。

有人可以指出我正确的方向吗?最好是我正在研究ZXing:如何从文件(而不是相机)扫描图像。

请。


问题答案:

最后,我找到了解决方案。代码是(源自此处):

import com.google.zxing.*;

public static String scanQRImage(Bitmap bMap) {
    String contents = null;

    int[] intArray = new int[bMap.getWidth()*bMap.getHeight()];
    //copy pixel data from the Bitmap into the 'intArray' array
    bMap.getPixels(intArray, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight());

    LuminanceSource source = new RGBLuminanceSource(bMap.getWidth(), bMap.getHeight(), intArray);
    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

    Reader reader = new MultiFormatReader();
    try {
        Result result = reader.decode(bitmap);
        contents = result.getText();
    }
    catch (Exception e) {
        Log.e("QrTest", "Error decoding barcode", e);
    }
    return contents;
}

Gradle引用为:

dependencies {
    compile 'com.google.zxing:core:3.2.1'
}

用法:

InputStream is = new BufferedInputStream(new FileInputStream(file));
Bitmap bitmap = BitmapFactory.decodeStream(is);
String decoded=scanQRImage(bitmap);
Log.i("QrTest", "Decoded string="+decoded);


 类似资料:
  • 我用编译的'me.dm7.barcodescanner: zstar: 1.8.4'将Zstar qr scanner添加到我的android项目中。 我在片段内部显示二维码扫描仪。我可以毫无问题地扫描和阅读。我遇到的问题是试图在相机扫描时打开闪光灯(手电筒)。 这段代码扫描得很好 这个密码完美地开启了火炬 如果我尝试打开灯并返回mScannerview,扫描仪可以工作,但灯熄灭了。我似乎无法成功

  • 难以存储条形码/二维码 2.)QR/Barcode直接从指定的URI打开电子表格 更改文件路径可使QR/条形码无效 null

  • 我必须在项目中使用QR扫描仪: 目前我正在使用QRCodeReaderView: 但是这个库的问题是: 我得到 java.lang.RuntimeException: 無法連接到相機服務 Exception 在Android 6.0中,如本问题所述:Android 6.0 RuntimeException:无法连接到相机服务 正如在那里的答案中所建议的那样,我试图将目标SDK版本降级到22,但效果

  • 我想为这个代码寻求一些帮助。我没有问题读取一个文件本身和使用它作为扫描仪。我可以很容易地数出文件的双倍数。作为一个例子,这些是txt文件的前五个double。(这些数字应该是垂直列出的,但我几乎不怀疑这会有所不同) 这段代码总体上只是打印0.0的“num”数量,而不是将实际数字本身相加。请帮忙,谢谢。

  • 我正在为我的客户开发一个android应用程序,他要求在应用程序中内置QR扫描仪。所以,我不希望用户不得不从GooglePlay下载另一个应用程序。换句话说,我不想从我的应用程序调用另一个QR扫描仪应用程序。我需要QR扫描仪内置在我的应用程序中。 我在github和这里的stackoverflow上读到了关于ZXing的信息。据我所知,将其QR扫描仪集成到应用程序中不是一个好主意。最好通过Inte

  • 问题内容: 我正在玩Scanner类,以进行学习,并且我使用它来读取非常大的文件(大约60.000行,大约不使用Reader类),并且在大约400行后停止读取。我是否必须在Scanner的构造函数中使用Bufferedreader还是问题?我想知道为什么会这样。谢谢。我的代码是输出所有行的常用代码。 问题答案: 此问题通常在64位计算机上或文件大小大于1-2 GB的文件中更常见,并且与堆空间无关。