更快的方式/更好的想法显示QR码?

时间:2013-07-14 13:51:02

标签: java android bitmap zxing qr-code

目前我正在使用它在我的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码的大小确定它,因此它看起来总是很清晰。

我采取了错误的做法吗?有更快的方法吗?

1 个答案:

答案 0 :(得分:1)

你确定这是慢节目吗?你可以尝试创建一个像素数组,然后一次设置它们,但这需要更多的内存。

你应该让QR码变小,然后让UI缩小。不要渲染全尺寸。如果它看起来模糊,那么您需要禁用抗锯齿。