欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Android二维码生成_QRCodeWriter二维码识别与解析开发

程序员文章站 2022-03-01 13:23:50
...

本Demo是一个利用QRCodeWriter编写的二维码的生成和解析的小例子、并将图片保存到本地、代码也很简单、都是封装的方法、很好理解、基本上下载源代码就可以很清楚的理解代码、并且能快速的集成到自己的项目中、下载看一下Demo例子

Android二维码生成_QRCodeWriter二维码识别与解析开发


生成QR二维码代码

private void createImage() {
    try {
        // 需要引入core包
        QRCodeWriter writer = new QRCodeWriter();

        String text = qr_text.getText().toString();

        Log.i(TAG, "生成的文本:"   text);
        if (text == null || "".equals(text) || text.length() < 1) {
            return;
        }
        // 把输入的文本转为二维码
        BitMatrix martix = writer.encode(text, BarcodeFormat.QR_CODE,
                QR_WIDTH, QR_HEIGHT);
        System.out.println("w:"   martix.getWidth()   "h:"
                  martix.getHeight());
        Hashtable<EncodeHintType, String> hints = new 
            Hashtable<EncodeHintType, String>();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        BitMatrix bitMatrix = new QRCodeWriter().encode(text,
                BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);
        int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
        for (int y = 0; y < QR_HEIGHT; y  ) {
            for (int x = 0; x < QR_WIDTH; x  ) {
                if (bitMatrix.get(x, y)) {
                    pixels[y * QR_WIDTH   x] = 0xff000000;
                } else {
                    pixels[y * QR_WIDTH   x] = 0xffffffff;
                }

            }
        }
         bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT,
                Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
        System.out.println(Environment.getExternalStorageDirectory());

        qr_image.setImageBitmap(bitmap);
        try {
            saveMyBitmap(bitmap, "code");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } catch (WriterException e) {
        e.printStackTrace();
    }
}


解析QR图片代码

private void scanningImage() {
    Hashtable<DecodeHintType, String> hints = new 
        Hashtable<DecodeHintType, String>();
    hints.put(DecodeHintType.CHARACTER_SET, "utf-8");

    // 获得待解析的图片
    Bitmap bitmap = ((BitmapDrawable) qr_image.getDrawable()).getBitmap();
    RGBLuminanceSource source = new RGBLuminanceSource(bitmap);
    BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source));
    QRCodeReader reader = new QRCodeReader();
    Result result;
    try {
        result = reader.decode(bitmap1);
        result=reader.decode(bitmap1, hints );
        // 得到解析后的文字
        qr_result.setText(result.getText());
    } catch (NotFoundException e) {
        e.printStackTrace();
    } catch (ChecksumException e) {
        e.printStackTrace();
    } catch (FormatException e) {
        e.printStackTrace();
    }
}


到此为止、以前就是生成二维码和解析二维码的代码了、详细的代码大家可以下载源代码研究

另外以前也分享过一个通过联图生成二维码的例子:http://dwtedx.com/itshare_261.html


若资源对你有帮助、扫描下方的二维码、关注DD博客微信公众号(ddblogs)吧

最后给贴上Demo的源代码、希望对大家有用、有兴趣的哥们可以下载看看

源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1gd2I3RH 密码: c932