【JAVA之二维码】

二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。

二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。

优点

1.高密度编码,信息容量大。

2.编码范围广。

3.容错能力强,具有纠错功能。

4.译码可靠性高。

5.可引入加密措施。

6.成本低,易制作,持久耐用。

特点

1.高密度编码,信息容量大:可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。

2.编码范围广:该条码可以把图片、声音、文字、签字、指纹等可以数字化的信息进行编码,用条码表示出来;可以表示多种语言文字;可表示图像数据。

3.容错能力强,具有纠错功能:这使得二维条码因穿孔、污损等引起局部损坏时,照样可以正确得到识读,损毁面积达50%仍可恢复信息。

4.译码可靠性高:它比普通条码译码错误率百万分之二要低得多,误码率不超过千万分之一。

5.可引入加密措施:保密性、防伪性好。

6.成本低,易制作,持久耐用。

7.条码符号形状、尺寸大小比例可变。

8.二维条码可以使用激光或CCD阅读器识读。



 

使用JAVA生成二维码步骤

1)引入Maven坐标

<dependency>

  <groupId>com.google.zxing</groupId>

  <artifactId>core</artifactId>

  <version>3.0.0</version>

  </dependency>

  <dependency>

  <groupId>com.google.zxing</groupId>

  <artifactId>javase</artifactId>

  <version>3.0.0</version>  

  </dependency>

2)编写核心工具类以及Servlet

import java.io.IOException;

import java.util.Hashtable;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import com.google.zxing.BarcodeFormat;

import com.google.zxing.EncodeHintType;

import com.google.zxing.MultiFormatWriter;

import com.google.zxing.WriterException;

import com.google.zxing.common.BitMatrix;

  

public class MatrixToImageServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {  

    static final long serialVersionUID = 1L;  

  

    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  

        response.setHeader("Pragma", "No-cache");  

        response.setHeader("Cache-Control", "no-cache");  

        response.setDateHeader("Expires", 0);  

        response.setContentType("image/jpeg");  

          

        //存入会话session  

       // HttpSession session = request.getSession(true);  

     

        String text = "二维码内容:http://gaojingsong.iteye.com/"; // 二维码内容  

        int width = 300; // 二维码图片宽度  

        int height = 300; // 二维码图片高度  

        String format = "gif";// 二维码的图片格式  

          

        Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();  

        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");   // 内容所使用字符集编码  

          

        BitMatrix bitMatrix = null;

try {

bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, hints);

} catch (WriterException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}  

        // 生成二维码  

        MatrixToImageWriterUtils.writeToStream(bitMatrix, format, response.getOutputStream());  

    }  

}  

3)配置Servlet

<servlet>  

   <servlet-name>MyMatrixToImage</servlet-name>  

   <servlet-class>MatrixToImageServlet</servlet-class>  

    </servlet>  

    <servlet-mapping>  

   <servlet-name>MyMatrixToImage</servlet-name>  

   <url-pattern>/qrCode</url-pattern>  

    </servlet-mapping> 

4)验证



 

 

原创不易,欢迎打赏,请认准正确地址,谨防假冒



 

 


猜你喜欢

转载自gaojingsong.iteye.com/blog/2394401