1、使用 jquery.qrcode 生成二维码
jquery.qrcode 是依赖于jQuery,在前端生成二维码
1)使用时需要引入两个文件: jQuery 和 jquery.qrcode.min.js
2)页面中添加 div : <div id="qrcode"></div>
3)调用js方法生成即可:$('#qrcode').qrcode("http://www.baidu.com");
4)代码如下:
function createQRCode(){
$('#qrcode').qrcode("http://www.baidu.com");
}
2、使用google的zxing生成二维码
1)、代码地址:https://github.com/zxing/zxing/tree/zxing-3.0.0
2)、引入jar : core-3.0.0.jar / BufferedImageLuminanceSource / MatrixToImageConfig / MatrixToImageWriter
3)、生成解析代码如下
package com.base.pf.base.util;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import org.junit.Test;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.EncodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
/**
* @Description 普通二维码生成
* @author ZHEN.L
* @date 2016.10.10
*/
public class QRCodeByZXing {
// https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe49318eb604cf00b&redirect_uri=http://hichinamobile.xicp.net/security/wx/record/toAddPage.do&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
private static Map<String, String> url = new HashMap<String, String>();
private static final String qr = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe49318eb604cf00b&redirect_uri=${QR}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
static {
url.put("qr",
qr.replace("${QR}",
"http://hichinamobile.xicp.net/security/wx/record/toAddPage.do"));
}
/**
* 二维码的生成
*
*/
@Test
public static String createCode(String name) {
String path = "D:/tcjl/qrcode/"+name+".png";
String format = "png";// 二维码的图片格式
HashMap hints = new HashMap(); // 设置二维码的参数
// 内容所使用编码
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(url.get("qr"),
BarcodeFormat.QR_CODE, 300, 300, hints);
// 生成二维码
File file = new File(path);
MatrixToImageWriter.writeToFile(bitMatrix, format, file);
} catch (Exception e) {
e.printStackTrace();
}
return path;
}
/**
* 二维码的解析
*
* @param file
*/
public void parseCode(File file) {
try {
MultiFormatReader formatReader = new MultiFormatReader();
if (!file.exists()) {
return;
}
BufferedImage image = ImageIO.read(file);
LuminanceSource source = new BufferedImageLuminanceSource(image);
Binarizer binarizer = new HybridBinarizer(source);
BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
Map hints = new HashMap();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
Result result = formatReader.decode(binaryBitmap, hints);
System.out.println("解析结果 = " + result.toString());
System.out.println("二维码格式类型 = " + result.getBarcodeFormat());
System.out.println("二维码文本内容 = " + result.getText());
} catch (Exception e) {
e.printStackTrace();
}
}
}