Google Zxing 二维码生成与解析

本文涉及的产品
云解析DNS,个人版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

生成二维码的开源项目可谓是琳琅满目,SwetakeQRCode、BarCode4j、Zxing......

    前端有JQuery-qrcode,同样能实现生成二维码。

    选择Zxing的原因可能是对 Google 公司的信赖和个人崇拜吧。

    其实使用起来相当的简单,我这里使用的是最新3.2 Zxing.jar ,省的你找jar的时间,下面是下载地址。

    百度云盘地址:http://pan.baidu.com/s/1c0VXMPa   提取密码: bssv

    生成二维码:

复制代码
    public static String createQrcode(String _text){
        String qrcodeFilePath = "";
        try {
            int qrcodeWidth = 300;
            int qrcodeHeight = 300;
            String qrcodeFormat = "png";
            HashMap<EncodeHintType, String> hints = new HashMap<EncodeHintType, String>();
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
            BitMatrix bitMatrix = new MultiFormatWriter().encode(_text, BarcodeFormat.QR_CODE, qrcodeWidth, qrcodeHeight, hints);

            BufferedImage image = new BufferedImage(qrcodeWidth, qrcodeHeight, BufferedImage.TYPE_INT_RGB);
            JVMRandom random = new JVMRandom();
            File QrcodeFile = new File("F:\\qrcode\\" + random.nextInt() + "." + qrcodeFormat);
            ImageIO.write(image, qrcodeFormat, QrcodeFile);
            MatrixToImageWriter.writeToFile(bitMatrix, qrcodeFormat, QrcodeFile);
            qrcodeFilePath = QrcodeFile.getAbsolutePath();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return qrcodeFilePath;
    }
复制代码

   a.上述代码中的 hints,为生成二维码时的一些参数设置,实现者将它构建Map类型的参数。

   b.上述生成实现当中,每生成一个二维码都会存放在目录下面,名称取整数随机数。

   c. MultiFormatWriter 对象为生成二维码的核心类,后面的 MatrixToImageWriter 只是将二维码矩阵输出到图片上面。

   解析二维码:

复制代码
   public static String decodeQr(String filePath) {
        String retStr = "";
        if ("".equalsIgnoreCase(filePath) && filePath.length() == 0) {
            return "图片路径为空!";
        }
        try {
            BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filePath));
            LuminanceSource source = new BufferedImageLuminanceSource(bufferedImage);
            Binarizer binarizer = new HybridBinarizer(source);
            BinaryBitmap bitmap = new BinaryBitmap(binarizer);
            HashMap<DecodeHintType, Object> hintTypeObjectHashMap = new HashMap<>();
            hintTypeObjectHashMap.put(DecodeHintType.CHARACTER_SET, "UTF-8");
            Result result = new MultiFormatReader().decode(bitmap, hintTypeObjectHashMap);
            retStr = result.getText();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return retStr;
    }
复制代码

   a.读取二维码图片,并送给 Zxing LuminanceSource 和 Binarizer 两兄弟的处理。

   b.处理完的位图和相应的解析参数,交由 MultiFormatReader 处理,并返回解析后的结果。

   c.如果对上述 两兄弟的处理 和 MultiFormatReader  的解析有兴趣,可以读读源码。

 

作者:Orson 
出处:http://www.cnblogs.com/java-class/ 
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】 
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】 
如果,您对我的博客内容感兴趣,请继续关注我的后续博客,我是【Orson】 

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段 声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

转载:http://www.cnblogs.com/java-class/p/5251690.html

目录
相关文章
|
数据采集 Web App开发 存储
Java爬虫第四篇:使用selenium、Jsoup 抓取图片
Java爬虫第四篇:使用selenium、Jsoup 抓取图片
367 0
下载zxing的网址
下载zxing的网址
69 0
|
Android开发
安卓最简单用zxing生成二维码
安卓最简单用zxing生成二维码
250 0
Java:com.google.zxing:javase生成二维码
Java:com.google.zxing:javase生成二维码
265 0
Java:com.google.zxing:javase生成二维码
28用zxing对二维码的解析
28用zxing对二维码的解析
106 0
27.用zxing生成二维码
27.用zxing生成二维码
193 0
|
Java
java 基于QRCode、zxing 的二维码生成与解析
本文属于《JavaEE实战——从本地到云端》 什么是二维码?请参考:二维码详解 java 生成二维码 QRCode、zxing 两种方式 1、下载所需要的 jar 包 所需要的 jar 包下载地址:java生成二维码所需要的QRCode、zxing Jar包 如果你想自行分别下载: zxing github地址:https://github.
2147 0