创建二维码并显示在 ImageView 中

Create a QR Code and show it in ImageView

我正在创建一个能够扫描二维码和创建二维码的应用程序。扫描部分已完成并且工作正常。但是当我尝试创建 QR 码并在 ImageView 中显示它时,创建的 QR 码不包含正确的文本。我正在使用 ZXING 库。

Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<>();
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);

QRCodeWriter qrCodeEncoder = new QRCodeWriter();
BitMatrix bitMatrix = qrCodeEncoder.encode(myText, BarcodeFormat.QR_CODE,
        200, 200, hintMap);

height = bitMatrix.getHeight();
width = bitMatrix.getWidth();

final Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);

for (x = 0; x < width; x++){
    bmp.setPixel(x, y, bitMatrix.get(x,y) ? Color.BLACK : Color.WHITE);
}

ImageView myImage = (ImageView) findViewById(R.id.qr_code);
myImage.setImageBitmap(bmp);

错误在 for 循环中。你错过了一个内部 for 循环。但是你怎么得到一张空白图像!

使用下面的代码片段。

for (x = 0; x < width; x++){
    for (y = 0; y < height; y++){
        bmp.setPixel(x, y, bitMatrix.get(x,y) ? Color.BLACK : Color.WHITE);
    }
}

这应该有效。

试用完整代码:

    com.google.zxing.Writer writer = new QRCodeWriter();
    // String finaldata = Uri.encode(data, "utf-8");
    int width = 250;
    int height = 250;
    BitMatrix bm = writer
            .encode(data, BarcodeFormat.QR_CODE, width, height);
    Bitmap ImageBitmap = Bitmap.createBitmap(width, height,
            Config.ARGB_8888);

    for (int i = 0; i < width; i++) {// width
        for (int j = 0; j < height; j++) {// height
            ImageBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK
                    : Color.WHITE);
        }
    }

有效!!