创建QR码并在ImageView中显示它

时间:2016-03-16 07:18:45

标签: android qr-code zxing

我正在创建一个能够扫描QR码并创建QR码的应用程序。扫描部分完成,工作正常。但是当我尝试创建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);

2 个答案:

答案 0 :(得分:2)

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

使用以下代码段。

eval

这应该有用。

答案 1 :(得分:2)

试用完整代码:

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

作品!!