一、二维码的简介 1,二维码或者二维条码是用某种特定的几何图形按一定的规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的图形。 2,二维码上有很多的点和空白,其中的点代表二进制的1,而空白代码二进制的0。 3,二维码依据码制的编码原理,通常分为三种:线性堆叠式二维码、矩阵式二维码、邮政码。 a,线性堆叠式二维码:建立在一维条码基础上,按需要堆积成两行或多行。与一维码很类似。 b,矩阵式二维码:(最常用)在一个矩阵空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或 其它形状)的出现表示二进制“1”,点的不出现表示二进制的“0”。此文章主要是讲解如何生成QR CODE二维码。 c,邮政码:通过不同长度的条进行编码,主要用于邮件编码。 4,二维码优点: (1)高密度编码,信息容量大; (2)编码范围广; (3)容错能力强(假如二维码缺失一角,一般不影响整个二维码读取); (4)编码可靠性高; (5)可引入加密措施; (6)成本低,易制作,持久耐用。 5,二维码缺点: (1)二维码技术成为手机病毒、钓鱼网站传播的新渠道; (2)信息泄露。 6,目前流行的三大国际标准: (1)PDF417:不支持中文; (2)DM:专利未公开,需支付专利费用; (3)QR code:专利公开,支持中文;其中QR Code(Quick Response Code)与其他二维码相比,具有识读速度快、数据密度大、占用 空间少的优势。
7,这里讲解生成二维码的两种方法: (1)第三方jar包,zxing和qrcode.jar (2)javascript,如jquery.qrcode.js二、- jar包zxing的地址: http://github.com/zxing/
- 得到该jar包后打开eclipse,创建一个java项目,导入jar包zxing。
- 创建一个生成二维码的类CreateQRCode
package cn.zclong.zxing;
import java.io.File;
import java.nio.file.Path;
import java.util.HashMap;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
//生成二维码
public class CreateQRCode {
public static void main(String[] args) {
//图片的宽度和高度
int width = 300;
int height = 300;
//图片的格式
String format = "png";
//内容,此处放你想要放的内容(例如网页链接),若是网址链接,要加上 "http://" 才能被微信识别,
//这里我放了一个自己写的获取IP地址和访问量的小demo
String content = "http://www.zclong.cn/IPCount/show.jsp";
//定义二维码的参数
HashMap hints = new HashMap();
//编码
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
//容错等级,与二维码存储的大小有关,一般选择M
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
//边距
hints.put(EncodeHintType.MARGIN, 2);
//生成二维码
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
//存放二维码路径
Path file = new File("F:/code/img.png").toPath();
MatrixToImageWriter.writeToPath(bitMatrix, format, file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 上述代码是用来创建二维码的,运行可得二维码
- 接下来我们创建一个类ReadQRCode来解析二维码
package cn.zclong.zxing; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.HashMap; import javax.imageio.ImageIO; import com.google.zxing.BinaryBitmap; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatReader; import com.google.zxing.NotFoundException; import com.google.zxing.Result; import com.google.zxing.client.j2se.BufferedImageLuminanceSource; import com.google.zxing.common.HybridBinarizer; //解析二维码 public class ReadQRCode { public static void main(String[] args) { try { MultiFormatReader multiFormatReader = new MultiFormatReader(); //二维码的存放位置 File file = new File("F:/code/img.png"); //创建一个图片缓冲区 BufferedImage image = ImageIO.read(file); //对图片进行解析 BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image))); //定义二维码的参数 HashMap hints = new HashMap(); //编码 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); //得到解析后的result Result result = multiFormatReader.decode(binaryBitmap, hints); System.out.println("解析结果:" + result.toString()); System.out.println("二维码格式类型·:" + result.getBarcodeFormat()); System.out.println("解析结果:" + result.getText()); } catch (NotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
- 编译运行得到结果如下:
解析结果:http://www.zclong.cn/IPCount/show.jsp
二维码格式类型:QR_CODE
解析结果:http://www.zclong.cn/IPCount/show.jsp
以上便是利用第三方jar包zxing来制作和解析二维码
三、接下来介绍利用javascript,如jquery.qrcode.js来生成二维码,这种方法比上述方法更为方便,快捷
1.首先先要下载jquery.min.js和jquery.qrcode.min.js
2.创建一个javaweb项目,引入上述的两个js
3.创建一个qrcode.jsp
4.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>生成二维码</title> <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery.min.js"></script> <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery.qrcode.min.js"></script> </head> <body> 生成二维码如下:<br> <div id="qrcode"></div> <script type="text/javascript"> jQuery('#qrcode').qrcode("http://www.zclong.cn/IPCount/show.jsp"); </script> </body> </html>
5.然后启动tomcat,运行该项目即可生成二维码,这种方法相对第一种方法而言更为快捷方便,而大多数我们也是使用这种方法来生成二维码
四、以上便是生成二维码的两种方式,大家可以去尝试一下制作自己的二维码,若想要制作个性的二维码,可以利用Bootstrap去设计logo,个性化图片等,这里就不一一介绍了,希望这篇文章对需要者有所帮助。
附上制作二维码所需要的资料:https://git.oschina.net/zclong/qrcode.git