如何使用ZXing Library以编程方式在Android中生成自定义QR码?

时间:2017-02-10 08:47:08

标签: java android zxing

我正在使用Journeyapp's ZXing Android Embedded library为我的Android应用程序,我可以使用以下代码生成一个简单的二维码

 private void init() {

        ImageView qrImageView = (ImageView) findViewById(R.id.qr_image_view);

        qrImageView.setImageBitmap(generateQRBitMap("a"));

    }

    private Bitmap generateQRBitMap(final String content) {

        Map<EncodeHintType, ErrorCorrectionLevel> hints = new HashMap<>();

        hints.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.H);

        QRCodeWriter qrCodeWriter = new QRCodeWriter();

        try {
            BitMatrix bitMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, 512, 512, hints);

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

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

            for (int x = 0; x < width; x++) {
                for (int y = 0; y < height; y++) {

                    bmp.setPixel(x , y, bitMatrix.get(x,y) ? Color.BLACK : Color.WHITE);
                }
            }

            return bmp;
        } catch (WriterException e) {
            e.printStackTrace();
        }

        return null;
    }

但是,我希望能够生成与enter image description here

下面给出的一样酷的东西

现在我知道我可能要为此编写一个自定义编码器,但我真的不知道从哪里开始。 BitMatrix类总是创建一个方形二维码,但有什么我可以用来创建奇怪的形状?

2 个答案:

答案 0 :(得分:1)

我发现该库QRGen使用ZXing并且非常易于使用。无论如何,要根据您的需要进行设计,可以在此QR码的“图像视图”后面添加另一张图像。

用于生成QR码的示例代码

Bitmap myBitmap = QRCode.from("www.example.org").bitmap();
ImageView myImage = (ImageView) findViewById(R.id.imageView);
myImage.setImageBitmap(myBitmap);

答案 1 :(得分:0)

尝试创建两个QR码。一个应该是随机的,称之为A.一个应该包含数据,B。放大A,然后扭曲它(模糊会做)。创建一个白色矢量,该矢量对于图像的形状是透明的,并且边缘是白色的。将此图像叠加到QRCode A上,然后将B叠加在顶部。

希望你能从中找出一些代码,     P

P.S。如果你这样做,那就把它变成一个图书馆吧!