引入jar包
<!-- 二维码生成包 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.2.0</version>
</dependency>
工具类
package com.xxx.util;
import com.google.zxing.*;
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;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Hashtable;
import java.util.Map;
/**
* 二维码生成工具类
*
*/
public class QrCodeUtil {
/**
* 生成二维码
* David
* @param url url 网址
* @param width 二维码宽度
* @param height 二维码高度
* @param imgPath 生成的二维码url: 路径+文件名
*/
public static void encode(String url, int width, int height, String imgPath) {
Map<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
// 指定纠错等级
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
// 指定编码格式
hints.put(EncodeHintType.CHARACTER_SET, "UTF8");
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, height, hints);
MatrixToImageWriter.writeToStream(bitMatrix, "png", new FileOutputStream(imgPath));
// MatrixToImageWriter.writeToStream(bitMatrix, "png", response.getOutputStream());// 输出图像
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 二维码解析
* @param imgPath 二维码图片 路径+文件名
* @return 解析后的二维码内容
*/
public static String decode(String imgPath) {
BufferedImage image = null;
Result result = null;
try {
image = ImageIO.read(new File(imgPath));
if (image == null) {
return "the decode image may be not exit";
}
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Map<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
hints.put(DecodeHintType.CHARACTER_SET, "UTF8");
result = new MultiFormatReader().decode(bitmap, hints);
return result.getText();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
// 测试代码
public static void main( String[] args ){
QrCodeUtil.encode("http://www.521show.com/love/7/", 500, 500, "C:\\Users\\10517\\Desktop\\desktop\\qret.png");
// System.out.println(QrCodeUtil.decode("D:\\David\\QrCode\\QrCode1.png"));
}
}

1007

被折叠的 条评论
为什么被折叠?



