目前,我正在使用它来生成并在我的android应用中显示我的QR代码:

    try {
        BitMatrix bm = qrwriter.encode(b.toString(), BarcodeFormat.QR_CODE,
                QRCODE_WIDTH, QRCODE_HEIGHT);
        final Bitmap mBitmap = Bitmap.createBitmap(bm.getWidth(),
                bm.getHeight(), Bitmap.Config.ARGB_4444);
        for (int i = 0; i < QRCODE_HEIGHT; i++) {
            for (int j = 0; j < QRCODE_WIDTH; j++) {
                mBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK
                        : Color.WHITE);
            }
        }
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                imgqrcode.setImageBitmap(mBitmap);
            }
        });
    } catch (WriterException e) {

    }


它工作正常,但是使用嵌套循环的速度非常慢。我必须将QRCODE_WIDTHQRCODE_HEIGHT设置为非常小的值(这会在高dpi的设备上生成非常模糊的图像),只是为了使其在合理的时间内生成。理想情况下,我想获取设备的分辨率并以此为基础确定QR码的大小,以便始终看起来清晰。

我对此采取了错误的方法吗?有没有更快的方法?

最佳答案

您确定从分析中确定这是缓慢的部分吗?您可以尝试创建一个像素数组,然后一次设置所有像素,但这会占用更多内存。

您应该减小QR码的大小,并让UI放大它。不要全尺寸渲染。如果看起来模糊,则需要禁用抗锯齿。

关于java - 显示QR码的更快/更好的主意?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17639984/

10-09 09:39