2017-02-10 34 views
3

我使用Journeyapp's ZXing Android Embedded library我的Android应用程序,我可以使用下面的代码段如何使用ZXing Library以编程方式生成自定义QR码?

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类总是创建一个方形的QR码,但是有什么我可以用来创建奇怪的形状?

+0

关注https://www.simplifiedcoding.net/android-qr-code-scanner-tutorial/ –

+1

不帮忙!!这显示了ZXing的QR库的实现,我正在寻找一个教程来教导定制 – Auro

+0

https://skrymerdev.wordpress.com/2012/09/22/qr-code-generation-with-zxing/ – jaspreet

回答

0

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

希望你的工作,从这样的代码, P

附:如果你这样做,把它变成一个图书馆!